diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 4f62e80d..ab3bdd13 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -83,7 +83,7 @@ queuelow = django_rq.get_queue('low') queuehigh = django_rq.get_queue('default') from rowsandall_app.settings import SITE_URL -from rowers.mytypes import otwtypes +from rowers.mytypes import otwtypes,otetypes from rowers.database import * from rowers.opaque import encoder @@ -998,6 +998,8 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', if dosummary: summary = row.allstats() + + timezone_str = 'UTC' try: workoutstartdatetime = timezone.make_aware(row.rowdatetime) @@ -1050,6 +1052,9 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', maxhr = np.nan_to_num(maxhr) averagehr = np.nan_to_num(averagehr) + dragfactor = 0 + if workouttype in otetypes: + dragfactor = row.dragfactor t = datetime.datetime.strptime(duration,"%H:%M:%S.%f") delta = datetime.timedelta(hours=t.hour, minutes=t.minute, seconds=t.second) @@ -1079,6 +1084,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', w = Workout(user=r, name=title, date=workoutdate, workouttype=workouttype, boattype=boattype, + dragfactor=dragfactor, duration=duration, distance=totaldist, weightcategory=weightcategory, adaptiveclass=adaptiveclass, diff --git a/rowers/models.py b/rowers/models.py index 2f8c8844..1201fdd6 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2536,6 +2536,7 @@ class Workout(models.Model): max_length=100) distance = models.IntegerField(default=0,blank=True) duration = models.TimeField(default=1,blank=True) + dragfactor = models.IntegerField(default=0,blank=True) trimp = models.IntegerField(default=-1,blank=True) rscore = models.IntegerField(default=-1,blank=True) hrtss = models.IntegerField(default=-1,blank=True) @@ -2960,6 +2961,7 @@ class WorkoutForm(ModelForm): 'distance', 'workouttype', 'boattype', + 'dragfactor', 'weightcategory', 'adaptiveclass', 'notes', diff --git a/rowers/templates/workout_form.html b/rowers/templates/workout_form.html index 047a8a2c..40346ee1 100644 --- a/rowers/templates/workout_form.html +++ b/rowers/templates/workout_form.html @@ -32,7 +32,18 @@ $( document ).ready(function() { } else { $('#id_boattype').toggle(false); $('#id_boattype').val('1x'); - } +} + if ( + $(this).val() == 'rower' + || $(this).val() == 'dynamic' + || $(this).val() == 'slides' + ) { + $('#id_dragfactor').toggle(true); + } else { + $('#id_dragfactor').toggle(false); + $('#id_dragfactor').val('0'); +} + }); $('#id_workouttype').change(); }); diff --git a/rowers/tests/test_uploads.py b/rowers/tests/test_uploads.py index b691dcb7..27264a58 100644 --- a/rowers/tests/test_uploads.py +++ b/rowers/tests/test_uploads.py @@ -100,6 +100,7 @@ class ViewTest(TestCase): 'adaptiveclass':'PR1', 'workouttype':'rower', 'boattype':'1x', + 'dragfactor':'112', 'private':True, 'notes':'noot mies', } diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index f6dfa2b2..c1c85bf9 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index d5ca9e42..c95cfdda 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -3345,6 +3345,7 @@ def workout_edit_view(request,id=0,message="",successmessage=""): distance = form.cleaned_data['distance'] private = form.cleaned_data['private'] notes = form.cleaned_data['notes'] + newdragfactor = form.cleaned_data['dragfactor'] thetimezone = form.cleaned_data['timezone'] try: @@ -3416,6 +3417,11 @@ def workout_edit_view(request,id=0,message="",successmessage=""): row.timezone = thetimezone row.plannedsession = ps + dragchanged = False + if newdragfactor != row.dragfactor: + row.dragfactor = newdragfactor + dragchanged = True + try: row.save() except IntegrityError: @@ -3427,6 +3433,12 @@ def workout_edit_view(request,id=0,message="",successmessage=""): # change data in csv file r = rdata(row.csvfilename) + if dragchanged: + try: + r.change_drag(newdragfactor) + except AttributeError: + pass + if r == 0: return HttpResponse("Error: CSV Data File Not Found") r.rowdatetime = startdatetime