From af5ffe7b0d319bf4eec3f89154d00fd97bbf0d37 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 29 Mar 2019 13:57:49 +0100 Subject: [PATCH] adding tombstones --- rowers/c2stuff.py | 11 +++++++++-- rowers/models.py | 22 +++++++++++++++++++++- rowers/stravastuff.py | 10 ++++++++-- rowers/tests/testdata/testdata.csv.gz | Bin 12534 -> 12534 bytes 4 files changed, 38 insertions(+), 5 deletions(-) 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 d1090619540da3160cc9445ff7f26479e2d56f34..46cdd11e466d4cdd6331711c9be59a2876cac02b 100644 GIT binary patch delta 16 XcmeyC_$`rLzMF%iM0DOp_V)$=I>rWW delta 16 XcmeyC_$`rLzMF%C)o0d5_V)$=IP(TF