diff --git a/rowers/integrations/intervals.py b/rowers/integrations/intervals.py index 149eaf70..182a8863 100644 --- a/rowers/integrations/intervals.py +++ b/rowers/integrations/intervals.py @@ -1,6 +1,7 @@ from .integrations import SyncIntegration, NoTokenError, create_or_update_syncrecord, get_known_ids from rowers.models import Rower, User, Workout, TombStone, PlannedSession from rowingdata import rowingdata +from rowers.rower_rules import user_is_not_basic, user_is_coachee from rowers import mytypes @@ -545,20 +546,27 @@ class IntervalsIntegration(SyncIntegration): return 1 def import_activities(self, event, *args, **kwargs): - try: - record = event["activity"] - except KeyError: - records = [] + if not self.rower.intervals_auto_import: + return 0 + if user_is_not_basic(self.rower.user) or user_is_coachee(self.rower.user): + try: + record = event["activity"] + except KeyError: + records = [] - try: - id = record['id'] - result = self.get_workout(id) - except KeyError: - pass + try: + id = record['id'] + result = self.get_workout(id) + except KeyError: + pass - return 1 + return 1 + + return 0 def delete_activities(self, event, *args, **kwargs): + if not self.rower.intervals_auto_delete: + return 0 try: record = event["activity"] except KeyError: diff --git a/rowers/models.py b/rowers/models.py index 587de999..40195356 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -1176,6 +1176,7 @@ class Rower(models.Model): intervals_auto_export = models.BooleanField(default=False) intervals_auto_import = models.BooleanField(default=False) intervals_delete_plannedsession = models.BooleanField(default=False, verbose_name="Deleting planned session deletes it on intervals.icu") + intervals_auto_delete = models.BooleanField(default=True, verbose_name="Deleting an activity on intervals.icu deletes it on both") intervals_resample_to_1s = models.BooleanField(default=False, verbose_name='Resample to 1s on export') sporttrackstoken = models.CharField( default='', max_length=200, blank=True, null=True) @@ -4676,6 +4677,7 @@ class RowerExportForm(ModelForm): 'intervals_auto_export', 'intervals_delete_plannedsession', 'intervals_resample_to_1s', + 'intervals_auto_delete', 'imports_are_private' ] @@ -4703,6 +4705,7 @@ class RowerExportFormIntervals(ModelForm): 'intervals_auto_import', 'intervals_auto_export', 'intervals_resample_to_1s', + 'intervals_auto_delete', 'intervals_delete_plannedsession', ] diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 44ff77b8..3fa78d6e 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ