From 779a07c96ba8f6a7873419998611f5ae6fc87a9f Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 14 Nov 2018 09:50:38 +0100 Subject: [PATCH] duplicates concept --- rowers/.#models.py | 1 + rowers/dataprep.py | 30 ++++++++++++++++++++++++------ rowers/models.py | 3 ++- rowers/views.py | 6 ++++++ 4 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 rowers/.#models.py diff --git a/rowers/.#models.py b/rowers/.#models.py new file mode 100644 index 00000000..11d1b7d9 --- /dev/null +++ b/rowers/.#models.py @@ -0,0 +1 @@ +E408191@CZ27LT9RCGN72.21348:1542056188 \ No newline at end of file diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 7d12f7f7..2b023b68 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -999,13 +999,30 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', maxhr = np.nan_to_num(maxhr) averagehr = np.nan_to_num(averagehr) + duplicate = True + + t = datetime.datetime.strptime(duration,"%H:%M:%S.%f") + delta = datetime.timedelta(hours=t.hour, minutes=t.minute, seconds=t.second) + + workoutenddatetime = workoutstartdatetime+delta + # check for duplicate start times and duration - ws = Workout.objects.filter(startdatetime=workoutstartdatetime, - distance=totaldist, - user=r) - if (len(ws) != 0): - message = "Warning: This workout probably already exists in the database" - privacy = 'hidden' + ws = Workout.objects.filter(user=r,date=workoutdate).exclude( + startdatetime__gt=workoutenddatetime + ) + + ws2 = [] + + for ww in ws: + t = ww.duration + delta = datetime.timedelta(hours=t.hour, minutes=t.minute, seconds=t.second) + enddatetime = ww.startdatetime+delta + if enddatetime > workoutstartdatetime: + ws2.append(ww) + + if (len(ws2) != 0): + message = "Warning: This workout overlaps with an existing one and was marked as a duplicate" + duplicate = True w = Workout(user=r, name=title, date=workoutdate, @@ -1014,6 +1031,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', duration=duration, distance=totaldist, weightcategory=r.weightcategory, starttime=workoutstarttime, + duplicate=duplicate, workoutsource=workoutsource, rankingpiece=rankingpiece, forceunit=forceunit, diff --git a/rowers/models.py b/rowers/models.py index f628078f..008f8329 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2134,6 +2134,7 @@ class Workout(models.Model): privacy = models.CharField(default='visible',max_length=30, choices=privacychoices) rankingpiece = models.BooleanField(default=False,verbose_name='Ranking Piece') + duplicate = models.BooleanField(default=False,verbose_name='Duplicate Workout') def __unicode__(self): @@ -2404,7 +2405,7 @@ class WorkoutForm(ModelForm): # duration = forms.TimeInput(format='%H:%M:%S.%f') class Meta: model = Workout - fields = ['name','date','starttime','timezone','duration','distance','workouttype','boattype','weightcategory','notes','rankingpiece'] + fields = ['name','date','starttime','timezone','duration','distance','workouttype','boattype','weightcategory','notes','rankingpiece','duplicate'] widgets = { 'date': AdminDateWidget(), 'notes': forms.Textarea, diff --git a/rowers/views.py b/rowers/views.py index 283703fc..18461b6f 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -3380,6 +3380,11 @@ def addmanual_view(request): rankingpiece = form.cleaned_data['rankingpiece'] except KeyError: rankingpiece = False + + try: + duplicate = form.cleaned_data['duplicate'] + except KeyError: + duplicate = False if private: privacy = 'private' @@ -3403,6 +3408,7 @@ def addmanual_view(request): avghr=avghr, rankingpiece=rankingpiece, avgpwr=avgpwr, + duplicate=duplicate, avgspm=avgspm, title = name, notes=notes,