geo-activity-playground 0.43.3__tar.gz → 0.44.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-0.43.3 → geo_activity_playground-0.44.0}/PKG-INFO +1 -1
- geo_activity_playground-0.44.0/geo_activity_playground/alembic/versions/0f02b92c4f94_add_tag_color.py +28 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/datamodel.py +13 -2
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/enrichment.py +2 -2
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/paths.py +1 -1
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/activity_blueprint.py +22 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/settings_blueprint.py +19 -2
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/activity/show.html.j2 +6 -2
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/page.html.j2 +4 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/search_form.html.j2 +1 -1
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/tags-edit.html.j2 +5 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/tags-list.html.j2 +1 -1
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/pyproject.toml +1 -1
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/LICENSE +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/__init__.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/__main__.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/README +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/env.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/script.py.mako +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/versions/38882503dc7c_add_tags_to_activities.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/versions/451e7836b53d_add_square_planner_bookmark.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/versions/63d3b7f6f93c_initial_version.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/versions/93cc82ad1b60_add_parametricplotspec.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/versions/ab83b9d23127_add_upstream_id.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/versions/b03491c593f6_add_crop_indices.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/versions/da2cba03b71d_add_photos.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/versions/e02e27876deb_add_square_planner_bookmark_name.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/alembic/versions/script.py.mako +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/__init__.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/activities.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/config.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/coordinates.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/heart_rate.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/meta_search.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/missing_values.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/parametric_plot.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/privacy_zones.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/raster_map.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/similarity.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/summary_stats.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/tasks.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/test_datamodel.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/test_meta_search.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/test_missing_values.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/test_summary_stats.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/test_tiles.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/test_time_conversion.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/tiles.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/core/time_conversion.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/explorer/__init__.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/explorer/grid_file.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/explorer/tile_visits.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/explorer/video.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/heatmap_video.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/importers/__init__.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/importers/activity_parsers.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/importers/csv_parser.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/importers/directory.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/importers/strava_api.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/importers/strava_checkout.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/importers/test_csv_parser.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/importers/test_directory.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/importers/test_strava_api.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/__init__.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/app.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/authenticator.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/__init__.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/auth_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/calendar_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/eddington_blueprints.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/entry_views.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/equipment_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/explorer_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/heatmap_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/photo_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/plot_builder_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/search_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/square_planner_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/summary_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/tile_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/blueprints/upload_blueprint.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/columns.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/flasher.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/plot_util.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/search_util.py +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/Leaflet.fullscreen.min.js +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/MarkerCluster.Default.css +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/MarkerCluster.css +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/android-chrome-192x192.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/android-chrome-512x512.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/apple-touch-icon.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/bootstrap-dark-mode.js +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/bootstrap.bundle.min.js +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/bootstrap.min.css +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/browserconfig.xml +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/favicon-16x16.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/favicon-32x32.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/favicon-48x48.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/favicon.ico +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/favicon.svg +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/fullscreen.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/fullscreen@2x.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/images/layers-2x.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/images/layers.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/images/marker-icon-2x.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/images/marker-icon.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/images/marker-shadow.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/leaflet.css +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/leaflet.fullscreen.css +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/leaflet.js +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/leaflet.markercluster.js +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/mstile-150x150.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/site.webmanifest +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/table-sort.min.js +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/vega-embed@6 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/vega-lite@4 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/vega@5 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/web-app-manifest-192x192.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/static/web-app-manifest-512x512.png +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/activity/day.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/activity/edit.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/activity/lines.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/activity/name.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/activity/trim.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/auth/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/bubble_chart/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/calendar/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/calendar/month.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/eddington/distance.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/eddington/elevation_gain.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/elevation_eddington/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/equipment/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/explorer/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/explorer/server-side.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/heatmap/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/home.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/photo/map.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/photo/new.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/plot_builder/edit.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/plot_builder/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/search/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/admin-password.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/color-schemes.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/heart-rate.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/manage-equipments.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/manage-kinds.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/metadata-extraction.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/privacy-zones.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/segmentation.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/sharepic.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/strava.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/settings/tags-new.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/square_planner/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/summary/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/upload/index.html.j2 +0 -0
- {geo_activity_playground-0.43.3 → geo_activity_playground-0.44.0}/geo_activity_playground/webui/templates/upload/reload.html.j2 +0 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
from typing import Sequence
|
2
|
+
from typing import Union
|
3
|
+
|
4
|
+
import sqlalchemy as sa
|
5
|
+
from alembic import op
|
6
|
+
|
7
|
+
|
8
|
+
# revision identifiers, used by Alembic.
|
9
|
+
revision: str = "0f02b92c4f94"
|
10
|
+
down_revision: Union[str, None] = "da2cba03b71d"
|
11
|
+
branch_labels: Union[str, Sequence[str], None] = None
|
12
|
+
depends_on: Union[str, Sequence[str], None] = None
|
13
|
+
|
14
|
+
|
15
|
+
def upgrade() -> None:
|
16
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
17
|
+
with op.batch_alter_table("tags", schema=None) as batch_op:
|
18
|
+
batch_op.add_column(sa.Column("color", sa.String(), nullable=True))
|
19
|
+
|
20
|
+
# ### end Alembic commands ###
|
21
|
+
|
22
|
+
|
23
|
+
def downgrade() -> None:
|
24
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
25
|
+
with op.batch_alter_table("tags", schema=None) as batch_op:
|
26
|
+
batch_op.drop_column("color")
|
27
|
+
|
28
|
+
# ### end Alembic commands ###
|
@@ -21,7 +21,9 @@ from sqlalchemy.orm import mapped_column
|
|
21
21
|
from sqlalchemy.orm import relationship
|
22
22
|
|
23
23
|
from .config import Config
|
24
|
-
from .paths import
|
24
|
+
from .paths import activity_extracted_meta_dir
|
25
|
+
from .paths import activity_extracted_time_series_dir
|
26
|
+
from .paths import TIME_SERIES_DIR
|
25
27
|
|
26
28
|
|
27
29
|
logger = logging.getLogger(__name__)
|
@@ -141,7 +143,7 @@ class Activity(DB.Model):
|
|
141
143
|
|
142
144
|
@property
|
143
145
|
def raw_time_series(self) -> pd.DataFrame:
|
144
|
-
path =
|
146
|
+
path = TIME_SERIES_DIR() / f"{self.id}.parquet"
|
145
147
|
try:
|
146
148
|
time_series = pd.read_parquet(path)
|
147
149
|
if "altitude" in time_series.columns:
|
@@ -160,6 +162,14 @@ class Activity(DB.Model):
|
|
160
162
|
else:
|
161
163
|
return self.raw_time_series
|
162
164
|
|
165
|
+
def delete_data(self) -> None:
|
166
|
+
for path in [
|
167
|
+
TIME_SERIES_DIR() / f"{self.id}.parquet",
|
168
|
+
activity_extracted_meta_dir() / f"{self.upstream_id}.pickle",
|
169
|
+
activity_extracted_time_series_dir() / f"{self.upstream_id}.pickle",
|
170
|
+
]:
|
171
|
+
path.unlink(missing_ok=True)
|
172
|
+
|
163
173
|
|
164
174
|
class Tag(DB.Model):
|
165
175
|
__tablename__ = "tags"
|
@@ -167,6 +177,7 @@ class Tag(DB.Model):
|
|
167
177
|
|
168
178
|
id: Mapped[int] = mapped_column(primary_key=True)
|
169
179
|
tag: Mapped[str] = mapped_column(String, unique=True)
|
180
|
+
color: Mapped[str] = mapped_column(String, nullable=True)
|
170
181
|
|
171
182
|
activities: Mapped[list[Activity]] = relationship(
|
172
183
|
secondary=activity_tag_association_table, back_populates="tags"
|
@@ -18,7 +18,7 @@ from .datamodel import get_or_make_kind
|
|
18
18
|
from .missing_values import some
|
19
19
|
from .paths import activity_extracted_meta_dir
|
20
20
|
from .paths import activity_extracted_time_series_dir
|
21
|
-
from .paths import
|
21
|
+
from .paths import TIME_SERIES_DIR
|
22
22
|
from .tiles import compute_tile_float
|
23
23
|
from .time_conversion import convert_to_datetime_ns
|
24
24
|
|
@@ -101,7 +101,7 @@ def populate_database_from_extracted(config: Config) -> None:
|
|
101
101
|
)
|
102
102
|
raise
|
103
103
|
|
104
|
-
enriched_time_series_path =
|
104
|
+
enriched_time_series_path = TIME_SERIES_DIR() / f"{activity.id}.parquet"
|
105
105
|
time_series.to_parquet(enriched_time_series_path)
|
106
106
|
|
107
107
|
|
@@ -65,7 +65,7 @@ activity_enriched_time_series_dir = dir_wrapper(_activity_enriched_time_series_d
|
|
65
65
|
tiles_per_time_series = dir_wrapper(_tiles_per_time_series)
|
66
66
|
strava_api_dir = dir_wrapper(_strava_api_dir)
|
67
67
|
activity_meta_override_dir = dir_wrapper(_activity_meta_override_dir)
|
68
|
-
|
68
|
+
TIME_SERIES_DIR = dir_wrapper(_time_series_dir)
|
69
69
|
PHOTOS_DIR = dir_wrapper(_photos_dir)
|
70
70
|
|
71
71
|
activities_file = file_wrapper(_activities_file)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import datetime
|
2
2
|
import io
|
3
3
|
import logging
|
4
|
+
import pathlib
|
4
5
|
import re
|
5
6
|
from typing import Optional
|
6
7
|
|
@@ -431,6 +432,27 @@ def make_activity_blueprint(
|
|
431
432
|
color_line_geojson=geojson.dumps(fc),
|
432
433
|
)
|
433
434
|
|
435
|
+
@blueprint.route("/delete/<id>")
|
436
|
+
@needs_authentication(authenticator)
|
437
|
+
def delete(id: int):
|
438
|
+
activity = DB.session.get_one(Activity, id)
|
439
|
+
activity.delete_data()
|
440
|
+
DB.session.delete(activity)
|
441
|
+
DB.session.commit()
|
442
|
+
return redirect(url_for("index"))
|
443
|
+
|
444
|
+
@blueprint.route("/download-original/<id>")
|
445
|
+
@needs_authentication(authenticator)
|
446
|
+
def download_original(id: int):
|
447
|
+
activity = DB.session.get_one(Activity, id)
|
448
|
+
path = pathlib.Path(activity.path)
|
449
|
+
with open(path) as f:
|
450
|
+
return Response(
|
451
|
+
f.read(),
|
452
|
+
mimetype="application/octet-stream",
|
453
|
+
headers={"Content-disposition": f'attachment; filename="{path.name}"'},
|
454
|
+
)
|
455
|
+
|
434
456
|
return blueprint
|
435
457
|
|
436
458
|
|
@@ -13,14 +13,19 @@ from flask import render_template
|
|
13
13
|
from flask import request
|
14
14
|
from flask import Response
|
15
15
|
from flask import url_for
|
16
|
+
from tqdm import tqdm
|
16
17
|
|
17
18
|
from ...core.config import ConfigAccessor
|
19
|
+
from ...core.datamodel import Activity
|
18
20
|
from ...core.datamodel import DB
|
19
21
|
from ...core.datamodel import Equipment
|
20
22
|
from ...core.datamodel import Kind
|
21
23
|
from ...core.datamodel import Tag
|
24
|
+
from ...core.enrichment import _embellish_single_time_series
|
25
|
+
from ...core.enrichment import update_via_time_series
|
22
26
|
from ...core.heart_rate import HeartRateZoneComputer
|
23
27
|
from ...core.paths import _activity_enriched_dir
|
28
|
+
from ...core.paths import TIME_SERIES_DIR
|
24
29
|
from ..authenticator import Authenticator
|
25
30
|
from ..authenticator import needs_authentication
|
26
31
|
from ..flasher import Flasher
|
@@ -348,8 +353,19 @@ def make_settings_blueprint(
|
|
348
353
|
config_accessor().time_diff_threshold_seconds = threshold
|
349
354
|
config_accessor.save()
|
350
355
|
flash(f"Threshold set to {threshold}.", category="success")
|
351
|
-
|
352
|
-
|
356
|
+
for activity in tqdm(
|
357
|
+
DB.session.scalars(sqlalchemy.select(Activity)).all(),
|
358
|
+
desc="Recomputing segments",
|
359
|
+
):
|
360
|
+
time_series = _embellish_single_time_series(
|
361
|
+
activity.raw_time_series,
|
362
|
+
None,
|
363
|
+
threshold,
|
364
|
+
)
|
365
|
+
update_via_time_series(activity, time_series)
|
366
|
+
enriched_time_series_path = TIME_SERIES_DIR() / f"{activity.id}.parquet"
|
367
|
+
time_series.to_parquet(enriched_time_series_path)
|
368
|
+
DB.session.commit()
|
353
369
|
return render_template(
|
354
370
|
"settings/segmentation.html.j2",
|
355
371
|
threshold=config_accessor().time_diff_threshold_seconds,
|
@@ -424,6 +440,7 @@ def make_settings_blueprint(
|
|
424
440
|
tag = DB.session.get_one(Tag, id)
|
425
441
|
if request.method == "POST":
|
426
442
|
tag.tag = request.form["tag"]
|
443
|
+
tag.color = request.form["color"]
|
427
444
|
DB.session.commit()
|
428
445
|
return redirect(url_for(".tags_list"))
|
429
446
|
else:
|
@@ -24,7 +24,7 @@
|
|
24
24
|
<dt>Tags</dt>
|
25
25
|
<dd>
|
26
26
|
{% for tag in activity.tags %}
|
27
|
-
|
27
|
+
{{ activity_tag(tag) }}
|
28
28
|
{% endfor %}
|
29
29
|
</dd>
|
30
30
|
{% endif %}
|
@@ -75,12 +75,16 @@
|
|
75
75
|
|
76
76
|
<dt>ID</dt>
|
77
77
|
<dd>{{ activity.id }}</dd>
|
78
|
+
<dt>Upstream ID</dt>
|
79
|
+
<dd>{{ activity.upstream_id }}</dd>
|
78
80
|
<dt>Source path</dt>
|
79
|
-
<dd>{{ activity.path }}</dd>
|
81
|
+
<dd><a href="{{ url_for('.download_original', id=activity.id) }}">{{ activity.path }}</a></dd>
|
80
82
|
</dl>
|
81
83
|
|
82
84
|
<a href="{{ url_for('.edit', id=activity['id']) }}" class="btn btn-secondary btn-small">Edit</a>
|
83
85
|
<a href="{{ url_for('.trim', id=activity['id']) }}" class="btn btn-secondary btn-small">Trim</a>
|
86
|
+
<a class="btn btn-small btn-danger" href="{{ url_for('.delete', id=activity.id) }}"
|
87
|
+
onclick="if(!confirm('Are you sure to Delete This?')){ event.preventDefault() }">Delete</a>
|
84
88
|
</div>
|
85
89
|
<div class="col-sm-12 col-md-8">
|
86
90
|
<div id="activity-map" style="height: 500px;" class="mb-3"></div>
|
@@ -200,6 +200,10 @@
|
|
200
200
|
</script>
|
201
201
|
{% endmacro %}
|
202
202
|
|
203
|
+
{% macro activity_tag(tag) %}
|
204
|
+
<span class="badge" style="background-color: {{ tag.color or '#0d6efd' }}">{{ tag.tag }}</span>
|
205
|
+
{% endmacro %}
|
206
|
+
|
203
207
|
{% with messages = get_flashed_messages(with_categories=true) %}
|
204
208
|
{% if messages %}
|
205
209
|
{% for category, message in messages %}
|
@@ -10,6 +10,11 @@
|
|
10
10
|
<input type="text" class="form-control" id="tag" name="tag" value="{{ tag.tag }}" />
|
11
11
|
</div>
|
12
12
|
|
13
|
+
<div class="mb-3">
|
14
|
+
<label for="color" class="form-label">Color</label>
|
15
|
+
<input type="color" class="form-control" id="color" name="color" value="{{ tag.color or '#0d6efd' }}" />
|
16
|
+
</div>
|
17
|
+
|
13
18
|
<button type="submit" class="btn btn-primary">Save</button>
|
14
19
|
</form>
|
15
20
|
|
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
|
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
|