diff --git a/app/models.py b/app/models.py
index e284524..a8e332e 100644
--- a/app/models.py
+++ b/app/models.py
@@ -125,6 +125,13 @@ class GPXFile(db.Model):
size = db.Column(db.Integer, nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
+ # GPX Statistics
+ total_distance = db.Column(db.Float, default=0.0) # in kilometers
+ elevation_gain = db.Column(db.Float, default=0.0) # in meters
+ max_elevation = db.Column(db.Float, default=0.0) # in meters
+ min_elevation = db.Column(db.Float, default=0.0) # in meters
+ total_points = db.Column(db.Integer, default=0) # number of track points
+
# Foreign Keys
post_id = db.Column(db.Integer, db.ForeignKey('posts.id'), nullable=False)
diff --git a/app/routes/community.py b/app/routes/community.py
index db19184..d9afcae 100644
--- a/app/routes/community.py
+++ b/app/routes/community.py
@@ -296,6 +296,15 @@ def new_post():
post_id=post.id
)
db.session.add(gpx_file_record)
+ db.session.flush() # Get the GPX file ID
+
+ # Extract GPX statistics
+ from app.utils.gpx_processor import process_gpx_file
+ if process_gpx_file(gpx_file_record):
+ current_app.logger.info(f'GPX statistics extracted for: {result["filename"]}')
+ else:
+ current_app.logger.warning(f'Failed to extract GPX statistics for: {result["filename"]}')
+
current_app.logger.info(f'GPX file saved: {result["filename"]}')
except Exception as e:
current_app.logger.warning(f'Error processing GPX file: {str(e)}')
diff --git a/app/static/media/posts/post_7d1455f7_20250724/gpx/b0235e529e5340239dcae0baf73a2f79.gpx b/app/static/media/posts/post_7d1455f7_20250724/gpx/b0235e529e5340239dcae0baf73a2f79.gpx
new file mode 100644
index 0000000..916bb51
--- /dev/null
+++ b/app/static/media/posts/post_7d1455f7_20250724/gpx/b0235e529e5340239dcae0baf73a2f79.gpx
@@ -0,0 +1,12961 @@
+
+
Explore the full route
+