Spaces:
Running
Running
| #!/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() | |