From d0455a97c031534471b8570daf9b25ec40d8f4b7 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 9 Jan 2018 13:29:37 +0100 Subject: [PATCH 1/7] bug fix in RowerForm cleaning up --- rowers/models.py | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/rowers/models.py b/rowers/models.py index 5e0af42b..0a9a7eda 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -1238,38 +1238,59 @@ class RowerForm(ModelForm): try: rest = self.cleaned_data['rest'] except: - rest = int(self.data['rest']) + try: + rest = int(self.data['rest']) + except ValueError: + rest = 0 try: ut2 = self.cleaned_data['ut2'] except: - ut2 = self.data['ut2'] + try: + ut2 = self.data['ut2'] + except ValueError: + ut2 = 0 try: ut1 = self.cleaned_data['ut1'] except: - ut1 = self.data['ut1'] + try: + ut1 = self.data['ut1'] + except ValueError: + ut1 = 0 try: at = self.cleaned_data['at'] except: - at = self.data['at'] + try: + at = self.data['at'] + except ValueError: + at = 0 try: an = self.cleaned_data['an'] except: - an = self.data['an'] + try: + an = self.data['an'] + except ValueError: + an = 0 try: tr = self.cleaned_data['tr'] except: - tr = self.data['tr'] + try: + tr = self.data['tr'] + except ValueError: + tr = 0 try: max = self.cleaned_data['max'] except: - max = self.data['max'] - + try: + max = self.data['max'] + except ValueError: + max = 0 + if rest>=ut2: raise forms.ValidationError("Resting heart rate should be lower than UT2") if ut2>=ut1: From e8ca3abe20f4ad04fa6787f15f7bc8e8fdc4d997 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Wed, 10 Jan 2018 20:30:43 +0100 Subject: [PATCH 2/7] added messaging on tasks status --- rowers/views.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rowers/views.py b/rowers/views.py index 7fc445ae..1e9abb42 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -4126,7 +4126,7 @@ def otwrankings_view(request,theuser=0, request.session['async_tasks'] += [(job.id,'updatecpwater')] except KeyError: request.session['async_tasks'] = [(job.id,'updatecpwater')] - messages.info(request,'New calculation queued. Refresh page or resubmit the date form to get the result') + messages.info(request,'New calculation queued. Page will reload automatically. You can check the status of your calculations here') powerdf = pd.DataFrame({ 'Delta':delta, @@ -4134,7 +4134,7 @@ def otwrankings_view(request,theuser=0, }) if powerdf.empty: - messages.info(request,'Your calculations are running in the background. Please reload this page.') + messages.info(request,'Your calculations are running in the background. Page will reload automatically. You can check the status of your calculations here') powerdf = powerdf[powerdf['CP']>0] powerdf.dropna(axis=0,inplace=True) @@ -4377,7 +4377,7 @@ def oterankings_view(request,theuser=0, request.session['async_tasks'] += [(job.id,'updatecp')] except KeyError: request.session['async_tasks'] = [(job.id,'updatecp')] - messages.info(request,'New calculation queued.') + messages.info(request,'New calculation queued. Page will reload automatically. You can check the status of your calculations here') powerdf = pd.DataFrame({ 'Delta':delta, @@ -4385,7 +4385,7 @@ def oterankings_view(request,theuser=0, }) if powerdf.empty: - messages.info(request,'Your calculations are running in the background. Please reload this page.') + messages.info(request,'Your calculations are running in the background. Page will reload automatically. You can check the status of your calculations here') powerdf = powerdf[powerdf['CP']>0] powerdf.dropna(axis=0,inplace=True) @@ -6878,7 +6878,7 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""): except KeyError: request.session['async_tasks'] = [(job.id,'otwsetpower')] - successmessage = 'Your calculations have been submitted. You will receive an email when they are done. You can check the status of your calculations here' + successmessage = 'Your calculations have been submitted. You will receive an email when they are done. You can check the status of your calculations here' messages.info(request,successmessage) kwargs = { 'id':int(id)} From ebbbe6f68ad330a9226fc7b2d9a55ecc3364e64e Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 12 Jan 2018 10:45:49 +0100 Subject: [PATCH 3/7] bug fix in otw ranking 2.0 --- rowers/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rowers/views.py b/rowers/views.py index 1e9abb42..c340594a 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -3585,7 +3585,7 @@ def rankings_view2(request,theuser=0, promember=0 if not request.user.is_anonymous(): - r = getrower(theuser) + r = getrower(request.user) wcdurations = [] wcpower = [] From 848c82b3fd0ce14cdeba39ab113e5b8a1d4b6188 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 12 Jan 2018 19:26:52 +0100 Subject: [PATCH 4/7] hotfix define success in cp plot --- rowers/interactiveplots.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 6c465eba..9cde76f4 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -1482,13 +1482,14 @@ def interactive_cpchart(rower,thedistances,thesecs,theavpower, # fitting the data to three parameter CP model - + success = 0 p1 = p0 if len(thesecs)>=4: p1, success = optimize.leastsq(errfunc, p0[:], args = (thesecs,theavpower)) else: factor = fitfunc(p0,thesecs.mean())/theavpower.mean() p1 = [p0[0]/factor,p0[1]/factor,p0[2],p0[3]] + success = 0 # Get stayer score From cad6277ddc4dfd60d8374476f345dcaf88ac07b1 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 12 Jan 2018 19:51:08 +0100 Subject: [PATCH 5/7] typo in remove_asynctask --- rowers/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rowers/views.py b/rowers/views.py index c340594a..b354215b 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -4356,7 +4356,7 @@ def oterankings_view(request,theuser=0, remove_asynctask(request,task['id']) elif 'fail' in task['status'].lower(): runningjob = 0 - remove_asynctask(request,task[id]) + remove_asynctask(request,task['id']) messages.error(request,'Oh, your task failed') elif 'started' in task['status'].lower(): messages.info(request,'Busy updating CP chart data') From 29612adc8ba77d141e433a16d08abeae17c95806 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 14 Jan 2018 20:33:25 +0100 Subject: [PATCH 6/7] small bugfix index in dataprep --- rowers/dataprep.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 6fa013b4..263f9e3e 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -2032,7 +2032,7 @@ def dataprep(rowdatadf, id=0, bands=True, barchart=True, otwpower=True, if barchart: # time increments for bar chart time_increments = rowdatadf.ix[:, ' ElapsedTime (sec)'].diff() - time_increments[0] = time_increments[1] + time_increments.ix[0] = time_increments.ix[1] time_increments = 0.5 * time_increments + 0.5 * np.abs(time_increments) x_right = (t2 + time_increments.apply(lambda x: timedeltaconv(x))) From da4f2e32dcb7217653e1ec59cf3e9eeed42e4c5b Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 16 Jan 2018 15:29:25 +0100 Subject: [PATCH 7/7] fixed unicodedecode error in workout split --- rowers/templates/list_workouts.html | 3 +-- rowers/views.py | 8 +++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/rowers/templates/list_workouts.html b/rowers/templates/list_workouts.html index d82399c7..4a1963a9 100644 --- a/rowers/templates/list_workouts.html +++ b/rowers/templates/list_workouts.html @@ -133,8 +133,7 @@ {% else %} - No Name + No Name {% endif %} {% else %} diff --git a/rowers/views.py b/rowers/views.py index b354215b..5d13e31e 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -10176,7 +10176,13 @@ def workout_split_view(request,id=id): else: url = reverse(workouts_view) - qdict = {'q':row.name} + rowname = row.name + if isinstance(rowname,unicode): + rowname = rowname.encode('utf8') + elif isinstance(rowname, str): + rowname = rowname.decode('utf8') + + qdict = {'q':rowname} url+='?'+urllib.urlencode(qdict) return HttpResponseRedirect(url)