Private
Public Access
1
0

refactor, stage 1

This commit is contained in:
2023-07-18 17:38:34 +02:00
parent 1e267b0c69
commit d8accd0be8
6 changed files with 43 additions and 29 deletions

View File

@@ -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, SyncRecord
from rowers.utils import NoTokenError,dologging
import requests
@@ -267,3 +267,4 @@ class SyncIntegration(metaclass=ABCMeta):
return access_token

View File

@@ -3631,6 +3631,35 @@ class SyncRecord(models.Model):
self.rower = self.workout.user
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:
pass
try:
kwargs.pop('workout')
except KeyError:
pass
for field in record._meta.fields:
value = kwargs.get(field.name, None)
if value:
setattr(record, field.name, value)
try:
record.save()
except IntegrityError:
pass
return record

View File

@@ -15,7 +15,7 @@ application = get_wsgi_application()
from rowers.models import (
Workout, GeoPolygon, GeoPoint, GeoCourse,
VirtualRaceResult, CourseTestResult, Rower,
GraphImage, SyncRecord
GraphImage
)
import math
@@ -35,6 +35,7 @@ import arrow
import rowers.longtask as longtask
import requests
import rowers.datautils as datautils
from rowers.models import create_or_update_syncrecord
""" Background tasks done by QR (production) """
import time
@@ -523,8 +524,8 @@ def handle_c2_sync(workoutid, url, headers, data, debug=False, **kwargs):
workout.uploadedtoc2 = c2id
workout.save()
record = SyncRecord(workout=workout,c2id=c2id)
record.save()
record = create_or_update_syncrecord(workout.user, workout, c2id=c2id)
return 1
@@ -3409,19 +3410,7 @@ def handle_nk_async_workout(alldata, userid, nktoken, nkid, delaysec, defaulttim
workout = Workout.objects.get(id=workoutid)
newnkid = workout.uploadedtonk
sr = SyncRecord.objects.filter(nkid=newnkid)
if len(sr):
sr[0].workout = workout
try:
sr[0].save()
except IntegrityError:
pass
else:
sr = SyncRecord(workout=workout,nkid=newnkid)
try:
sr.save()
except IntegrityError:
pass
sr = create_or_update_syncrecord(workout.user, workout, nkid=newnkid)
return workoutid
@@ -3696,7 +3685,7 @@ def handle_c2_async_workout(alldata, userid, c2token, c2id, delaysec,
workout = Workout.objects.get(id=workoutid)
newc2id = workout.uploadedtoc2
record = SyncRecord(workout=workout,c2id=newc2id)
record = create_or_update_syncrecord(workout.user, workout, c2id=newc2id)
# set distance, time

Binary file not shown.

View File

@@ -10,6 +10,7 @@ from rowers.utils import (
# for actions related to uploads
from django.conf import settings
from django.utils import timezone, translation
from rowers.tasks import (
handle_sendemail_unrecognized, handle_sendemailnewcomment,
handle_sendemailnewresponse, handle_updatedps,
@@ -17,7 +18,7 @@ from rowers.tasks import (
handle_sendemailcsv
)
from rowers.models import GraphImage, SyncRecord
from rowers.models import GraphImage, create_or_update_syncrecord
from rowers.rower_rules import ispromember
from rowers.utils import dologging
@@ -148,11 +149,7 @@ def do_sync(w, options, quick=False):
if options['nkid'] != 0 and options['nkid'] != '': # pragma: no cover
w.uploadedtonk = options['nkid']
w.save()
record = SyncRecord(workout=w,nkid=options['nkid'])
try:
record.save()
except:
pass
record = create_or_update_syncrecord(w.user, w, {nkid:options['nkid']})
except KeyError:
pass
@@ -187,11 +184,7 @@ def do_sync(w, options, quick=False):
# upload_to_c2 = False
do_c2_export = False
w.save()
record = SyncRecord(workout=w,c2id=options['c2id'])
try:
record.save()
except:
pass
record = create_or_update_syncrecord(w.user, w, {c2id:options['c2id']})
except KeyError:
pass

View File

@@ -1388,3 +1388,5 @@ def get_startdatetime_from_c2data(data):
).strftime('%H:%M:%S')
return startdatetime, starttime, workoutdate, duration, starttimeunix, timezone