diff --git a/rowers/models.py b/rowers/models.py index 5513d86b..f9632550 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -936,6 +936,7 @@ class PlannedSessionFormSmall(ModelForm): 'criterium', 'sessionvalue', 'sessionunit', + 'manager', 'comment', ] @@ -951,6 +952,7 @@ class PlannedSessionFormSmall(ModelForm): 'comment': forms.TextInput(attrs={'size':10}), 'sessionvalue': forms.TextInput(attrs={'style':'width:3em', 'type':'number'}), + 'manager': forms.HiddenInput(), } diff --git a/rowers/templates/plannedsession_multicreate.html b/rowers/templates/plannedsession_multicreate.html index 44aba51e..b1f3ab62 100644 --- a/rowers/templates/plannedsession_multicreate.html +++ b/rowers/templates/plannedsession_multicreate.html @@ -53,6 +53,10 @@
+

+ On this page, you can create and edit sessions for an entire time + period. +

{% csrf_token %} {{ ps_formset.management_form }} @@ -68,9 +72,13 @@ {% for form in ps_formset %} - + {{ forloop.counter }} {% if form.instance.pk %}{{ form.DELETE }}{% endif %} + {{ form.id }} + {% for field in form.hidden_fields %} + {{ field }} + {% endfor %} {% for field in form.visible_fields %} {{ field }} @@ -80,7 +88,8 @@ {% endfor %} - + Add More +
@@ -94,10 +103,9 @@ $(document).ready(function(){ $('#ps-form-table tbody tr').formset({ - prefix: '{{ formset.prefix }}' + addText: '' }); - $("td #id_sessionmode").change(function() { if (this.value == 'TRIMP') { diff --git a/rowers/urls.py b/rowers/urls.py index 509efae6..6e093cfa 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -420,6 +420,8 @@ urlpatterns = [ views.plannedsession_create_view), url(r'^sessions/multicreate$',views.plannedsession_multicreate_view), + url(r'^sessions/multicreate/(?P[\w\ ]+.*)/rower/(?P\d+)/extra/(?P\d+)$', + views.plannedsession_multicreate_view), url(r'^sessions/multicreate/rower/(?P\d+)$', views.plannedsession_multicreate_view), url( diff --git a/rowers/views.py b/rowers/views.py index f10ff612..4d5453a2 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -8811,7 +8811,6 @@ def workout_uploadimage_view(request,id): if f is not None: filename,path_and_filename = handle_uploaded_image(f) - print path_and_filename,'aap' try: width,height = Image.open(path_and_filename).size except: @@ -11647,8 +11646,6 @@ def plannedsession_create_view(request,timeperiod='thisweek',rowerid=0): else: forminitial = {} - print forminitial - sessioncreateform = PlannedSessionForm(initial=forminitial) startdate,enddate = get_dates_timeperiod(timeperiod) @@ -11666,7 +11663,9 @@ def plannedsession_create_view(request,timeperiod='thisweek',rowerid=0): @user_passes_test(hasplannedsessions,login_url="/rowers/planmembership/", redirect_field_name=None) def plannedsession_multicreate_view(request,timeperiod='thisweek', - teamid=0,rowerid=0): + teamid=0,rowerid=0,extrasessions=0): + + extrasessions=int(extrasessions) if rowerid==0: r = getrower(request.user) @@ -11680,29 +11679,78 @@ def plannedsession_multicreate_view(request,timeperiod='thisweek', startdate,enddate = get_dates_timeperiod(timeperiod) sps = get_sessions(r,startdate=startdate,enddate=enddate) - qset = PlannedSession.objects.filter( - rower__in=[r], - startdate__lte=enddate, - enddate__gte=startdate, - ).order_by("startdate","enddate") + + m = Rower.objects.get(user=request.user) + + if m.rowerplan == 'coach': + teams = Team.objects.filter(manager=request.user) + members = Rower.objects.filter(team__in=teams).distinct() + if r in members: + qset = PlannedSession.objects.filter( + rower__in=[r], + startdate__lte=enddate, + enddate__gte=startdate, + ).order_by("startdate","enddate") + else: + qset = [] + + if not qset: + qset = PlannedSession.objects.filter( + rower__in=[r], + manager = request.user, + startdate__lte=enddate, + enddate__gte=startdate, + ).order_by("startdate","enddate") + - extrasessions = (enddate-startdate).days+1 - - PlannedSessionFormSet = modelformset_factory(PlannedSession, - form=PlannedSessionFormSmall, -# formset=BasePlannedSessionFormSet, - can_delete=True, - extra=extrasessions, -) - ps_formset = PlannedSessionFormSet(queryset = qset) + initial = { + 'startdate':startdate, + 'enddate':enddate, + 'sessionvalue':60, + 'manager':request.user, + 'name': 'NEW SESSION' + } + + initials = [initial for i in range(extrasessions)] + PlannedSessionFormSet = modelformset_factory( + PlannedSession, + form=PlannedSessionFormSmall, + can_delete=True, + extra=extrasessions, + ) + if request.method == "POST": + ps_formset = PlannedSessionFormSet(queryset = qset, + data = request.POST) + if ps_formset.is_valid(): + instances = ps_formset.save(commit=False) + for ps in instances: + ps.save() + add_rower_session(r,ps) + for obj in ps_formset.deleted_objects: + obj.delete() + else: + print ps_formset.errors + + url = reverse(plannedsession_multicreate_view, + kwargs = { + 'rowerid':r.id, + 'timeperiod':timeperiod + } + ) + return HttpResponseRedirect(url) + + ps_formset = PlannedSessionFormSet(queryset = qset, + initial=initials) + context = { 'ps_formset':ps_formset, 'rower':r, 'timeperiod':timeperiod, - 'teams':get_my_teams(request.user) + 'teams':get_my_teams(request.user), + 'extrasessions': extrasessions+1 } return render(request,'plannedsession_multicreate.html',context)