diff options
| -rw-r--r-- | fietsboek/views/browse.py | 12 |
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() |
