Initial commit - LEGO Instructions Manager v1.5.0
This commit is contained in:
173
cleanup_folders.py
Normal file
173
cleanup_folders.py
Normal file
@@ -0,0 +1,173 @@
|
||||
"""
|
||||
Cleanup and Verification Script
|
||||
This script will:
|
||||
1. Check for duplicate upload folders
|
||||
2. Move files to correct location
|
||||
3. Clean up duplicate folders
|
||||
4. Verify everything is in the right place
|
||||
"""
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import glob
|
||||
|
||||
def cleanup_and_verify():
|
||||
"""Clean up duplicate folders and verify correct structure."""
|
||||
|
||||
print("="*70)
|
||||
print("LEGO Instructions Manager - Cleanup & Verification")
|
||||
print("="*70)
|
||||
print()
|
||||
|
||||
base_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# Correct location
|
||||
correct_uploads = os.path.join(base_dir, 'app', 'static', 'uploads')
|
||||
|
||||
# Duplicate location (the problem)
|
||||
duplicate_uploads = os.path.join(base_dir, 'app', 'app', 'static', 'uploads')
|
||||
|
||||
print("Checking for duplicate folders...")
|
||||
print(f"Correct location: {correct_uploads}")
|
||||
print(f"Duplicate location: {duplicate_uploads}")
|
||||
print()
|
||||
|
||||
# Check if duplicate exists
|
||||
if os.path.exists(duplicate_uploads):
|
||||
print("⚠️ DUPLICATE FOLDER FOUND!")
|
||||
print(f"Found: {duplicate_uploads}")
|
||||
print()
|
||||
|
||||
# Count files in duplicate
|
||||
covers_in_duplicate = os.path.join(duplicate_uploads, 'covers')
|
||||
if os.path.exists(covers_in_duplicate):
|
||||
file_count = 0
|
||||
for root, dirs, files in os.walk(covers_in_duplicate):
|
||||
file_count += len(files)
|
||||
|
||||
print(f"Files in duplicate location: {file_count}")
|
||||
|
||||
if file_count > 0:
|
||||
print()
|
||||
print("🔄 Moving files to correct location...")
|
||||
|
||||
# Ensure correct location exists
|
||||
os.makedirs(correct_uploads, exist_ok=True)
|
||||
correct_covers = os.path.join(correct_uploads, 'covers')
|
||||
os.makedirs(correct_covers, exist_ok=True)
|
||||
|
||||
# Move all set folders
|
||||
for set_folder in os.listdir(covers_in_duplicate):
|
||||
src_folder = os.path.join(covers_in_duplicate, set_folder)
|
||||
dst_folder = os.path.join(correct_covers, set_folder)
|
||||
|
||||
if os.path.isdir(src_folder):
|
||||
if os.path.exists(dst_folder):
|
||||
print(f" Merging: {set_folder}")
|
||||
# Merge folders
|
||||
for file in os.listdir(src_folder):
|
||||
src_file = os.path.join(src_folder, file)
|
||||
dst_file = os.path.join(dst_folder, file)
|
||||
if not os.path.exists(dst_file):
|
||||
shutil.copy2(src_file, dst_file)
|
||||
print(f" Moved: {file}")
|
||||
else:
|
||||
print(f" Moving: {set_folder}")
|
||||
shutil.copytree(src_folder, dst_folder)
|
||||
|
||||
print("✅ Files moved successfully!")
|
||||
|
||||
print()
|
||||
print("🗑️ Removing duplicate folder structure...")
|
||||
|
||||
# Remove the duplicate app/app folder
|
||||
duplicate_app_folder = os.path.join(base_dir, 'app', 'app')
|
||||
try:
|
||||
shutil.rmtree(duplicate_app_folder)
|
||||
print(f"✅ Removed: {duplicate_app_folder}")
|
||||
except Exception as e:
|
||||
print(f"⚠️ Could not remove: {e}")
|
||||
print(f" Please manually delete: {duplicate_app_folder}")
|
||||
else:
|
||||
print("✅ No duplicate folder found - structure is correct!")
|
||||
|
||||
print()
|
||||
print("="*70)
|
||||
print("Verifying correct structure...")
|
||||
print("="*70)
|
||||
print()
|
||||
|
||||
# Verify correct structure
|
||||
if os.path.exists(correct_uploads):
|
||||
print(f"✅ Uploads folder exists: {correct_uploads}")
|
||||
|
||||
# Check subdirectories
|
||||
covers = os.path.join(correct_uploads, 'covers')
|
||||
images = os.path.join(correct_uploads, 'images')
|
||||
pdfs = os.path.join(correct_uploads, 'pdfs')
|
||||
|
||||
for folder, name in [(covers, 'covers'), (images, 'images'), (pdfs, 'pdfs')]:
|
||||
if os.path.exists(folder):
|
||||
file_count = sum([len(files) for _, _, files in os.walk(folder)])
|
||||
print(f"✅ {name:8} folder exists - {file_count} file(s)")
|
||||
else:
|
||||
print(f"⚠️ {name:8} folder missing - creating...")
|
||||
os.makedirs(folder, exist_ok=True)
|
||||
print(f"✅ Created: {folder}")
|
||||
|
||||
# List cover images
|
||||
print()
|
||||
print("Cover images found:")
|
||||
covers_path = os.path.join(correct_uploads, 'covers')
|
||||
if os.path.exists(covers_path):
|
||||
set_folders = [f for f in os.listdir(covers_path) if os.path.isdir(os.path.join(covers_path, f))]
|
||||
if set_folders:
|
||||
for set_folder in sorted(set_folders):
|
||||
files = os.listdir(os.path.join(covers_path, set_folder))
|
||||
print(f" {set_folder}: {len(files)} image(s)")
|
||||
else:
|
||||
print(" No cover images uploaded yet")
|
||||
|
||||
else:
|
||||
print(f"❌ Uploads folder does NOT exist: {correct_uploads}")
|
||||
print("Creating it now...")
|
||||
os.makedirs(correct_uploads, exist_ok=True)
|
||||
os.makedirs(os.path.join(correct_uploads, 'covers'), exist_ok=True)
|
||||
os.makedirs(os.path.join(correct_uploads, 'images'), exist_ok=True)
|
||||
os.makedirs(os.path.join(correct_uploads, 'pdfs'), exist_ok=True)
|
||||
print("✅ Created upload folder structure")
|
||||
|
||||
print()
|
||||
print("="*70)
|
||||
print("Configuration Check")
|
||||
print("="*70)
|
||||
print()
|
||||
|
||||
# Check config.py
|
||||
config_path = os.path.join(base_dir, 'app', 'config.py')
|
||||
if os.path.exists(config_path):
|
||||
with open(config_path, 'r') as f:
|
||||
config_content = f.read()
|
||||
if "basedir, 'static', 'uploads'" in config_content:
|
||||
print("✅ config.py has correct UPLOAD_FOLDER path")
|
||||
elif "basedir, 'app', 'static', 'uploads'" in config_content:
|
||||
print("❌ config.py has INCORRECT path (includes 'app')")
|
||||
print(" Please update config.py:")
|
||||
print(" Change: os.path.join(basedir, 'app', 'static', 'uploads')")
|
||||
print(" To: os.path.join(basedir, 'static', 'uploads')")
|
||||
else:
|
||||
print("⚠️ Could not verify config.py UPLOAD_FOLDER")
|
||||
|
||||
print()
|
||||
print("="*70)
|
||||
print("✅ Cleanup and verification complete!")
|
||||
print("="*70)
|
||||
print()
|
||||
print("Next steps:")
|
||||
print("1. Restart Flask: python run.py")
|
||||
print("2. Test image uploads")
|
||||
print("3. Verify images display correctly")
|
||||
print()
|
||||
|
||||
if __name__ == "__main__":
|
||||
cleanup_and_verify()
|
||||
Reference in New Issue
Block a user