diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2026-09-30 00:25:28 +0200 |
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2026-09-30 00:25:28 +0200 |
| commit | 68a5f39211ebafec3ea97ad1fc558ca35ed2d5a5 (patch) | |
| tree | a35fea06507199dccba5e23fc62d64b40e91f98e | |
| parent | bbfd8ff542dae773ef4affa914c1862f06aaf455 (diff) | |
| download | fietsboek-68a5f39211ebafec3ea97ad1fc558ca35ed2d5a5.tar.gz fietsboek-68a5f39211ebafec3ea97ad1fc558ca35ed2d5a5.tar.bz2 fietsboek-68a5f39211ebafec3ea97ad1fc558ca35ed2d5a5.zip | |
detect climbs as part of upload
| -rw-r--r-- | fietsboek/views/upload.py | 21 |
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") |
