geo-activity-playground 1.8.3__tar.gz → 1.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/PKG-INFO +1 -1
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/enrichment.py +6 -2
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/explorer/tile_visits.py +2 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/importers/activity_parsers.py +26 -3
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/importers/strava_api.py +4 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/upload_blueprint.py +15 -13
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/upload/index.html.j2 +1 -1
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/pyproject.toml +1 -1
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/LICENSE +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/__init__.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/__main__.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/README +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/env.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/script.py.mako +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/0f02b92c4f94_add_tag_color.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/38882503dc7c_add_tags_to_activities.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/451e7836b53d_add_square_planner_bookmark.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/63d3b7f6f93c_initial_version.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/85fe0348e8a2_add_time_series_uuid_field.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/93cc82ad1b60_add_parametricplotspec.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/ab83b9d23127_add_upstream_id.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/b03491c593f6_add_crop_indices.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/da2cba03b71d_add_photos.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/dc8073871da7_add_plotspec_group_by.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/e02e27876deb_add_square_planner_bookmark_name.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/f2f50843be2d_make_all_fields_in_activity_nullable.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/alembic/versions/script.py.mako +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/__init__.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/activities.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/config.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/coordinates.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/copernicus_dem.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/datamodel.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/export.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/heart_rate.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/meta_search.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/missing_values.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/parametric_plot.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/paths.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/photos.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/privacy_zones.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/raster_map.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/similarity.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/summary_stats.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/tasks.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/test_datamodel.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/test_meta_search.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/test_missing_values.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/test_pandas_timezone.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/test_summary_stats.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/test_tiles.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/test_time_zone_from_location.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/test_time_zone_import.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/test_timezone_sqlalchemy.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/tiles.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/core/time_conversion.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/explorer/__init__.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/explorer/grid_file.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/explorer/video.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/heatmap_video.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/importers/__init__.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/importers/csv_parser.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/importers/directory.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/importers/strava_checkout.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/importers/test_csv_parser.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/importers/test_directory.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/importers/test_strava_api.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/__init__.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/app.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/authenticator.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/__init__.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/activity_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/auth_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/calendar_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/eddington_blueprints.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/entry_views.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/equipment_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/explorer_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/export_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/hall_of_fame_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/heatmap_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/photo_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/plot_builder_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/search_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/settings_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/square_planner_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/summary_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/tile_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/blueprints/time_zone_fixer_blueprint.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/columns.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/flasher.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/plot_util.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/search_util.py +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/activity-trim.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/bootstrap/bootstrap-dark-mode.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/bootstrap/bootstrap.bundle.min.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/bootstrap/bootstrap.min.css +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/android-chrome-192x192.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/android-chrome-512x512.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/apple-touch-icon.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/browserconfig.xml +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/favicon-16x16.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/favicon-32x32.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/favicon-48x48.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/favicon.ico +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/favicon.svg +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/mstile-150x150.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/site.webmanifest +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/web-app-manifest-192x192.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/favicons/web-app-manifest-512x512.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/images/layers-2x.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/images/layers.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/images/marker-icon-2x.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/images/marker-icon.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/images/marker-shadow.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/Leaflet.fullscreen.min.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/MarkerCluster.Default.css +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/MarkerCluster.css +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/fullscreen.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/fullscreen@2x.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/images/layers-2x.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/images/layers.png +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/leaflet.css +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/leaflet.fullscreen.css +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/leaflet.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/leaflet/leaflet.markercluster.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/server-side-explorer.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/table-sort.min.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/vega/vega-embed@6.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/vega/vega-lite@4.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/static/vega/vega@5.js +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/activity/day.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/activity/edit.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/activity/lines.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/activity/name.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/activity/show.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/activity/trim.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/auth/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/bubble_chart/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/calendar/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/calendar/month.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/eddington/distance.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/eddington/elevation_gain.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/elevation_eddington/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/equipment/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/explorer/server-side.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/export/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/hall_of_fame/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/heatmap/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/home.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/page.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/photo/map.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/photo/new.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/plot-macros.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/plot_builder/edit.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/plot_builder/import-spec.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/plot_builder/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/search/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/search_form.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/admin-password.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/color-schemes.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/heart-rate.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/manage-equipments.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/manage-kinds.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/metadata-extraction.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/privacy-zones.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/segmentation.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/sharepic.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/strava.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/tags-edit.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/tags-list.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/tags-new.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/settings/tile-source.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/square_planner/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/summary/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/summary/vega-chart.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/time_zone_fixer/index.html.j2 +0 -0
- {geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/templates/upload/reload.html.j2 +0 -0
@@ -183,14 +183,18 @@ def enrichment_distance(
|
|
183
183
|
if "speed" not in time_series.columns:
|
184
184
|
time_series["speed"] = (
|
185
185
|
time_series["distance_km"].diff()
|
186
|
-
/
|
186
|
+
/ time_series["time"].diff().dt.total_seconds()
|
187
187
|
* 3600
|
188
188
|
)
|
189
|
+
# Division by zero causes infinity. We replace these with NaN and interpolate the values instead.
|
190
|
+
time_series["speed"] = time_series["speed"].replace([np.inf, -np.inf], np.nan)
|
191
|
+
time_series.interpolate(inplace=True)
|
192
|
+
|
189
193
|
changed = True
|
190
194
|
|
191
195
|
potential_jumps = (time_series["speed"] > 40) & (time_series["speed"].diff() > 10)
|
192
196
|
if np.any(potential_jumps):
|
193
|
-
time_series.replace(time_series.loc[~potential_jumps])
|
197
|
+
time_series.replace(time_series.loc[~potential_jumps], inplace=True)
|
194
198
|
changed = True
|
195
199
|
|
196
200
|
if "segment_id" not in time_series.columns:
|
@@ -240,6 +240,8 @@ def _process_activity(
|
|
240
240
|
zip(activity_tiles["tile_x"], activity_tiles["tile_y"]),
|
241
241
|
):
|
242
242
|
if activity.kind.consider_for_achievements:
|
243
|
+
if time is not None and time.tz is None:
|
244
|
+
time = time.tz_localize("UTC")
|
243
245
|
if tile not in tile_state["tile_visits"][zoom]:
|
244
246
|
new_tile_history_soa["activity_id"].append(activity_id)
|
245
247
|
new_tile_history_soa["time"].append(time)
|
@@ -202,9 +202,32 @@ def read_gpx_activity(path: pathlib.Path, open) -> pd.DataFrame:
|
|
202
202
|
time = dateutil.parser.parse(str(point.time))
|
203
203
|
else:
|
204
204
|
time = None
|
205
|
-
|
206
|
-
|
207
|
-
|
205
|
+
row = {
|
206
|
+
"time": time,
|
207
|
+
"latitude": point.latitude,
|
208
|
+
"longitude": point.longitude,
|
209
|
+
"elevation": point.elevation,
|
210
|
+
}
|
211
|
+
if point.extensions:
|
212
|
+
for ext in point.extensions:
|
213
|
+
if (
|
214
|
+
ext.tag
|
215
|
+
== "{http://www.garmin.com/xmlschemas/TrackPointExtension/v1}TrackPointExtension"
|
216
|
+
):
|
217
|
+
for datum in ext:
|
218
|
+
if (
|
219
|
+
datum.tag
|
220
|
+
== "{http://www.garmin.com/xmlschemas/TrackPointExtension/v1}hr"
|
221
|
+
):
|
222
|
+
row["heartrate"] = int(datum.text)
|
223
|
+
if (
|
224
|
+
datum.tag
|
225
|
+
== "{http://www.garmin.com/xmlschemas/TrackPointExtension/v1}cad"
|
226
|
+
):
|
227
|
+
row["cadence"] = int(datum.text)
|
228
|
+
|
229
|
+
points.append(row)
|
230
|
+
df = pd.DataFrame(points)
|
208
231
|
# Some files don't have elevation information. In these cases we remove the column.
|
209
232
|
if not df["elevation"].any():
|
210
233
|
del df["elevation"]
|
@@ -117,6 +117,9 @@ def try_import_strava(
|
|
117
117
|
for strava_activity in tqdm(
|
118
118
|
client.get_activities(after=get_after), desc="Downloading Strava activities"
|
119
119
|
):
|
120
|
+
logger.info(
|
121
|
+
f"Examining Strava activity with ID {strava_activity.id} and name '{strava_activity.name}' …"
|
122
|
+
)
|
120
123
|
if (
|
121
124
|
strava_end
|
122
125
|
and strava_activity.start_date is not None
|
@@ -195,6 +198,7 @@ def try_import_strava(
|
|
195
198
|
activity.moving_time = detailed_activity.moving_time
|
196
199
|
|
197
200
|
update_and_commit(activity, time_series, config)
|
201
|
+
logger.info(f"Added activity '{activity.name}' from Strava.")
|
198
202
|
compute_tile_visits_new(repository, tile_visit_accessor)
|
199
203
|
compute_tile_evolution(tile_visit_accessor.tile_state, config)
|
200
204
|
tile_visit_accessor.save()
|
@@ -8,6 +8,7 @@ from flask import flash
|
|
8
8
|
from flask import redirect
|
9
9
|
from flask import render_template
|
10
10
|
from flask import request
|
11
|
+
from flask import Response
|
11
12
|
from flask import url_for
|
12
13
|
|
13
14
|
from ...core.activities import ActivityRepository
|
@@ -59,8 +60,9 @@ def make_upload_blueprint(
|
|
59
60
|
if file.filename == "":
|
60
61
|
flash("No selected file", "warning")
|
61
62
|
return redirect("/upload")
|
62
|
-
|
63
|
+
for file in request.files.getlist("file"):
|
63
64
|
filename = file.filename
|
65
|
+
assert filename is not None
|
64
66
|
target_path = pathlib.Path(request.form["directory"]) / filename
|
65
67
|
assert target_path.suffix in [
|
66
68
|
".csv",
|
@@ -79,18 +81,18 @@ def make_upload_blueprint(
|
|
79
81
|
)
|
80
82
|
return redirect(url_for(".index"))
|
81
83
|
file.save(target_path)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
84
|
+
scan_for_activities(
|
85
|
+
repository,
|
86
|
+
tile_visit_accessor,
|
87
|
+
config,
|
88
|
+
skip_strava=True,
|
89
|
+
)
|
90
|
+
latest_activity = DB.session.scalar(
|
91
|
+
sqlalchemy.select(Activity).order_by(Activity.id.desc()).limit(1)
|
92
|
+
)
|
93
|
+
assert latest_activity is not None
|
94
|
+
flash(f"Activity was saved with ID {latest_activity.id}.", "success")
|
95
|
+
return redirect(f"/activity/{latest_activity.id}")
|
94
96
|
|
95
97
|
@blueprint.route("/refresh")
|
96
98
|
@needs_authentication(authenticator)
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<form method="post" enctype="multipart/form-data" action="{{ url_for('.receive') }}">
|
7
7
|
<div class="mb-3">
|
8
8
|
<label for="file1" class="form-label">Activity file</label>
|
9
|
-
<input type="file" name="file" id="file1" class="form-control">
|
9
|
+
<input type="file" name="file" id="file1" class="form-control" multiple>
|
10
10
|
</div>
|
11
11
|
<div class="mb-3">
|
12
12
|
<label for="directory" class="form-label">Target directory</label>
|
File without changes
|
{geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/__init__.py
RENAMED
File without changes
|
{geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/__main__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{geo_activity_playground-1.8.3 → geo_activity_playground-1.9.0}/geo_activity_playground/webui/app.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|