diff --git a/.coveragerc b/.coveragerc index 29245f10..744c334d 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,15 +1,3 @@ -[run] -include = - ./* -omit = - *tests* - *migrations* - *cvkbrno* - */py2/* - */venv/* - *__init__* [report] -exclude_lines = - pragma: no cover - if __name__ == .__main__.: - +show_missing = True +omit = py39/* \ No newline at end of file diff --git a/rowers/integrations/rp3.py b/rowers/integrations/rp3.py index fba8b4e2..6e5b3467 100644 --- a/rowers/integrations/rp3.py +++ b/rowers/integrations/rp3.py @@ -1,4 +1,4 @@ -from .integrations import SyncIntegration, NoTokenError +from .integrations import SyncIntegration, NoTokenError, create_or_update_syncrecord, get_known_ids from rowers.models import User, Rower, Workout, TombStone from rowers.tasks import handle_rp3_async_workout @@ -100,6 +100,8 @@ class RP3Integration(SyncIntegration): startdatetime = kwargs.get('startdatetime', None) if not startdatetime: startdatetime = str(timezone.now()) + + record = create_or_update_syncrecord(self.rower, None, rp3id=id) auth_token = self.open() _ = myqueue( @@ -172,9 +174,7 @@ class RP3Integration(SyncIntegration): workouts_list = pd.json_normalize(workouts_json['data']['workouts']) - knownrp3ids = uniqify([ - w.uploadedtorp3 for w in Workout.objects.filter(user=r) - ]) + knownrp3ids = get_known_ids(r, 'rp3id') workouts = [] diff --git a/rowers/integrations/sporttracks.py b/rowers/integrations/sporttracks.py index 9b4de159..d004b4f4 100644 --- a/rowers/integrations/sporttracks.py +++ b/rowers/integrations/sporttracks.py @@ -1,4 +1,4 @@ -from .integrations import SyncIntegration, NoTokenError +from .integrations import SyncIntegration, NoTokenError, create_or_update_syncrecord, get_known_ids from rowers.models import User, Rower, Workout, TombStone from rowingdata import rowingdata @@ -238,9 +238,7 @@ class SportTracksIntegration(SyncIntegration): stids = [int(getidfromuri(item['uri'])) for item in workouts_json['items']] - knownstids = uniqify([ - w.uploadedtosporttracks for w in Workout.objects.filter(user=r) - ]) + knownstids = get_known_ids(r, 'sporttracksid') newids = [stid for stid in stids if stid not in knownstids] for sporttracksid in newids: id = self.get_workout(sporttracksid) @@ -254,6 +252,7 @@ class SportTracksIntegration(SyncIntegration): r = self.rower + record = create_or_update_syncrecord(r, None, sporttracksid=id) job = myqueue( queue, @@ -289,9 +288,8 @@ class SportTracksIntegration(SyncIntegration): workouts = [] - knownstids = uniqify([ - w.uploadedtosporttracks for w in Workout.objects.filter(user=r) - ]) + knownstids = get_known_ids(r, 'sporttracksid') + for item in workouts_json['items']: d = int(float(item['total_distance'])) i = int(getidfromuri(item['uri'])) diff --git a/rowers/integrations/strava.py b/rowers/integrations/strava.py index 6f99af05..068ff07d 100644 --- a/rowers/integrations/strava.py +++ b/rowers/integrations/strava.py @@ -1,4 +1,4 @@ -from .integrations import SyncIntegration, NoTokenError +from .integrations import SyncIntegration, NoTokenError, create_or_update_syncrecord, get_known_ids from rowers.models import User, Rower, Workout, TombStone from rowingdata import rowingdata @@ -212,6 +212,8 @@ class StravaIntegration(SyncIntegration): except NoTokenError("Strava error"): return 0 + record = create_or_update_syncrecord(self.rower, None, stravaid=id) + csvfilename = 'media/{code}_{id}.csv'.format( code=uuid4().hex[:16], id=id) job = myqueue(queue, @@ -279,9 +281,7 @@ class StravaIntegration(SyncIntegration): w.uploadedtostrava = int(stravaid) w.save() - knownstravaids = uniqify([ - w.uploadedtostrava for w in Workout.objects.filter(user=self.rower) - ]) + knownstravaids = get_known_ids(self.rower,'stravaid') for item in res.json(): d = int(float(item['distance'])) diff --git a/rowers/models.py b/rowers/models.py index 661f33b4..4d66ab55 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -3625,6 +3625,7 @@ class SyncRecord(models.Model): nkid = models.BigIntegerField(unique=True,null=True,default=None) c2id = models.BigIntegerField(unique=True,null=True,default=None) tpid = models.BigIntegerField(unique=True,null=True,default=None) + rp3id = models.BigIntegerField(unique=True,null=True,default=None) def save(self, *args, **kwargs): if self.workout: diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 568f08b7..f2afd590 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ diff --git a/rowers/uploads.py b/rowers/uploads.py index 960a4e0d..15210848 100644 --- a/rowers/uploads.py +++ b/rowers/uploads.py @@ -142,6 +142,7 @@ def do_sync(w, options, quick=False): # upload_to_strava = False do_strava_export = False w.save() + record = create_or_update_syncrecord(w.user, w, {stravaid:options['stravaid']}) except KeyError: pass @@ -192,6 +193,7 @@ def do_sync(w, options, quick=False): if options['rp3id'] != 0 and options['rp3id'] != '': # pragma: no cover w.uploadedtorp3 = options['rp3id'] w.save() + record = create_or_update_syncrecord(w.user, w, {rp3id:options['rp3id']}) except KeyError: pass @@ -242,6 +244,7 @@ def do_sync(w, options, quick=False): w.uploadedtosporttracks = sporttracksid w.save() do_st_export = False + record = create_or_update_syncrecord(w.user, w, {'sporttracksid':sporttracksid}) try: # pragma: no cover upload_to_st = options['upload_to_SportTracks'] or do_st_export do_st_export = upload_to_st