From 45fe8a61810b27514cf15bde9c37b86f5cac2320 Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Wed, 23 Aug 2017 09:55:26 +0200
Subject: [PATCH] workout split works
---
rowers/dataprep.py | 34 +++++++++++++---
rowers/forms.py | 18 +++++++--
rowers/templates/advancedotw.html | 16 +++++++-
rowers/templates/splitworkout.html | 64 +++++++++++++++++++-----------
rowers/views.py | 5 ++-
5 files changed, 102 insertions(+), 35 deletions(-)
diff --git a/rowers/dataprep.py b/rowers/dataprep.py
index 9dfb3e68..d495185a 100644
--- a/rowers/dataprep.py
+++ b/rowers/dataprep.py
@@ -860,20 +860,36 @@ def split_workout(r,parent,splitsecond,splitmode):
ids = []
if 'keep first' in splitmode:
+ if 'secondprivate' in splitmode:
+ setprivate = True
+ else:
+ setprivate = False
+
id,message = new_workout_from_df(r,data1,
title=parent.name+' First Part',
- parent=parent)
+ parent=parent,
+ setprivate=setprivate)
messages.append(message)
ids.append(id)
if 'keep second' in splitmode:
data2['cumdist'] = data2['cumdist'] - data2.ix[0,'cumdist']
data2['distance'] = data2['distance'] - data2.ix[0,'distance']
data2['time'] = data2['time'] - data2.ix[0,'time']
+ if 'secondprivate' in splitmode:
+ setprivate = True
+ else:
+ setprivate = False
+
+ dt = datetime.timedelta(seconds=splitsecond)
+
id,message = new_workout_from_df(r,data2,
title=parent.name+' Second Part',
- parent=parent)
+ parent=parent,
+ setprivate=setprivate,
+ dt=dt)
messages.append(message)
ids.append(id)
+
if not 'keep original' in splitmode:
if 'keep second' in splitmode or 'keep first' in splitmode:
@@ -882,6 +898,9 @@ def split_workout(r,parent,splitsecond,splitmode):
else:
messages.append('That would delete your workout')
ids.append(parent.id)
+ elif 'originalprivate' in splitmode:
+ parent.privacy = 'hidden'
+ parent.save()
return ids,messages
@@ -890,7 +909,9 @@ def split_workout(r,parent,splitsecond,splitmode):
# Currently there is code duplication
def new_workout_from_df(r,df,
title='New Workout',
- parent=None):
+ parent=None,
+ setprivate=False,
+ dt=datetime.timedelta()):
message = None
@@ -902,7 +923,7 @@ def new_workout_from_df(r,df,
notes=parent.notes
summary=parent.summary
makeprivate=parent.privacy
- startdatetime=parent.startdatetime
+ startdatetime=parent.startdatetime+dt
else:
oarlength = 2.89
inboard = 0.88
@@ -912,6 +933,9 @@ def new_workout_from_df(r,df,
makeprivate=False
startdatetime = timezone.now()
+ if setprivate:
+ makeprivate=True
+
timestr = strftime("%Y%m%d-%H%M%S")
csvfilename ='media/df_'+timestr+'.csv'
@@ -921,7 +945,7 @@ def new_workout_from_df(r,df,
starttimeunix = mktime(startdatetime.utctimetuple())
df[' ElapsedTime (sec)'] = df['TimeStamp (sec)']
- print df[' ElapsedTime (sec)'].values
+
df['TimeStamp (sec)'] = df['TimeStamp (sec)']+starttimeunix
row = rrdata(df=df)
diff --git a/rowers/forms.py b/rowers/forms.py
index 59d85ebf..eecde602 100644
--- a/rowers/forms.py
+++ b/rowers/forms.py
@@ -116,14 +116,26 @@ class WorkoutSplitForm(forms.Form):
('keep original','Keep Original'),
('keep first','Keep First Part'),
('keep second','Keep Second Part'),
+ ('firstprivate','Set First Part Private'),
+ ('secondprivate','Set Second Part Private'),
+ ('originalprivate','Set Original Private'),
)
- splittime = forms.TimeField(input_formats=['%H:%M:%S.%f','%H:%M:%S','%M:%S.%f'])
+ splittime = forms.TimeField(input_formats=['%H:%M:%S.%f',
+ '%H:%M:%S',
+ '%H:%M:%S',
+ '%M:%S.%f',
+ '%M:%S',
+ '%M'],
+ label = 'Split Time')
splitmode = forms.MultipleChoiceField(
initial=['keep original',
'keep first',
- 'keep second'],
+ 'keep second',
+ 'firstprivate',
+ 'secondprivate'],
label='Split Mode',
- choices=splitchoices)
+ choices=splitchoices,
+ widget = forms.CheckboxSelectMultiple())
# This form is used on the Analysis page to add a custom distance/time
# trial and predict the pace
diff --git a/rowers/templates/advancedotw.html b/rowers/templates/advancedotw.html
index 3b8ac298..abbccd67 100644
--- a/rowers/templates/advancedotw.html
+++ b/rowers/templates/advancedotw.html
@@ -190,18 +190,30 @@
See (and save) the big interactive plot
-
+
+
+
+ {% if user.rower.rowerplan == 'pro' or user.rower.rowerplan == 'coach' %}
+ Split Workout
+ {% else %}
+ Split Workout
+ {% endif %}
+
+
+ Split workout into two seperate workouts
+
+
diff --git a/rowers/templates/splitworkout.html b/rowers/templates/splitworkout.html
index 3d9b1fda..a264f626 100644
--- a/rowers/templates/splitworkout.html
+++ b/rowers/templates/splitworkout.html
@@ -38,29 +38,8 @@
{% localtime on %}
-
- {% endlocaltime %}
- Workout Split
- Split your workout in half
-
+
+