geo-activity-playground 0.43.3__py3-none-any.whl → 0.44.0__py3-none-any.whl

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.
@@ -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 time_series_dir
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 = time_series_dir() / f"{self.id}.parquet"
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 time_series_dir
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 = time_series_dir() / f"{activity.id}.parquet"
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
- time_series_dir = dir_wrapper(_time_series_dir)
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
- shutil.rmtree(_activity_enriched_dir)
352
- return redirect(url_for("upload.reload"))
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
- <span class="badge text-bg-primary">{{ tag.tag }}</span>
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 %}
@@ -103,7 +103,7 @@
103
103
  value="{{ tag.id }}" id="tag_{{ tag.id }}" {% if tag.id in query.tag %}
104
104
  checked {% endif %}>
105
105
  <label class="form-check-label" for="tag_{{ tag.id }}">
106
- {{ tag.tag }}
106
+ {{ activity_tag(tag) }}
107
107
  </label>
108
108
  </div>
109
109
  {% endfor %}
@@ -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
 
@@ -7,7 +7,7 @@
7
7
  <ul>
8
8
  {% for tag in tags %}
9
9
  <li>
10
- <b>{{ tag.tag }}</b>
10
+ {{ activity_tag(tag) }}
11
11
  <a class="btn btn-sm btn-primary" href="{{ url_for('.tags_edit', id=tag.id) }}">Edit</a>
12
12
  </li>
13
13
  {% endfor %}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: geo-activity-playground
3
- Version: 0.43.3
3
+ Version: 0.44.0
4
4
  Summary: Analysis of geo data activities like rides, runs or hikes.
5
5
  License: MIT
6
6
  Author: Martin Ueding
@@ -3,6 +3,7 @@ geo_activity_playground/__main__.py,sha256=eL7NlKydYrzi4ikTvvKmlwkEFxx0V6CXOHOhR
3
3
  geo_activity_playground/alembic/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
4
4
  geo_activity_playground/alembic/env.py,sha256=46oMzwSROaAsYuYWTd46txFdRLD3adm_SCn01A_ex8Q,2081
5
5
  geo_activity_playground/alembic/script.py.mako,sha256=g1k4U3D8y4PPYRzW3DH7GEu6yN4EiAr62GgCu6cRpBo,524
6
+ geo_activity_playground/alembic/versions/0f02b92c4f94_add_tag_color.py,sha256=gWcRPLIo1jH3X_x0hh1rMRuiz2wtS10MEIsG6voBCX4,827
6
7
  geo_activity_playground/alembic/versions/38882503dc7c_add_tags_to_activities.py,sha256=HmvYgHlVodHB7xyigg7zHkFXSi1znWqKfOHcd6y9sZE,3157
7
8
  geo_activity_playground/alembic/versions/451e7836b53d_add_square_planner_bookmark.py,sha256=WrmlDllnJECg6cSOeS05wYCa977_SXbJUV5khDSzntw,1082
8
9
  geo_activity_playground/alembic/versions/63d3b7f6f93c_initial_version.py,sha256=YTnnENkQ8WqLz7PFof7tUWNkWcoHGkAfAM52x1N9umo,3029
@@ -16,13 +17,13 @@ geo_activity_playground/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
16
17
  geo_activity_playground/core/activities.py,sha256=apP_-Rg1ub3lh7RARMGXf2BOmJTiahxqpX_soEnYF3E,4681
17
18
  geo_activity_playground/core/config.py,sha256=eGWWbNfHa6H64AHCnFYTsAJ7-pWi-PhyxL4hjZ4u03U,5256
18
19
  geo_activity_playground/core/coordinates.py,sha256=tDfr9mlXhK6E_MMIJ0vYWVCoH0Lq8uyuaqUgaa8i0jg,966
19
- geo_activity_playground/core/datamodel.py,sha256=fBq2D9N8wjWVSSt0bLqxIOBLouRySO74mcG1Z_vsKVI,12786
20
- geo_activity_playground/core/enrichment.py,sha256=Hs1lB__s5TwPLOWPaaheOJeJIBQFUa68NTbCI5M5wWI,7640
20
+ geo_activity_playground/core/datamodel.py,sha256=9QZAk083Bqsx0p3STHv1fC__e7WuFrXx6hwdBTxgMss,13268
21
+ geo_activity_playground/core/enrichment.py,sha256=Tju9sKI-V40CmsS9RiNeGz-Zhp_hx1xjlaWzJMrasXI,7640
21
22
  geo_activity_playground/core/heart_rate.py,sha256=-S3WAhS7AOywrw_Lk5jfuo_fu6zvZQ1VtjwEKSycWpU,1542
22
23
  geo_activity_playground/core/meta_search.py,sha256=Ygh2uySZ9_q-oddU_2vXfzGfXV9rfTyeQFBT7sIiXCI,6657
23
24
  geo_activity_playground/core/missing_values.py,sha256=HjonaLV0PFMICnuMrbdUNnK9uy_8PBh_RxI5GuEMQK0,250
24
25
  geo_activity_playground/core/parametric_plot.py,sha256=IefPc6lwthxowvjUDA5wu23oBSw9jq399l04gSaNrOQ,3880
25
- geo_activity_playground/core/paths.py,sha256=CLQYA_6ouxHJYgrt_uGp-9sO7MG60prdD6cvVwhA_2g,2670
26
+ geo_activity_playground/core/paths.py,sha256=GGNpqhQL7etn8-NV6hVGLT7yBZYq7AwXnWfX3l_Cj48,2670
26
27
  geo_activity_playground/core/privacy_zones.py,sha256=4TumHsVUN1uW6RG3ArqTXDykPVipF98DCxVBe7YNdO8,512
27
28
  geo_activity_playground/core/raster_map.py,sha256=Cq8dNLdxVQg3Agzn2bmXVu0-8kZf56QrSe-LKNn3jaU,7994
28
29
  geo_activity_playground/core/similarity.py,sha256=L2de3DPRdDeDY5AxZwLDcH7FjHWRWklr41VNU06q9kQ,3117
@@ -54,7 +55,7 @@ geo_activity_playground/webui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
54
55
  geo_activity_playground/webui/app.py,sha256=SyRztm6P0pQuq3Vn4g7gFwg1pwyZsElVNZOeljN5jEY,8139
55
56
  geo_activity_playground/webui/authenticator.py,sha256=jtQqvpVHa_eLTAulmvvJgDRoCWOEege49G9zn3MfYk8,1394
56
57
  geo_activity_playground/webui/blueprints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- geo_activity_playground/webui/blueprints/activity_blueprint.py,sha256=QRkSPDJfBNRJn9UHchQm_Rg_b_Or0AqxUzNNzOxTx30,25688
58
+ geo_activity_playground/webui/blueprints/activity_blueprint.py,sha256=EjaTe6VFkRpO9DEkHHurt5GDzAvHHUqgQgfBdiN239Q,26457
58
59
  geo_activity_playground/webui/blueprints/auth_blueprint.py,sha256=_VZeP3VN626BoOOZUkNVnuw9v-cEOrkHz5lhFPmxqMY,784
59
60
  geo_activity_playground/webui/blueprints/bubble_chart_blueprint.py,sha256=xESHzYxlbhz4oNDuxV0A70eVKpFwz84pYC3q_YVZZg8,2812
60
61
  geo_activity_playground/webui/blueprints/calendar_blueprint.py,sha256=4EIBZ8rdXEu3tbl1faVlRwHb8Qp0JuMc3eyxwMkq6g8,2848
@@ -66,7 +67,7 @@ geo_activity_playground/webui/blueprints/heatmap_blueprint.py,sha256=iHI5YJYhX7Z
66
67
  geo_activity_playground/webui/blueprints/photo_blueprint.py,sha256=sYGp2XVGodkAifGHbEqpIY-7bBH5R7G7Dwg4HqgxMSY,7269
67
68
  geo_activity_playground/webui/blueprints/plot_builder_blueprint.py,sha256=7HrjpBM-608HSOh0i31Lmt7yDNMfWlEn6G7DlYqlV9w,3031
68
69
  geo_activity_playground/webui/blueprints/search_blueprint.py,sha256=Sv_KL1Cdai26y51qVfI-5jZLhtElREsEar1dbR_VAC4,2275
69
- geo_activity_playground/webui/blueprints/settings_blueprint.py,sha256=788rbsIjbOrLU6kEl2EzxA6ZUwI-t8KR9VW5klS3i0c,17332
70
+ geo_activity_playground/webui/blueprints/settings_blueprint.py,sha256=EFdaV_l-CLwLWC8AvYbGDf-okHowK40u9dW-bUq_1MI,18092
70
71
  geo_activity_playground/webui/blueprints/square_planner_blueprint.py,sha256=xVaxJxmt8Dysl3UL9f2y__LVLtTH2Np1Ust4OSXKRAk,4746
71
72
  geo_activity_playground/webui/blueprints/summary_blueprint.py,sha256=rK4LGR2Rpioy4wSqNYuyRn4WxaWeBLensJ3PmAd-ouY,11469
72
73
  geo_activity_playground/webui/blueprints/tile_blueprint.py,sha256=YzZf9OrNdjhc1_j4MtO1DMcw1uCv29ueNsYd-mWqgbg,837
@@ -113,7 +114,7 @@ geo_activity_playground/webui/templates/activity/day.html.j2,sha256=CHEvxlZralCm
113
114
  geo_activity_playground/webui/templates/activity/edit.html.j2,sha256=r979JPqaZi_2ymTykxpkjdpw0D2tsB9VJaf7OaGPaME,1961
114
115
  geo_activity_playground/webui/templates/activity/lines.html.j2,sha256=_ZDg1ruW-9UMJfOudy1-uY_-IcSSaagq7tPCih5Bb8g,1079
115
116
  geo_activity_playground/webui/templates/activity/name.html.j2,sha256=7Wbh3IrVL5lMRve467H0P10Shn5FzGpaXLhV0H-X4Hk,2725
116
- geo_activity_playground/webui/templates/activity/show.html.j2,sha256=uSTjr0hm8tjBOWb71xKReKuUsVv_5PaoKaqdYUe1noI,10665
117
+ geo_activity_playground/webui/templates/activity/show.html.j2,sha256=obKXSvRJxpeo53k7aCUrrhJSus9msuPGStIQJQQHpes,10975
117
118
  geo_activity_playground/webui/templates/activity/trim.html.j2,sha256=3oAXQab6QqWjGBC9KCvWNOVn8uRmxoDLj3hx_O63TXc,1836
118
119
  geo_activity_playground/webui/templates/auth/index.html.j2,sha256=ILQ5HvTEYc3OrtOAIFt1VrqWorVD70V9DC342znmP70,579
119
120
  geo_activity_playground/webui/templates/bubble_chart/index.html.j2,sha256=yd7lWjtxxVmJZqCiXb0Y1gMEOQ7LQYJXEdpE7JB1OZY,1616
@@ -127,13 +128,13 @@ geo_activity_playground/webui/templates/explorer/index.html.j2,sha256=3t9ikAF6oM
127
128
  geo_activity_playground/webui/templates/explorer/server-side.html.j2,sha256=3eYh3mmgPDmxFjH6Ofx1iw-jptcD9ctZixYh59mka3w,2496
128
129
  geo_activity_playground/webui/templates/heatmap/index.html.j2,sha256=uM-l4gmDKw6307ZH_zb8zroMTKBuOkrR0Bu4fTEJE0s,1231
129
130
  geo_activity_playground/webui/templates/home.html.j2,sha256=L0wVZ6RA3mel1Wt7ZD7PbaMUEEcdO2XLDy1e1ZdRPUY,2697
130
- geo_activity_playground/webui/templates/page.html.j2,sha256=nwuwWfmFe7RnVmXGEYR8cu6en5gKbi2-xSyRxKQC9sc,12368
131
+ geo_activity_playground/webui/templates/page.html.j2,sha256=QJtRcHciEEWUUf6LHll2RUm0NRXSkNGIYn1FHOKSrM4,12534
131
132
  geo_activity_playground/webui/templates/photo/map.html.j2,sha256=MWhqt5Q8ExiRhgxndcEnwngOj1qw0E0u4hKuiuY24Gg,1437
132
133
  geo_activity_playground/webui/templates/photo/new.html.j2,sha256=GGLejO4ap6ZMe54jZP39ktSLkdw5j67bf5PTlHEK7qc,383
133
134
  geo_activity_playground/webui/templates/plot_builder/edit.html.j2,sha256=x5Ki425me3HY6CcBQ37le9g8rCpbOxFVkdr0N_L84-g,2230
134
135
  geo_activity_playground/webui/templates/plot_builder/index.html.j2,sha256=fBuGLT2HIwlgz5eGeKXOdIDqzDSQoY99w-hyt_0JP-w,832
135
136
  geo_activity_playground/webui/templates/search/index.html.j2,sha256=tZ2RwiaC1cLCLfcxbDvpnLSjPeqnTkByAT6ncVitnLw,1318
136
- geo_activity_playground/webui/templates/search_form.html.j2,sha256=QL0inDTaEHPxoQGs3EB19bD0jAMnUkOrb_r5OoQn7JU,8251
137
+ geo_activity_playground/webui/templates/search_form.html.j2,sha256=BBxT2aAUlOZ41d2hE9EKX0Jcr0FKLCp_9cgWYyrVtE8,8261
137
138
  geo_activity_playground/webui/templates/settings/admin-password.html.j2,sha256=VYwddpObD1RpeTH5Dm4y7VtmT7kwURDCIjxyzJeq08c,495
138
139
  geo_activity_playground/webui/templates/settings/color-schemes.html.j2,sha256=iR91Wxd2_TMuIo9dBDZBrWSUGHNwTwzC6O8oNH-XBt4,1653
139
140
  geo_activity_playground/webui/templates/settings/heart-rate.html.j2,sha256=UPT3MegRgSeff36lhCo0l3ZwhqNSIg5gM6h2s32GkCY,4255
@@ -145,15 +146,15 @@ geo_activity_playground/webui/templates/settings/privacy-zones.html.j2,sha256=Kp
145
146
  geo_activity_playground/webui/templates/settings/segmentation.html.j2,sha256=QV72TZcIxqql-vEsq2lKHzo5UxoxeeXkRA9se46GWKU,1187
146
147
  geo_activity_playground/webui/templates/settings/sharepic.html.j2,sha256=qZkfEpd4CtKKMaSSVadqvNEgMRYLV-0X-pw5-nJvukk,678
147
148
  geo_activity_playground/webui/templates/settings/strava.html.j2,sha256=GCE5gskQ6xJ8AM1qGrrUVLDOiuqg510mWzzsZjia0gk,2211
148
- geo_activity_playground/webui/templates/settings/tags-edit.html.j2,sha256=OAXg_P-ZN7-LLvvzP0xVtadxb0t0TDD8xiWniL4U1FM,378
149
- geo_activity_playground/webui/templates/settings/tags-list.html.j2,sha256=AsFhWyMejbNMvOgWhqRtAiJGK8eqkHgECZ7mKFpQWkA,366
149
+ geo_activity_playground/webui/templates/settings/tags-edit.html.j2,sha256=Lna2QBacuMwaFODGCVulOpHSHHjqCdhNJg2c6i-ogY0,586
150
+ geo_activity_playground/webui/templates/settings/tags-list.html.j2,sha256=6giFWtVCTLXLC_Ojh56XhB_1Rouit9YzIs_YHIiayLg,369
150
151
  geo_activity_playground/webui/templates/settings/tags-new.html.j2,sha256=xi6KbwydDVrUJM4_ty4KbMa74k3QaoyZhZAn2paERnM,358
151
152
  geo_activity_playground/webui/templates/square_planner/index.html.j2,sha256=-OnY2nQCgZCslOzf28ogZwFykwF8tZm7PgFwOE3eBDk,8176
152
153
  geo_activity_playground/webui/templates/summary/index.html.j2,sha256=soGpTK-pD81YBlMWNWLnkWeEmVIbI5JwmGZQUN2c3DI,9151
153
154
  geo_activity_playground/webui/templates/upload/index.html.j2,sha256=I1Ix8tDS3YBdi-HdaNfjkzYXVVCjfUTe5PFTnap1ydc,775
154
155
  geo_activity_playground/webui/templates/upload/reload.html.j2,sha256=YZWX5eDeNyqKJdQAywDBcU8DZBm22rRBbZqFjrFrCvQ,556
155
- geo_activity_playground-0.43.3.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
156
- geo_activity_playground-0.43.3.dist-info/METADATA,sha256=ax34y9rdLoVSrC7nWx7bNvudjfo1bQWkZ5VXJee1nMQ,1850
157
- geo_activity_playground-0.43.3.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
158
- geo_activity_playground-0.43.3.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
159
- geo_activity_playground-0.43.3.dist-info/RECORD,,
156
+ geo_activity_playground-0.44.0.dist-info/LICENSE,sha256=4RpAwKO8bPkfXH2lnpeUW0eLkNWglyG4lbrLDU_MOwY,1070
157
+ geo_activity_playground-0.44.0.dist-info/METADATA,sha256=w8_RW19yZpYDP_0AHdlIT3ooh-8UFY5KvYvapT2wPJM,1850
158
+ geo_activity_playground-0.44.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
159
+ geo_activity_playground-0.44.0.dist-info/entry_points.txt,sha256=pbNlLI6IIZIp7nPYCfAtiSiz2oxJSCl7DODD6SPkLKk,81
160
+ geo_activity_playground-0.44.0.dist-info/RECORD,,