aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2026-09-30 00:25:28 +0200
committerDaniel Schadt <kingdread@gmx.de>2026-09-30 00:25:28 +0200
commit68a5f39211ebafec3ea97ad1fc558ca35ed2d5a5 (patch)
treea35fea06507199dccba5e23fc62d64b40e91f98e
parentbbfd8ff542dae773ef4affa914c1862f06aaf455 (diff)
downloadfietsboek-68a5f39211ebafec3ea97ad1fc558ca35ed2d5a5.tar.gz
fietsboek-68a5f39211ebafec3ea97ad1fc558ca35ed2d5a5.tar.bz2
fietsboek-68a5f39211ebafec3ea97ad1fc558ca35ed2d5a5.zip
detect climbs as part of upload
-rw-r--r--fietsboek/views/upload.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/fietsboek/views/upload.py b/fietsboek/views/upload.py
index 7be5a42..278eee2 100644
--- a/fietsboek/views/upload.py
+++ b/fietsboek/views/upload.py
@@ -2,6 +2,7 @@
import datetime
import logging
+from threading import Thread
from pyramid.httpexceptions import HTTPBadRequest, HTTPFound
from pyramid.i18n import TranslationString as _
@@ -10,7 +11,7 @@ from pyramid.view import view_config
from sqlalchemy import select
from .. import actions, convert, models, transformers, util
-from ..models.track import TrackType, Visibility
+from ..models.track import Track, TrackType, Visibility
from ..views.tileproxy import ITileRequester
LOGGER = logging.getLogger(__name__)
@@ -179,7 +180,23 @@ def do_finish_upload(request):
if request.config.hittekaart_autogenerate:
request.redis.sadd("hittekaart:queue:high", request.identity.id)
- return HTTPFound(request.route_url("details", track_id=track.id))
+ track_id = track.id
+ request.tm.commit()
+ request.tm.begin()
+
+ loader: ITileRequester = request.registry.getUtility(ITileRequester)
+ layer = request.config.public_tile_layers()[0]
+ def _extract_climbs():
+ LOGGER.debug("Starting climb extraction for track %d", track_id)
+ session = request.registry["dbsession_factory"]()
+ track = session.get(Track, track_id)
+ with session:
+ actions.extract_climbs(session, track, loader, layer)
+ session.commit()
+ LOGGER.debug("Climb extraction done")
+ Thread(name=f"upload-{track_id}", target=_extract_climbs).start()
+
+ return HTTPFound(request.route_url("details", track_id=track_id))
@view_config(route_name="cancel-upload", permission="upload.finish", request_method="POST")