From 5f8f7acfe9238169c52fb8680e80d9ecf3ddeee6 Mon Sep 17 00:00:00 2001 From: dvirlabs Date: Wed, 13 May 2026 21:45:01 +0300 Subject: [PATCH] Try to fix --- backend/fix_missing_image.py | 120 +++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 backend/fix_missing_image.py diff --git a/backend/fix_missing_image.py b/backend/fix_missing_image.py new file mode 100644 index 0000000..0f15c8c --- /dev/null +++ b/backend/fix_missing_image.py @@ -0,0 +1,120 @@ +""" +Fix Missing WhatsApp Template Image +==================================== + +This script helps identify and fix the missing invitation image issue. +""" + +import sys +from pathlib import Path + +sys.path.insert(0, str(Path(__file__).parent)) + +from database import SessionLocal +from models import Event +from uuid import UUID +import os + +def main(): + db = SessionLocal() + + print("="*80) + print("WhatsApp Image URL Diagnostic") + print("="*80) + + # Check uploads directory + uploads_dir = Path(__file__).parent / "uploads" + print(f"\nUploads directory: {uploads_dir}") + print(f"Exists: {uploads_dir.exists()}") + + if uploads_dir.exists(): + files = list(uploads_dir.glob("*")) + print(f"\nFiles in uploads ({len(files)} total):") + for f in files: + size_kb = f.stat().st_size / 1024 + print(f" - {f.name} ({size_kb:.1f} KB)") + + # Check events with invitation images + print("\n" + "-"*80) + print("Events with invitation_image_url set:") + print("-"*80) + + events = db.query(Event).filter(Event.invitation_image_url.isnot(None)).all() + + if not events: + print("No events found with invitation images") + else: + for event in events: + print(f"\nEvent: {event.name}") + print(f" ID: {event.id}") + print(f" Image URL: {event.invitation_image_url}") + + # Check if file exists + if event.invitation_image_url: + # Extract filename from URL + if "/uploads/" in event.invitation_image_url: + filename = event.invitation_image_url.split("/uploads/")[-1] + file_path = uploads_dir / filename + exists = file_path.exists() if uploads_dir.exists() else False + status = "āœ… EXISTS" if exists else "āŒ MISSING" + print(f" File: {filename} - {status}") + + if not exists and uploads_dir.exists(): + # Suggest existing files + existing = list(uploads_dir.glob("*")) + if existing: + print(f"\n Available files you could use instead:") + for f in existing[:5]: # Show first 5 + print(f" - {f.name}") + + # Specific check for the problematic image + print("\n" + "="*80) + print("Checking Problematic Image") + print("="*80) + + problem_url = "https://api-invy.dvirlabs.com/uploads/1d32b5fbab0f494cae443b4188a83ca3.jpg" + problem_file = "1d32b5fbab0f494cae443b4188a83ca3.jpg" + problem_path = uploads_dir / problem_file + + print(f"\nURL: {problem_url}") + print(f"File: {problem_file}") + print(f"Path: {problem_path}") + print(f"Exists: {problem_path.exists()}") + + if not problem_path.exists(): + print("\nāŒ This file is MISSING - this is why WhatsApp messages fail!") + print("\nFix options:") + print("1. Upload this image file to the uploads folder") + print("2. Update your event to use a different image:") + + if uploads_dir.exists(): + existing = list(uploads_dir.glob("*.jpg")) + list(uploads_dir.glob("*.png")) + if existing: + suggested = existing[0] + suggested_url = f"https://api-invy.dvirlabs.com/uploads/{suggested.name}" + print(f"\n Suggested: {suggested_url}") + print(f"\n To update your event, set invitation_image_url to:") + print(f" {suggested_url}") + + db.close() + + print("\n" + "="*80) + print("Recommendation") + print("="*80) + print(""" +To fix WhatsApp message delivery: + +1. Either upload the missing image file: + 1d32b5fbab0f494cae443b4188a83ca3.jpg + +2. Or update your event's invitation_image_url to use an existing file + +3. Meta's server must be able to download the image at the URL you provide, + otherwise the message will not be delivered even though you get HTTP 200. + +4. Check webhook logs to see the actual delivery status. + """) + + +if __name__ == "__main__": + main()