Critical Fixes: 🗺️ GPX Statistics Processing: - Fixed Docker volume mapping from ./static/media to ./app/static/media - GPX files now properly accessible in container for statistics calculation - GPS route statistics (distance, elevation, track points) now display correctly - Added fix_gpx_statistics.py utility script for reprocessing existing GPX files 🐛 Template Fixes: - Fixed CSRF token undefined error in post_detail.html template - Resolved 500 errors when accessing community post pages - Template now uses form.csrf_token instead of csrf_token() function �� Docker Improvements: - Corrected volume mounting to ensure GPX file persistence - Fixed path resolution for media files in containerized environment - New posts will now properly save and process GPX files ✅ Verified Functionality: - Community post pages load successfully (200 OK) - GPS statistics display correctly (50.1 km distance, 2231 track points) - Future posts will automatically calculate and display GPX statistics - Docker container properly syncs with host filesystem This update ensures the motorcycle adventure platform's GPS tracking and route statistics work reliably in production.
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Script to reprocess all GPX files and update their statistics in the database
|
|
"""
|
|
|
|
from app import create_app, db
|
|
from app.models import GPXFile
|
|
from app.utils.gpx_processor import process_gpx_file
|
|
import os
|
|
|
|
def fix_gpx_statistics():
|
|
"""Reprocess all GPX files to update their statistics"""
|
|
app = create_app()
|
|
|
|
with app.app_context():
|
|
gpx_files = GPXFile.query.all()
|
|
|
|
print(f"Found {len(gpx_files)} GPX files to process...")
|
|
|
|
updated_count = 0
|
|
for gpx_file in gpx_files:
|
|
print(f"\nProcessing: {gpx_file.filename}")
|
|
print(f"Post: {gpx_file.post.title}")
|
|
print(f"Media folder: {gpx_file.post.media_folder}")
|
|
|
|
# Try to process the file
|
|
if process_gpx_file(gpx_file):
|
|
print(f"✓ Updated - Distance: {gpx_file.total_distance}km, "
|
|
f"Elevation: {gpx_file.elevation_gain}m, "
|
|
f"Points: {gpx_file.total_points}")
|
|
updated_count += 1
|
|
else:
|
|
print(f"✗ Failed to process {gpx_file.filename}")
|
|
|
|
# Commit all changes
|
|
db.session.commit()
|
|
|
|
print(f"\n=== Summary ===")
|
|
print(f"Total GPX files: {len(gpx_files)}")
|
|
print(f"Successfully updated: {updated_count}")
|
|
print(f"Failed: {len(gpx_files) - updated_count}")
|
|
|
|
if __name__ == "__main__":
|
|
fix_gpx_statistics()
|