diff --git a/rowers/forms.py b/rowers/forms.py index e4b3f4b8..faa5d108 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -605,20 +605,21 @@ class FusionMetricChoiceForm(ModelForm): class PlannedSessionSelectForm(forms.Form): def __init__(self, sessionchoices, *args, **kwargs): - + initialsession = kwargs.pop('initialsession',None) super(PlannedSessionSelectForm, self).__init__(*args,**kwargs) self.fields['plannedsession'] = forms.ChoiceField( label='Sessions', choices = sessionchoices, widget = forms.RadioSelect, + initial=initialsession ) class WorkoutSessionSelectForm(forms.Form): def __init__(self, workoutdata, *args, **kwargs): - + super(WorkoutSessionSelectForm, self).__init__(*args, **kwargs) self.fields['workouts'] = forms.MultipleChoiceField( diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index 1b907f7c..caca9821 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -105,19 +105,17 @@ def is_session_complete(r,ps): elif ps.sessionunit == 'km': value *= 1000. - print score,value,ps.sessionvalue,ps.sessionunit - ratio = score/float(value) status = 'partial' - if ps.sessiontype == 'training': - if ps.sessioncriterium == 'exact': + if ps.sessiontype == 'session': + if ps.criterium == 'exact': if ratio == 1.0: return ratio,'completed' else: return ratio,'partial' - elif ps.sessioncriterium == 'minimum': + elif ps.criterium == 'minimum': if ratio > 1.0: return ratio,'completed' else: @@ -133,12 +131,12 @@ def is_session_complete(r,ps): else: return ratio,'partial' elif ps.sessiontype == 'challenge': - if ps.sessioncriterium == 'exact': + if ps.criterium == 'exact': if ratio == 1.0: return ratio,'completed' else: return ratio,'partial' - elif ps.sessioncriterium == 'minimum': + elif ps.criterium == 'minimum': if ratio > 1.0: return ratio,'completed' else: diff --git a/rowers/templates/plannedsessionsmanage.html b/rowers/templates/plannedsessionsmanage.html index 02875894..4d19dca9 100644 --- a/rowers/templates/plannedsessionsmanage.html +++ b/rowers/templates/plannedsessionsmanage.html @@ -4,6 +4,18 @@ {% block title %}Planned Sessions{% endblock %} +{% block meta %} + + + +{% endblock %} + + {% block content %}
{% include "planningbuttons.html" %} @@ -72,3 +84,22 @@ {% endblock %} + +{% block scripts %} + + +{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index 5f9238b1..153b2b54 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -401,6 +401,17 @@ urlpatterns = [ url(r'^sessions/(?P\d+)$',views.plannedsession_view), url(r'^sessions/(?P\d+)/deleteconfirm$',views.plannedsession_deleteconfirm_view), url(r'^sessions/(?P\d+)/delete$',views.plannedsession_delete_view), + + url(r'^sessions/manage/session/(?P\d+)$', + views.plannedsessions_manage_view), + url(r'^sessions/manage/rower/(?P\d+)/session/(?P\d+)$', + views.plannedsessions_manage_view), + url(r'^sessions/manage/(?P[\w\ ]+.*)/rower/(?P\d+)/session/(?P\d+)$', + views.plannedsessions_manage_view), + url(r'^sessions/manage/(?P[\w\ ]+.*)/session/(?P\d+)$', + views.plannedsessions_manage_view), + + url(r'^sessions/manage/?$', views.plannedsessions_manage_view), url(r'^sessions/manage/rower/(?P\d+)$', diff --git a/rowers/views.py b/rowers/views.py index e4921eb3..411bcb64 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -11724,6 +11724,11 @@ def plannedsession_create_view(request): comment = cd['comment'] name = cd['name'] + if sessionunit == 'min': + sessionmode = 'time' + elif sessionunit in ['km','m']: + sessionmode = 'distance' + ps = PlannedSession( name=name, startdate=startdate, @@ -11786,7 +11791,12 @@ def plannedsessions_view(request,timeperiod='today',rowerid=0): }) @login_required() -def plannedsessions_manage_view(request,timeperiod='today',rowerid=0): +def plannedsessions_manage_view(request,timeperiod='today',rowerid=0, + initialsession=0): + + is_ajax = False + if request.is_ajax(): + is_ajax = True if rowerid==0: r = getrower(request.user) @@ -11799,10 +11809,12 @@ def plannedsessions_manage_view(request,timeperiod='today',rowerid=0): raise Http404("You don't have access to this plan") startdate,enddate = get_dates_timeperiod(timeperiod) - - - + sps = get_sessions(r,startdate=startdate,enddate=enddate) + if initialsession==0: + initialsession=sps[0].id + + ps0 = PlannedSession.objects.get(id=initialsession) ws = Workout.objects.filter( user=r,date__gte=startdate, @@ -11812,6 +11824,8 @@ def plannedsessions_manage_view(request,timeperiod='today',rowerid=0): ) + initialworkouts = [w.id for w in Workout.objects.filter(user=r,plannedsession=ps0)] + plannedsessionstuple = [] for ps in sps: @@ -11828,6 +11842,8 @@ def plannedsessions_manage_view(request,timeperiod='today',rowerid=0): for w in ws: wtpl = (w.id, w.__unicode__()) choices.append(wtpl) + if w.id in initialworkouts: + workoutdata['initial'].append(w.id) workoutdata['choices'] = tuple(choices) @@ -11856,8 +11872,25 @@ def plannedsessions_manage_view(request,timeperiod='today',rowerid=0): messages.error(request,er) - ps_form = PlannedSessionSelectForm(plannedsessionstuple) + ps_form = PlannedSessionSelectForm(plannedsessionstuple, + initialsession=initialsession) w_form = WorkoutSessionSelectForm(workoutdata=workoutdata) + + + if is_ajax: + ajax_workouts = [] + for id,name in workoutdata['choices']: + if id in initialworkouts: + ajax_workouts.append((id,name,True)) + else: + ajax_workouts.append((id,name,False)) + + ajax_response = { + 'workouts':ajax_workouts, + 'plannedsessionstuple':plannedsessionstuple, + } + return JSONResponse(ajax_response) + return render(request,'plannedsessionsmanage.html', { @@ -11896,6 +11929,12 @@ def plannedsession_edit_view(request,id=0): sessionmode = cd['sessionmode'] sessionvalue = cd['sessionvalue'] sessionunit = cd['sessionunit'] + + if sessionunit == 'min': + sessionmode = 'time' + elif sessionunit in ['km','m']: + sessionmode = 'distance' + comment = cd['comment'] name = cd['name'] @@ -11952,8 +11991,6 @@ def plannedsession_view(request,id=0,rowerid=0): ratio,status = is_session_complete(r,ps) - print ratio - ratio = int(100.*ratio) return render(request,'plannedsessionview.html',