Fix: Clean up map_iframe_single.html, remove debug overlay, ensure clean map rendering.
This commit is contained in:
103
migrations/create_map_routes.py
Normal file
103
migrations/create_map_routes.py
Normal file
@@ -0,0 +1,103 @@
|
||||
"""
|
||||
Database migration to add MapRoute table for efficient map loading
|
||||
Run this script to create the new table structure
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
from flask import Flask
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
|
||||
# Add the project root to Python path
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from app import create_app, db
|
||||
|
||||
def create_map_route_table():
|
||||
"""Create the MapRoute table"""
|
||||
|
||||
app = create_app()
|
||||
|
||||
with app.app_context():
|
||||
try:
|
||||
# Create the MapRoute table
|
||||
db.create_all()
|
||||
print("✅ MapRoute table created successfully!")
|
||||
|
||||
# Show current tables
|
||||
inspector = db.inspect(db.engine)
|
||||
tables = inspector.get_table_names()
|
||||
print(f"Current tables: {', '.join(tables)}")
|
||||
|
||||
if 'map_routes' in tables:
|
||||
print("✅ map_routes table confirmed in database")
|
||||
else:
|
||||
print("❌ map_routes table not found")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error creating MapRoute table: {e}")
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def populate_existing_routes():
|
||||
"""Process existing published posts with GPX files to create map routes"""
|
||||
|
||||
app = create_app()
|
||||
|
||||
with app.app_context():
|
||||
try:
|
||||
from app.models import Post, GPXFile, MapRoute
|
||||
from app.utils.gpx_processor import create_map_route_from_gpx
|
||||
|
||||
# Find published posts with GPX files that don't have map routes yet
|
||||
posts_with_gpx = db.session.query(Post).join(GPXFile).filter(
|
||||
Post.published == True
|
||||
).distinct().all()
|
||||
|
||||
print(f"Found {len(posts_with_gpx)} published posts with GPX files")
|
||||
|
||||
processed = 0
|
||||
errors = 0
|
||||
|
||||
for post in posts_with_gpx:
|
||||
# Check if map route already exists
|
||||
existing_route = MapRoute.query.filter_by(post_id=post.id).first()
|
||||
if existing_route:
|
||||
print(f"⏭️ Post {post.id} already has a map route, skipping")
|
||||
continue
|
||||
|
||||
# Get the first GPX file for this post
|
||||
gpx_file = GPXFile.query.filter_by(post_id=post.id).first()
|
||||
if gpx_file:
|
||||
print(f"🔄 Processing post {post.id}: {post.title}")
|
||||
success = create_map_route_from_gpx(gpx_file.id)
|
||||
if success:
|
||||
processed += 1
|
||||
print(f"✅ Created map route for post {post.id}")
|
||||
else:
|
||||
errors += 1
|
||||
print(f"❌ Failed to create map route for post {post.id}")
|
||||
else:
|
||||
print(f"⚠️ No GPX file found for post {post.id}")
|
||||
|
||||
print(f"\n📊 Summary:")
|
||||
print(f"- Processed: {processed}")
|
||||
print(f"- Errors: {errors}")
|
||||
print(f"- Total posts with GPX: {len(posts_with_gpx)}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error populating existing routes: {e}")
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("🚀 Creating MapRoute table and processing existing data...")
|
||||
|
||||
# Create the table
|
||||
if create_map_route_table():
|
||||
print("\n🔄 Processing existing published posts with GPX files...")
|
||||
populate_existing_routes()
|
||||
|
||||
print("\n✅ Migration completed!")
|
||||
Reference in New Issue
Block a user