Promptaid-VIsion / py_backend /fix_image_counts.py
SCGR's picture
multi upload
351d460
#!/usr/bin/env python3
import sys
import os
sys.path.append('.')
from app.database import SessionLocal
from app import crud, models
def fix_image_counts():
"""Update image_count for all existing captions based on their linked images"""
db = SessionLocal()
try:
print("Starting image_count fix for existing multi-uploads...")
# Get all captions with their linked images
captions = crud.get_all_captions_with_images(db)
print(f"Found {len(captions)} captions to process")
updated_count = 0
skipped_count = 0
for caption in captions:
# Skip if image_count is already set correctly
if caption.image_count is not None and caption.image_count > 0:
if caption.image_count == len(caption.images):
skipped_count += 1
continue
# Calculate the correct image count
correct_image_count = len(caption.images)
if correct_image_count == 0:
print(f"Warning: Caption {caption.caption_id} has no linked images")
continue
# Update the image_count
old_count = caption.image_count
caption.image_count = correct_image_count
print(f"Updated caption {caption.caption_id}: {old_count} -> {correct_image_count} (title: '{caption.title}')")
updated_count += 1
# Commit all changes
db.commit()
print(f"\nDatabase update complete!")
print(f"Updated: {updated_count} captions")
print(f"Skipped: {skipped_count} captions (already correct)")
# Verify the changes
print("\nVerifying changes...")
captions_after = crud.get_all_captions_with_images(db)
multi_uploads = [c for c in captions_after if c.image_count and c.image_count > 1]
single_uploads = [c for c in captions_after if c.image_count == 1]
null_counts = [c for c in captions_after if c.image_count is None or c.image_count == 0]
print(f"Multi-uploads (image_count > 1): {len(multi_uploads)}")
print(f"Single uploads (image_count = 1): {len(single_uploads)}")
print(f"Captions with null/zero image_count: {len(null_counts)}")
if null_counts:
print("\nCaptions still with null/zero image_count:")
for c in null_counts[:5]: # Show first 5
print(f" - {c.caption_id}: {len(c.images)} linked images, image_count={c.image_count}")
except Exception as e:
print(f"Error: {e}")
import traceback
traceback.print_exc()
db.rollback()
finally:
db.close()
if __name__ == "__main__":
fix_image_counts()