diff --git a/rowers/views/statements.py b/rowers/views/statements.py index 745118e3..e0fdc6f1 100644 --- a/rowers/views/statements.py +++ b/rowers/views/statements.py @@ -33,7 +33,7 @@ from rq.exceptions import NoSuchJobError import threading import redis import colorsys - +import re import zipfile import bleach import arrow diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 9d1f7538..03802078 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -5234,6 +5234,8 @@ def workout_upload_api(request): r = None if form.is_valid(): t = form.cleaned_data['title'] + t = re.sub('\r',' ',t) + t = re.sub('\n',' ',t) boattype = form.cleaned_data['boattype'] workouttype = form.cleaned_data['workouttype'] try: @@ -6701,40 +6703,44 @@ def workout_summary_edit_view(request, id, message="", successmessage="" vals = None # feeling lucky / ruptures if request.method == 'POST' and "ruptures" in request.POST: - df = pd.DataFrame({ - 'spm': rowdata.df[' Cadence (stokes/min)'], - 'power': rowdata.df[' Power (watts)'], - 'v': rowdata.df[' AverageBoatSpeed (m/s)'] - }) - algo = rpt.Pelt(model="rbf").fit(df.values) - result = algo.predict(pen=10) - - df['time'] = rowdata.df['TimeStamp (sec)'].values try: - timeprev = int(df['time'].values[0]) - timenext = int(df['time'].values[result[0]]) - s = '{delta}sec'.format(delta=timenext-timeprev) - except IndexError: # pragma: no cover - s = '0sec' + df = pd.DataFrame({ + 'spm': rowdata.df[' Cadence (stokes/min)'], + 'power': rowdata.df[' Power (watts)'], + 'v': rowdata.df[' AverageBoatSpeed (m/s)'] + }) + algo = rpt.Pelt(model="rbf").fit(df.values) + result = algo.predict(pen=10) + + df['time'] = rowdata.df['TimeStamp (sec)'].values + try: + timeprev = int(df['time'].values[0]) + timenext = int(df['time'].values[result[0]]) + s = '{delta}sec'.format(delta=timenext-timeprev) + except IndexError: # pragma: no cover + s = '0sec' - for i in range(len(result)-1): - timeprev = int(df['time'].values[result[i]-1]) - timenext = int(df['time'].values[result[i+1]-1]) - interval = '+{delta}sec'.format(delta=timenext-timeprev) - s += interval + for i in range(len(result)-1): + timeprev = int(df['time'].values[result[i]-1]) + timenext = int(df['time'].values[result[i+1]-1]) + interval = '+{delta}sec'.format(delta=timenext-timeprev) + s += interval - try: - rowdata.updateinterval_string(s) - except: # pragma: no cover + try: + rowdata.updateinterval_string(s) + except: # pragma: no cover + messages.error(request, "Nope, you were not lucky") + + intervalstats = rowdata.allstats() + itime, idist, itype = rowdata.intervalstats_values() + nrintervals = len(idist) + savebutton = 'savestringform' + intervalString = s + form = SummaryStringForm(initial={'intervalstring': intervalString}) + + except KeyError: messages.error(request, "Nope, you were not lucky") - intervalstats = rowdata.allstats() - itime, idist, itype = rowdata.intervalstats_values() - nrintervals = len(idist) - savebutton = 'savestringform' - intervalString = s - form = SummaryStringForm(initial={'intervalstring': intervalString}) - # We have submitted the mini language interpreter if request.method == 'POST' and "intervalstring" in request.POST: form = SummaryStringForm(request.POST)