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: