martin-ueding / geo-activity-playground

Data analysis and visualization based on GPS tracked outdoor activities.
https://martin-ueding.github.io/geo-activity-playground/
MIT License
38 stars 14 forks source link

Explorer Tiles Export funktioniert nicht "AttributeError: 'TileVisitAccessor' object has no attribute 'histories'" #167

Closed beautiful-orca closed 1 month ago

beautiful-orca commented 1 month ago

Software: Docker container geo-activity-playground v0.28.0 Verbunden über Tailscale container, reverse proxy auf http://127.0.0.1:5000 Brave Browser v1.70.119

Explorer tiles (Zoom 17 oder 14) im webui: https://geo-activity.tailnet.ts.net/explorer/17

Click auf eine Option des "Download tiles in visible area": <a href="#" onclick="downloadAs('missing.gpx')" "="">Missing as GPX</a>

Aufgerufene Seite: https://geo-activity.tailnet.ts.net/explorer/17/51.45331160283917/6.83126449584961/51.41050308551253/6.720027923583984/missing.gpx

Das gpx wird nicht heruntergeladen, die Seite zeigt stattdessen:

Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

docker logs:

...
2024-09-29 20:55:54 werkzeug INFO 127.0.0.1 - - [29/Sep/2024 20:55:54] "GET /tile/grayscale/14/8497/5455.png HTTP/1.1" 200 -
# click auf export

2024-09-29 20:55:59 geo_activity_playground.webui.app ERROR Exception on /explorer/17/51.45331160283917/6.83126449584961/51.41050308551253/6.720027923583984/missing.gpx [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/geo_activity_playground/webui/explorer/blueprint.py", line 54, in missing
    explorer_controller.export_missing_tiles(
  File "/app/geo_activity_playground/webui/explorer/controller.py", line 98, in export_missing_tiles
    tile_histories = self._tile_visit_accessor.histories
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'TileVisitAccessor' object has no attribute 'histories'
2024-09-29 20:55:59 werkzeug INFO 127.0.0.1 - - [29/Sep/2024 20:55:59] "GET /explorer/17/51.45331160283917/6.83126449584961/51.41050308551253/6.720027923583984/missing.gpx HTTP/1.1" 500 -
beautiful-orca commented 1 month ago

Export aus dem Square Planner funktioniert. Allerdings wird die gpx Datei mit der Endung .xml heruntergeladen, was OsmAnd nicht als Track akzeptiert.

martin-ueding commented 1 month ago

Das erste habe ich repariert. Das mit dem .xml muss in deinem Browser passieren, wahrscheinlich wegen MIME-Type application/xml. Bei mir mit Firefox unter Linux wird das brav als .gpx heruntergeladen.

beautiful-orca commented 1 month ago

Zu 1: Vielen Dank für den fix. Die Exports funktionieren.

Zu 2: Mit LibreWolf und Brave auf Linux ist es kein Problem die Datei als .gpx herunterzuladen. Auf meinem Android nutze ich Iceraven: 2.24.0 / Fenix: 131.0 (Firefox Fork), der nur .xml daraus liest. Mulch (Chromium) lädt .gpx ohne Probleme. Es ist also ein Problem explizit von Firefox/Firefox-basierten Browsern auf Android, dass den MIME-Typ nichtrichtig liest.

Mozilla Firefox und Mozilla Fennec haben das selbe Problem, also werde ich dort nach Rat suchen.

beautiful-orca commented 1 month ago

Ich habe externe Download-Manager aktiviert, funktioniert und ist weniger nervig. Allerdings habe ich auch über Mulch geo-activity-playground als Web-App installiert.