diff --git a/rowers/c2stuff.py b/rowers/c2stuff.py index ebe1d45b..3d390b6b 100644 --- a/rowers/c2stuff.py +++ b/rowers/c2stuff.py @@ -108,9 +108,16 @@ def get_c2_workouts(rower): for item in res.json()['data']: alldata[item['id']] = item - knownc2ids = uniqify([ + knownc2ids = [ w.uploadedtoc2 for w in Workout.objects.filter(user=rower) - ]) + ] + + tombstones = [ + t.uploadedtoc2 for t in TombStone.objects.filter(user=rower) + ] + + knownc2ids = uniqify(knownc2ids+tombstones) + newids = [c2id for c2id in c2ids if not c2id in knownc2ids] for c2id in newids: diff --git a/rowers/models.py b/rowers/models.py index 1201fdd6..f3f1eed9 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2506,7 +2506,6 @@ class PlannedSessionFormSmall(ModelForm): boattypes = mytypes.boattypes # Workout -@python_2_unicode_compatible class Workout(models.Model): workouttypes = mytypes.workouttypes workoutsources = mytypes.workoutsources @@ -2611,7 +2610,28 @@ class Workout(models.Model): ) return stri + +class TombStone(models.Model): + user = models.ForeignKey(Rower,on_delete=models.CASCADE) + uploadedtoc2 = models.IntegerField(default=0) + uploadedtostrava = models.BigIntegerField(default=0) + uploadedtosporttracks = models.BigIntegerField(default=0) + uploadedtounderarmour = models.BigIntegerField(default=0) + uploadedtotp = models.BigIntegerField(default=0) + uploadedtorunkeeper = models.BigIntegerField(default=0) +@receiver(models.signals.pre_delete,sender=Workout) +def create_tombstone_on_delete(sender, instance, **kwargs): + t = TombStone( + user=instance.user, + uploadedtoc2 = instance.uploadedtoc2, + uploadedtostrava = instance.uploadedtostrava, + uploadedtounderarmour = instance.uploadedtounderarmour, + uploadedtotp = instance.uploadedtotp, + uploadedtorunkeeper = instance.uploadedtorunkeeper, + ) + t.save() + # delete files belonging to workout instance # related GraphImage objects should be deleted automatically @receiver(models.signals.post_delete,sender=Workout) diff --git a/rowers/stravastuff.py b/rowers/stravastuff.py index 15a9a511..87d8f185 100644 --- a/rowers/stravastuff.py +++ b/rowers/stravastuff.py @@ -165,9 +165,15 @@ def get_strava_workouts(rower): w.uploadedtostrava = int(stravaid) w.save() - knownstravaids = uniqify([ + knownstravaids = [ w.uploadedtostrava for w in Workout.objects.filter(user=rower) - ]) + ] + + tombstones = [ + t.uploadedtostrava for t in TombStone.objects.filter(user=rower) + ] + + knownstravaids = uniqify(knownstravaids+tombstones) newids = [stravaid for stravaid in stravaids if not stravaid in knownstravaids] diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index d1090619..46cdd11e 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ