diff --git a/rowers/management/commands/processemail.py b/rowers/management/commands/processemail.py
index 9b166bc1..bcb27787 100644
--- a/rowers/management/commands/processemail.py
+++ b/rowers/management/commands/processemail.py
@@ -72,6 +72,7 @@ def processattachment(rower, fileobj, title, uploadoptions,testing=False):
workout = Workout.objects.get(id=workoutid[0])
uploads.do_sync(workout, uploadoptions)
uploads.make_private(workout, uploadoptions)
+ uploads.set_workouttype(workout, uploadoptions)
if 'make_plot' in uploadoptions:
plottype = uploadoptions['plottype']
workoutcsvfilename = workout.csvfilename[6:-4]
diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py
index b11fab3b..1ba59a54 100644
--- a/rowers/plannedsessions.py
+++ b/rowers/plannedsessions.py
@@ -369,13 +369,13 @@ def get_sessions_manager(m,teamid=0,startdate=date.today(),
manager=m,
startdate__lte=enddate,
enddate__gte=startdate,
- ).order_by("startdate","preferreddate","enddate")
+ ).order_by("preferreddate","startdate","enddate")
else:
sps = PlannedSession.objects.filter(
manager=m,
startdate__lte=enddate,
enddate__gte=startdate,
- ).order_by("startdate","preferreddate","enddate")
+ ).order_by("preferreddate","startdate","enddate")
return sps
@@ -386,7 +386,7 @@ def get_sessions(r,startdate=date.today(),
rower__in=[r],
startdate__lte=enddate,
enddate__gte=startdate,
- ).order_by("startdate","preferreddate","enddate")
+ ).order_by("preferreddate","startdate","enddate")
return sps
diff --git a/rowers/templates/plannedsessionscoach.html b/rowers/templates/plannedsessionscoach.html
index 2217824c..170de818 100644
--- a/rowers/templates/plannedsessionscoach.html
+++ b/rowers/templates/plannedsessionscoach.html
@@ -35,15 +35,15 @@
Last Week
+ href="/rowers/sessions/coach/lastmonth">
Last Month
+ href="/rowers/sessions/coach/nextweek">
Next Week
+ href="/rowers/sessions/coach/nextmonth">
Next Month
@@ -81,6 +81,7 @@
| On or after |
On or before |
+ Preferred date |
Name |
{% for r in rowers %}
@@ -90,7 +91,7 @@
|
- {% for key, thedict in statusdict.items %}
+ {% for thedict in statusdict %}
|
{{ thedict|lookup:'startdate'|date:"Y-m-d" }}
@@ -99,7 +100,10 @@
{{ thedict|lookup:'enddate'|date:"Y-m-d" }}
|
-
+ {{ thedict|lookup:'preferreddate'|date:"Y-m-d" }}
+ |
+
+
{% if thedict|lookup:'name' %}
{{ thedict|lookup:'name' }}
{% else %}
@@ -111,18 +115,18 @@
|
{% if thedict|lookup:'results'|lookup:r.id == 'completed' %}
+ href="{% url 'plannedsession_view' id=thedict|lookup:"id" rowerid=r.id %}">
{% elif thedict|lookup:'results'|lookup:r.id == 'partial' %}
+ href="{% url 'plannedsession_view' id=thedict|lookup:"id" rowerid=r.id %}">
{% elif thedict|lookup:'results'|lookup:r.id == 'not done' %}
+ href="/rowers/sessions/manage/{{ timeperiod }}/rower/{{ r.id }}/session/{{ thedict|lookup:"id" }}">
{% elif thedict|lookup:'results'|lookup:r.id == 'not assigned' %}
{% else %}
+ href="/rowers/sessions/manage/{{ timeperiod }}/rower/{{ r.id }}/session/{{ thedict|lookup:"id" }}">
{% endif %}
|
{% endfor %}
diff --git a/rowers/tests.py b/rowers/tests.py
index 0e6df0f0..5fd5288b 100644
--- a/rowers/tests.py
+++ b/rowers/tests.py
@@ -362,7 +362,11 @@ class EmailTests(TestCase):
from_header = u.email,
subject = filename,
body="""
- chart time
+---
+chart: time
+workouttype: water
+boattype: 4x
+...
""")
m.save()
a2 = 'media/mailbox_attachments/'+filename
diff --git a/rowers/uploads.py b/rowers/uploads.py
index 02ac1837..a5a4fc61 100644
--- a/rowers/uploads.py
+++ b/rowers/uploads.py
@@ -27,6 +27,8 @@ queue = django_rq.get_queue('default')
queuelow = django_rq.get_queue('low')
queuehigh = django_rq.get_queue('low')
+from types import workouttypes,boattypes
+
try:
from cStringIO import StringIO
except:
@@ -96,6 +98,29 @@ def matchsync(line):
return results
+def gettypeoptions_body2(uploadoptions,body):
+ tester = re.compile('^(workout)')
+ testerb = re.compile('^(boat)')
+ for line in body.splitlines():
+ if tester.match(line.lower()):
+ for typ,verb in workouttypes:
+ str1 = '^(workout)(.*)({a})'.format(
+ a = typ
+ )
+ testert = re.compile(str1)
+ if testert.match(line.lower()):
+ uploadoptions['workouttype'] = typ
+ if testerb.match(line.lower()):
+ for typ,verb in boattypes:
+ str1 = '^(boat)(.*)({a})'.format(
+ a = typ
+ )
+ testert = re.compile(str1)
+ if testert.match(line.lower()):
+ uploadoptions['boattype'] = typ
+
+ return uploadoptions
+
def getprivateoptions_body2(uploadoptions,body):
tester = re.compile('^(priva)')
for line in body.splitlines():
@@ -181,6 +206,32 @@ def getplotoptions(uploadoptions,value):
return uploadoptions
+
+def gettype(uploadoptions,value,key):
+ workouttype = 'rower'
+ for type,verb in workouttypes:
+ if value == type:
+ workouttype = type
+ if value == verb:
+ workouttype = type
+
+ uploadoptions[key] = workouttype
+
+ return uploadoptions
+
+def getboattype(uploadoptions,value,key):
+ boattype = '1x'
+ for type,verb in boattypes:
+ if value == type:
+ boattype = type
+ if value == verb:
+ boattype = type
+
+ uploadoptions[key] = boattype
+
+ return uploadoptions
+
+
def getboolean(uploadoptions,value,key):
b = True
if not value:
@@ -208,6 +259,10 @@ def upload_options(body):
uploadoptions = getplotoptions(uploadoptions,value)
if 'priva' in lowkey:
uploadoptions = getboolean(uploadoptions,value,'makeprivate')
+ if 'workout' in lowkey:
+ uploadoptions = gettype(uploadoptions,value,'workouttype')
+ if 'boat' in lowkey:
+ uploadoptions = getboattype(uploadoptions,value,'boattype')
except AttributeError:
#pass
raise yaml.YAMLError
@@ -216,6 +271,7 @@ def upload_options(body):
uploadoptions = getplotoptions_body2(uploadoptions,body)
uploadoptions = getsyncoptions_body2(uploadoptions,body)
uploadoptions = getprivateoptions_body2(uploadoptions,body)
+ typeoptions = gettypeoptions_body2(uploadoptions,body)
except IOError:
pm = exc.problem_mark
strpm = str(pm)
@@ -296,6 +352,20 @@ def make_plot(r,w,f1,f2,plottype,title,imagename='',plotnr=0):
import c2stuff,stravastuff,sporttracksstuff,runkeeperstuff
import underarmourstuff,tpstuff
+def set_workouttype(w,options):
+ try:
+ w.workouttype = options['workouttype']
+ w.save()
+ except KeyError:
+ pass
+ try:
+ w.boattype = options['boattype']
+ w.save()
+ except KeyError:
+ pass
+
+ return 1
+
def make_private(w,options):
if 'makeprivate' in options and options['makeprivate']:
w.privacy = 'hidden'
diff --git a/rowers/views.py b/rowers/views.py
index c75f965f..07be1758 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -12554,7 +12554,7 @@ def plannedsessions_coach_view(request,timeperiod='thisweek',
rowers = list(set(rowers))
- statusdict = {}
+ statusdict = []
for ps in sps:
rowerstatus = {}
@@ -12562,12 +12562,14 @@ def plannedsessions_coach_view(request,timeperiod='thisweek',
ratio, status,completiondate = is_session_complete(r,ps)
rowerstatus[r.id] = status
sessiondict = {
+ 'id': ps.id,
'results':rowerstatus,
'name': ps.name,
'startdate': ps.startdate,
+ 'preferreddate': ps.preferreddate,
'enddate': ps.enddate,
}
- statusdict[ps.id] = sessiondict
+ statusdict.append(sessiondict)
unmatchedworkouts = []
for r in rowers: