aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fietsboek/views/browse.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/fietsboek/views/browse.py b/fietsboek/views/browse.py
index a01c015..c024828 100644
--- a/fietsboek/views/browse.py
+++ b/fietsboek/views/browse.py
@@ -534,12 +534,18 @@ def archive(request: Request) -> Response:
if not track.is_visible_to(request.identity):
return HTTPForbidden()
+ # Since we stream the data, we need to ensure it's loaded before we close
+ # the session
+ for track in tracks:
+ request.dbsession.refresh(track, ["points", "waypoints"])
+ request.dbsession.expunge(track)
+
def generate():
stream = Stream()
with ZipFile(stream, "w", ZIP_DEFLATED) as zipfile: # type: ignore
- for track_id in track_ids:
- data = request.data_manager.open(track_id).decompress_gpx()
- zipfile.writestr(f"track_{track_id}.gpx", data)
+ for track in tracks:
+ data = track.gpx_xml()
+ zipfile.writestr(f"track_{track.id}.gpx", data)
yield stream.readall()
yield stream.readall()