aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fietsboek/views/edit.py77
1 files 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))