From 8f060ed5bb4dd51e1c4c260cd456d50a63394b16 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 18 Jul 2023 22:24:10 +0200 Subject: [PATCH] more refactorgoodies --- rowers/integrations/integrations.py | 2 +- rowers/integrations/nk.py | 13 +++--------- rowers/models.py | 28 ++++++++++++++++++++------ rowers/tests/testdata/testdata.tcx.gz | Bin 4001 -> 4001 bytes 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/rowers/integrations/integrations.py b/rowers/integrations/integrations.py index 87aa1661..98de0b2e 100644 --- a/rowers/integrations/integrations.py +++ b/rowers/integrations/integrations.py @@ -1,6 +1,6 @@ from abc import ABCMeta, ABC, abstractmethod from importlib import import_module -from rowers.models import Rower, User +from rowers.models import Rower, User, create_or_update_syncrecord from rowers.utils import NoTokenError,dologging import requests diff --git a/rowers/integrations/nk.py b/rowers/integrations/nk.py index 3c95729c..fc22d965 100644 --- a/rowers/integrations/nk.py +++ b/rowers/integrations/nk.py @@ -1,5 +1,5 @@ -from .integrations import SyncIntegration, NoTokenError -from rowers.models import User, Rower, Workout, TombStone, SyncRecord +from .integrations import SyncIntegration, NoTokenError, create_or_update_syncrecord +from rowers.models import User, Rower, Workout, TombStone from django.db.utils import IntegrityError from rowers import mytypes @@ -91,14 +91,7 @@ class NKIntegration(SyncIntegration): _ = self.open() r = self.rower - record = SyncRecord( - rower = r, - nkid = id, - ) - try: - record.save() - except IntegrityError: - return 0 + record = create_or_update_syncrecord(rower, None, nkid=id) before = kwargs.get('before',0) after = kwargs.get('after',0) diff --git a/rowers/models.py b/rowers/models.py index bacd03db..90156ac5 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -3632,12 +3632,6 @@ class SyncRecord(models.Model): return super(SyncRecord, self).save(*args, **kwargs) def create_or_update_syncrecord(rower, workout, **kwargs): - records = SyncRecord.objects.filter(workout=workout,rower=rower) - if records.count(): - record = records[0] - else: - record = SyncRecord(workout=workout, rower=rower) - try: kwargs.pop('rower') except KeyError: @@ -3648,14 +3642,36 @@ def create_or_update_syncrecord(rower, workout, **kwargs): except KeyError: pass + if workout: + records = SyncRecord.objects.filter(workout=workout,rower=rower) + if records.count(): + record = records[0] + else: + records = SyncRecord.objects.filter(**kwargs,rower=rower) + if records.count(): + record = records[0] + record.workout = workout + else: + record = SyncRecord(rower=rower, workout=workout) + + else: # not workout + records = SyncRecord.objects.filter(**kwargs, rower=rower) + if records.count(): + record = records[0] + else: + record = SyncRecord(rower=rower) + + for field in record._meta.fields: value = kwargs.get(field.name, None) if value: + print(field.name, value) setattr(record, field.name, value) try: record.save() except IntegrityError: + print('err') pass return record diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index f59a6ec8044d9be569ee477e364abab39cca2427..06c68648b7319e7de13ea9391e1885bc6c0f5631 100644 GIT binary patch delta 3942 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 AvH$=8 delta 3942 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