geo-activity-playground 0.43.0__tar.gz → 0.43.2__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.
Files changed (157) hide show
  1. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/PKG-INFO +1 -1
  2. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/missing_values.py +0 -2
  3. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/test_missing_values.py +5 -0
  4. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/app.py +17 -6
  5. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/activity_blueprint.py +25 -15
  6. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/entry_views.py +4 -1
  7. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/settings_blueprint.py +6 -4
  8. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/upload_blueprint.py +11 -0
  9. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/activity/show.html.j2 +3 -1
  10. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/search/index.html.j2 +5 -1
  11. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/pyproject.toml +1 -1
  12. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/LICENSE +0 -0
  13. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/__init__.py +0 -0
  14. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/__main__.py +0 -0
  15. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/README +0 -0
  16. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/env.py +0 -0
  17. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/script.py.mako +0 -0
  18. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/versions/38882503dc7c_add_tags_to_activities.py +0 -0
  19. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/versions/451e7836b53d_add_square_planner_bookmark.py +0 -0
  20. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/versions/63d3b7f6f93c_initial_version.py +0 -0
  21. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/versions/93cc82ad1b60_add_parametricplotspec.py +0 -0
  22. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/versions/ab83b9d23127_add_upstream_id.py +0 -0
  23. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/versions/b03491c593f6_add_crop_indices.py +0 -0
  24. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/versions/da2cba03b71d_add_photos.py +0 -0
  25. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/versions/e02e27876deb_add_square_planner_bookmark_name.py +0 -0
  26. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/alembic/versions/script.py.mako +0 -0
  27. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/__init__.py +0 -0
  28. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/activities.py +0 -0
  29. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/config.py +0 -0
  30. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/coordinates.py +0 -0
  31. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/datamodel.py +0 -0
  32. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/enrichment.py +0 -0
  33. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/heart_rate.py +0 -0
  34. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/meta_search.py +0 -0
  35. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/parametric_plot.py +0 -0
  36. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/paths.py +0 -0
  37. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/privacy_zones.py +0 -0
  38. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/raster_map.py +0 -0
  39. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/similarity.py +0 -0
  40. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/summary_stats.py +0 -0
  41. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/tasks.py +0 -0
  42. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/test_datamodel.py +0 -0
  43. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/test_meta_search.py +0 -0
  44. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/test_summary_stats.py +0 -0
  45. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/test_tiles.py +0 -0
  46. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/test_time_conversion.py +0 -0
  47. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/tiles.py +0 -0
  48. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/core/time_conversion.py +0 -0
  49. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/explorer/__init__.py +0 -0
  50. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/explorer/grid_file.py +0 -0
  51. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/explorer/tile_visits.py +0 -0
  52. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/explorer/video.py +0 -0
  53. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/heatmap_video.py +0 -0
  54. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/importers/__init__.py +0 -0
  55. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/importers/activity_parsers.py +0 -0
  56. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/importers/csv_parser.py +0 -0
  57. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/importers/directory.py +0 -0
  58. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/importers/strava_api.py +0 -0
  59. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/importers/strava_checkout.py +0 -0
  60. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/importers/test_csv_parser.py +0 -0
  61. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/importers/test_directory.py +0 -0
  62. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/importers/test_strava_api.py +0 -0
  63. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/__init__.py +0 -0
  64. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/authenticator.py +0 -0
  65. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/__init__.py +0 -0
  66. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/auth_blueprint.py +0 -0
  67. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py +0 -0
  68. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/calendar_blueprint.py +0 -0
  69. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/eddington_blueprints.py +0 -0
  70. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/equipment_blueprint.py +0 -0
  71. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/explorer_blueprint.py +0 -0
  72. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/heatmap_blueprint.py +0 -0
  73. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/photo_blueprint.py +0 -0
  74. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/plot_builder_blueprint.py +0 -0
  75. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/search_blueprint.py +0 -0
  76. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/square_planner_blueprint.py +0 -0
  77. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/summary_blueprint.py +0 -0
  78. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/blueprints/tile_blueprint.py +0 -0
  79. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/columns.py +0 -0
  80. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/flasher.py +0 -0
  81. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/plot_util.py +0 -0
  82. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/search_util.py +0 -0
  83. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/Leaflet.fullscreen.min.js +0 -0
  84. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/MarkerCluster.Default.css +0 -0
  85. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/MarkerCluster.css +0 -0
  86. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/android-chrome-192x192.png +0 -0
  87. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/android-chrome-512x512.png +0 -0
  88. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/apple-touch-icon.png +0 -0
  89. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/bootstrap-dark-mode.js +0 -0
  90. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/bootstrap.bundle.min.js +0 -0
  91. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/bootstrap.min.css +0 -0
  92. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/browserconfig.xml +0 -0
  93. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/favicon-16x16.png +0 -0
  94. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/favicon-32x32.png +0 -0
  95. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/favicon-48x48.png +0 -0
  96. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/favicon.ico +0 -0
  97. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/favicon.svg +0 -0
  98. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/fullscreen.png +0 -0
  99. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/fullscreen@2x.png +0 -0
  100. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/images/layers-2x.png +0 -0
  101. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/images/layers.png +0 -0
  102. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/images/marker-icon-2x.png +0 -0
  103. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/images/marker-icon.png +0 -0
  104. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/images/marker-shadow.png +0 -0
  105. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/leaflet.css +0 -0
  106. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/leaflet.fullscreen.css +0 -0
  107. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/leaflet.js +0 -0
  108. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/leaflet.markercluster.js +0 -0
  109. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/mstile-150x150.png +0 -0
  110. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/site.webmanifest +0 -0
  111. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/table-sort.min.js +0 -0
  112. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/vega-embed@6 +0 -0
  113. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/vega-lite@4 +0 -0
  114. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/vega@5 +0 -0
  115. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/web-app-manifest-192x192.png +0 -0
  116. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/static/web-app-manifest-512x512.png +0 -0
  117. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/activity/day.html.j2 +0 -0
  118. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/activity/edit.html.j2 +0 -0
  119. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/activity/lines.html.j2 +0 -0
  120. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/activity/name.html.j2 +0 -0
  121. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/activity/trim.html.j2 +0 -0
  122. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/auth/index.html.j2 +0 -0
  123. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/bubble_chart/index.html.j2 +0 -0
  124. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/calendar/index.html.j2 +0 -0
  125. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/calendar/month.html.j2 +0 -0
  126. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/eddington/distance.html.j2 +0 -0
  127. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/eddington/elevation_gain.html.j2 +0 -0
  128. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/elevation_eddington/index.html.j2 +0 -0
  129. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/equipment/index.html.j2 +0 -0
  130. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/explorer/index.html.j2 +0 -0
  131. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/explorer/server-side.html.j2 +0 -0
  132. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/heatmap/index.html.j2 +0 -0
  133. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/home.html.j2 +0 -0
  134. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/page.html.j2 +0 -0
  135. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/photo/map.html.j2 +0 -0
  136. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/photo/new.html.j2 +0 -0
  137. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/plot_builder/edit.html.j2 +0 -0
  138. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/plot_builder/index.html.j2 +0 -0
  139. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/search_form.html.j2 +0 -0
  140. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/admin-password.html.j2 +0 -0
  141. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/color-schemes.html.j2 +0 -0
  142. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/heart-rate.html.j2 +0 -0
  143. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/index.html.j2 +0 -0
  144. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/manage-equipments.html.j2 +0 -0
  145. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/manage-kinds.html.j2 +0 -0
  146. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/metadata-extraction.html.j2 +0 -0
  147. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/privacy-zones.html.j2 +0 -0
  148. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/segmentation.html.j2 +0 -0
  149. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/sharepic.html.j2 +0 -0
  150. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/strava.html.j2 +0 -0
  151. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/tags-edit.html.j2 +0 -0
  152. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/tags-list.html.j2 +0 -0
  153. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/settings/tags-new.html.j2 +0 -0
  154. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/square_planner/index.html.j2 +0 -0
  155. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/summary/index.html.j2 +0 -0
  156. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/upload/index.html.j2 +0 -0
  157. {geo_activity_playground-0.43.0 → geo_activity_playground-0.43.2}/geo_activity_playground/webui/templates/upload/reload.html.j2 +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geo-activity-playground
3
- Version: 0.43.0
3
+ Version: 0.43.2
4
4
  Summary: Analysis of geo data activities like rides, runs or hikes.
5
5
  License: MIT
6
6
  Author: Martin Ueding
@@ -8,8 +8,6 @@ import pandas as pd
8
8
  def some(value: Any) -> Optional[Any]:
9
9
  if value is None:
10
10
  return None
11
- elif np.isnan(value):
12
- return None
13
11
  elif pd.isna(value):
14
12
  return None
15
13
  else:
@@ -1,4 +1,5 @@
1
1
  import numpy as np
2
+ import pandas as pd
2
3
 
3
4
  from .missing_values import some
4
5
 
@@ -17,3 +18,7 @@ def test_float() -> None:
17
18
 
18
19
  def test_integer() -> None:
19
20
  assert some(1) == 1
21
+
22
+
23
+ def test_nat() -> None:
24
+ assert some(pd.NaT) == None
@@ -8,6 +8,7 @@ import secrets
8
8
  import shutil
9
9
  import urllib.parse
10
10
 
11
+ import pandas as pd
11
12
  import sqlalchemy
12
13
  from flask import Flask
13
14
  from flask import request
@@ -105,15 +106,25 @@ def web_ui_main(
105
106
 
106
107
  @app.template_filter()
107
108
  def dt(value: datetime.datetime):
108
- return value.strftime("%Y-%m-%d %H:%M")
109
+ if pd.isna(value):
110
+ return "—"
111
+ else:
112
+ return value.strftime("%Y-%m-%d %H:%M")
109
113
 
110
114
  @app.template_filter()
111
115
  def td(v: datetime.timedelta):
112
- seconds = v.total_seconds()
113
- h = int(seconds // 3600)
114
- m = int(seconds // 60 % 60)
115
- s = int(seconds // 1 % 60)
116
- return f"{h}:{m:02d}:{s:02d}"
116
+ if pd.isna(v):
117
+ return "—"
118
+ else:
119
+ seconds = v.total_seconds()
120
+ h = int(seconds // 3600)
121
+ m = int(seconds // 60 % 60)
122
+ s = int(seconds // 1 % 60)
123
+ return f"{h}:{m:02d}:{s:02d}"
124
+
125
+ @app.template_filter()
126
+ def isna(value):
127
+ return pd.isna(value)
117
128
 
118
129
  authenticator = Authenticator(config_accessor())
119
130
  search_query_history = SearchQueryHistory(config_accessor, authenticator)
@@ -111,11 +111,14 @@ def make_activity_blueprint(
111
111
  == activity.id
112
112
  )
113
113
  for zoom in sorted(config.explorer_zoom_levels)
114
+ if not tile_visit_accessor.tile_state["tile_history"][zoom].empty
114
115
  }
115
116
 
116
117
  new_tiles_geojson = {}
117
118
  new_tiles_per_zoom = {}
118
119
  for zoom in sorted(config.explorer_zoom_levels):
120
+ if tile_visit_accessor.tile_state["tile_history"][zoom].empty:
121
+ continue
119
122
  new_tiles = tile_visit_accessor.tile_state["tile_history"][zoom].loc[
120
123
  tile_visit_accessor.tile_state["tile_history"][zoom]["activity_id"]
121
124
  == activity.id
@@ -141,25 +144,32 @@ def make_activity_blueprint(
141
144
 
142
145
  context = {
143
146
  "activity": activity,
144
- "line_json": line_json,
145
- "distance_time_plot": distance_time_plot(time_series),
146
- "color_line_geojson": make_geojson_color_line(
147
- time_series, line_color_column
148
- ),
149
- "speed_time_plot": speed_time_plot(time_series),
150
- "speed_distribution_plot": speed_distribution_plot(time_series),
147
+ "color_line_geojson": line_json,
151
148
  "similar_activites": similar_activities,
152
- "line_color_bar": make_color_bar(
153
- time_series[line_color_column],
154
- line_color_columns_avail[line_color_column].format,
155
- ),
156
- "date": activity.start.date(),
157
- "time": activity.start.time(),
158
149
  "new_tiles": new_tiles_per_zoom,
159
150
  "new_tiles_geojson": new_tiles_geojson,
160
- "line_color_column": line_color_column,
161
- "line_color_columns_avail": line_color_columns_avail,
162
151
  }
152
+
153
+ if not pd.isna(time_series["time"]).all():
154
+ context.update(
155
+ {
156
+ "distance_time_plot": distance_time_plot(time_series),
157
+ "color_line_geojson": make_geojson_color_line(
158
+ time_series, line_color_column
159
+ ),
160
+ "speed_time_plot": speed_time_plot(time_series),
161
+ "speed_distribution_plot": speed_distribution_plot(time_series),
162
+ "line_color_bar": make_color_bar(
163
+ time_series[line_color_column],
164
+ line_color_columns_avail[line_color_column].format,
165
+ ),
166
+ "date": activity.start.date(),
167
+ "time": activity.start.time(),
168
+ "line_color_column": line_color_column,
169
+ "line_color_columns_avail": line_color_columns_avail,
170
+ }
171
+ )
172
+
163
173
  if (
164
174
  heart_zones := _extract_heart_rate_zones(
165
175
  time_series, heart_rate_zone_computer
@@ -37,7 +37,10 @@ def register_entry_views(
37
37
 
38
38
  context["latest_activities"] = collections.defaultdict(list)
39
39
  for activity in DB.session.scalars(
40
- sqlalchemy.select(Activity).order_by(Activity.start.desc()).limit(100)
40
+ sqlalchemy.select(Activity)
41
+ .where(Activity.start.is_not(None))
42
+ .order_by(Activity.start.desc())
43
+ .limit(100)
41
44
  ):
42
45
  context["latest_activities"][activity.start.date()].append(
43
46
  {
@@ -95,16 +95,18 @@ def make_settings_blueprint(
95
95
  def index():
96
96
  return render_template("settings/index.html.j2")
97
97
 
98
- @blueprint.route("/admin-password")
98
+ @blueprint.route("/admin-password", methods=["GET", "POST"])
99
99
  @needs_authentication(authenticator)
100
100
  def admin_password() -> Response:
101
101
  if request.method == "POST":
102
102
  config_accessor().upload_password = request.form["password"]
103
103
  config_accessor.save()
104
104
  flasher.flash_message("Updated admin password.", FlashTypes.SUCCESS)
105
- return render_template(
106
- "settings/admin-password.html.j2",
107
- password=config_accessor().upload_password,
105
+ return Response(
106
+ render_template(
107
+ "settings/admin-password.html.j2",
108
+ password=config_accessor().upload_password,
109
+ )
108
110
  )
109
111
 
110
112
  @blueprint.route("/color-schemes", methods=["GET", "POST"])
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import pathlib
3
3
 
4
+ import sqlalchemy
4
5
  from flask import Blueprint
5
6
  from flask import flash
6
7
  from flask import redirect
@@ -10,7 +11,10 @@ from flask import url_for
10
11
 
11
12
  from ...core.activities import ActivityRepository
12
13
  from ...core.config import Config
14
+ from ...core.datamodel import DB
15
+ from ...core.datamodel import Kind
13
16
  from ...core.enrichment import populate_database_from_extracted
17
+ from ...core.tasks import work_tracker_path
14
18
  from ...explorer.tile_visits import compute_tile_evolution
15
19
  from ...explorer.tile_visits import compute_tile_visits_new
16
20
  from ...explorer.tile_visits import TileVisitAccessor
@@ -114,6 +118,13 @@ def scan_for_activities(
114
118
  populate_database_from_extracted(config)
115
119
 
116
120
  if len(repository) > 0:
121
+ kinds = DB.session.scalars(sqlalchemy.select(Kind)).all()
122
+ if all(kind.consider_for_achievements == False for kind in kinds):
123
+ for kind in kinds:
124
+ kind.consider_for_achievements = True
125
+ DB.session.commit()
126
+ tile_visit_accessor.reset()
127
+ work_tracker_path("tile-state").unlink()
117
128
  compute_tile_visits_new(repository, tile_visit_accessor)
118
129
  compute_tile_evolution(tile_visit_accessor.tile_state, config)
119
130
  tile_visit_accessor.save()
@@ -94,7 +94,7 @@
94
94
  }).addTo(map);
95
95
 
96
96
  let geojson = L.geoJSON({{ color_line_geojson| safe }}, {
97
- style: function (feature) { return { color: feature.properties.color } }
97
+ style: function (feature) { return { color: feature.properties.color ? feature.properties.color : 'red' } }
98
98
  }).addTo(map)
99
99
  map.fitBounds(geojson.getBounds());
100
100
 
@@ -134,6 +134,7 @@
134
134
  }
135
135
  </style>
136
136
 
137
+ {% if line_color_bar %}
137
138
  <div>
138
139
  {% for value, color in line_color_bar.colors %}
139
140
  <span class="colorbar" style="width: 15px; background-color: {{ color }}">{{ value }}</span>
@@ -153,6 +154,7 @@
153
154
  </select>
154
155
  </form>
155
156
  </div>
157
+ {% endif %}
156
158
  </div>
157
159
  </div>
158
160
 
@@ -31,7 +31,11 @@
31
31
  </td>
32
32
  <td>{{ '%.1f' % activity["distance_km"] }} km</td>
33
33
  <td>{{ activity.elapsed_time|td }}</td>
34
- <td>{{ activity.average_speed_moving_kmh|round(1) }}</td>
34
+ <td>
35
+ {% if not activity.average_speed_moving_kmh|isna %}
36
+ {{ activity.average_speed_moving_kmh|round(1) }}
37
+ {% endif %}
38
+ </td>
35
39
  <td>{{ activity["equipment"] }}</td>
36
40
  <td>{{ activity['kind'] }}</td>
37
41
  </tr>
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "geo-activity-playground"
3
- version = "0.43.0"
3
+ version = "0.43.2"
4
4
  description = "Analysis of geo data activities like rides, runs or hikes."
5
5
  authors = ["Martin Ueding <mu@martin-ueding.de>"]
6
6
  license = "MIT"