From f4b27f3400995ffabce02cfc01f6a02895ae66a4 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Mon, 29 Dec 2025 17:17:07 +0100 Subject: remove TrackDataDir context manager use in edit --- fietsboek/views/edit.py | 77 ++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/fietsboek/views/edit.py b/fietsboek/views/edit.py index d5e3a92..2b559d4 100644 --- a/fietsboek/views/edit.py +++ b/fietsboek/views/edit.py @@ -84,46 +84,45 @@ def do_edit(request): data: TrackDataDir = request.data_manager.open(track.id) tz_offset = datetime.timedelta(minutes=int(request.params["date-tz"])) date = datetime.datetime.fromisoformat(request.params["date"]) - with data, data.lock(): - redo_cache = False + redo_cache = False + try: + gpx_bytes = request.POST["gpx"].file.read() + except AttributeError: + pass + else: + LOGGER.info("Setting new track for %s", track.id) try: - gpx_bytes = request.POST["gpx"].file.read() - except AttributeError: - pass - else: - LOGGER.info("Setting new track for %s", track.id) - try: - new_track = convert.smart_convert(gpx_bytes) - except convert.ConversionError as exc: - request.session.flash(request.localizer.translate(_("flash.invalid_file"))) - LOGGER.info("Could not parse gpx: %s", exc) - return HTTPFound(request.route_url("edit", track_id=track.id)) - data.compress_backup(gpx_bytes) - track.fast_set_path(new_track.path()) - track.transformers = [] - redo_cache = True - - track.date = date.replace(tzinfo=datetime.timezone(tz_offset)) - - track.tagged_people = tagged_people - track.title = request.params["title"] - track.visibility = Visibility[request.params["visibility"]] - track.type = TrackType[request.params["type"]] - track.description = request.params["description"] - track.badges = badges - tags = request.params.getall("tag[]") - track.sync_tags(tags) - - actions.edit_images(request, request.context, manager=data) - actions.execute_transformers(request, request.context) - - # actions.execute_transformers automatically rebuilds the cache, so we only need to do - # this if execute_transformers didn't do it - if redo_cache: - LOGGER.info("New file detected, rebuilding cache for %s", track.id) - track.cache = None - track.ensure_cache() - request.dbsession.add(track.cache) + new_track = convert.smart_convert(gpx_bytes) + except convert.ConversionError as exc: + request.session.flash(request.localizer.translate(_("flash.invalid_file"))) + LOGGER.info("Could not parse gpx: %s", exc) + return HTTPFound(request.route_url("edit", track_id=track.id)) + data.compress_backup(gpx_bytes) + track.fast_set_path(new_track.path()) + track.transformers = [] + redo_cache = True + + track.date = date.replace(tzinfo=datetime.timezone(tz_offset)) + + track.tagged_people = tagged_people + track.title = request.params["title"] + track.visibility = Visibility[request.params["visibility"]] + track.type = TrackType[request.params["type"]] + track.description = request.params["description"] + track.badges = badges + tags = request.params.getall("tag[]") + track.sync_tags(tags) + + actions.edit_images(request, request.context, manager=data) + actions.execute_transformers(request, request.context) + + # actions.execute_transformers automatically rebuilds the cache, so we only need to do + # this if execute_transformers didn't do it + if redo_cache: + LOGGER.info("New file detected, rebuilding cache for %s", track.id) + track.cache = None + track.ensure_cache() + request.dbsession.add(track.cache) return HTTPFound(request.route_url("details", track_id=track.id)) -- cgit v1.2.3