From 64a5435dd7a02cf8a05c9630f662e854a67e61bc Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 16 Jun 2019 17:06:12 +0200 Subject: [PATCH] team multicreate --- rowers/forms.py | 14 +++++++++ rowers/models.py | 3 ++ rowers/plannedsessions.py | 4 +++ rowers/templates/menu_plan.html | 30 +++++++++++++++---- .../templates/plannedsession_multicreate.html | 13 ++++++++ rowers/templatetags/rowerfilters.py | 12 ++++++++ rowers/views/planviews.py | 27 ++++++++++++++++- rowers/views/statements.py | 2 +- 8 files changed, 98 insertions(+), 7 deletions(-) diff --git a/rowers/forms.py b/rowers/forms.py index c0ee89fd..1462bae1 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -358,6 +358,7 @@ class TeamUploadOptionsForm(forms.Form): class Meta: fields = ['make_plot','plottype'] + # This form is used on the Workout Split page class WorkoutSplitForm(forms.Form): splitchoices = ( @@ -1201,6 +1202,19 @@ class WorkoutRaceSelectForm(forms.Form): # self.fields['evaluate_after'] = +# Form to select team by rower +class RowerTeamForm(forms.Form): + team = forms.ModelChoiceField( + queryset=Team.objects.all(), + required=False, + ) + + def __init__(self, user, *args, **kwargs): + super(RowerTeamForm, self).__init__(*args, **kwargs) + + self.fields['team'].queryset = Team.objects.filter(manager=user) + + class PlannedSessionTeamForm(forms.Form): team = forms.ModelMultipleChoiceField( queryset=Team.objects.all(), diff --git a/rowers/models.py b/rowers/models.py index 37a13822..63318e39 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2982,6 +2982,9 @@ def auto_delete_image_on_delete(sender,instance, **kwargs): print("couldn't find the file "+instance.filename) + + + # Form to update Workout data class WorkoutForm(ModelForm): # duration = forms.TimeInput(format='%H:%M:%S.%f') diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index 34642a46..8682aaa7 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -486,6 +486,10 @@ def remove_rower_session(r,ps): return 1 +def get_team(request): + teamid = request.GET.get('team') + return teamid + def get_dates_timeperiod(request,startdatestring='',enddatestring='', defaulttimeperiod='thisweek'): # set start end date according timeperiod diff --git a/rowers/templates/menu_plan.html b/rowers/templates/menu_plan.html index 7177f790..9c5d823d 100644 --- a/rowers/templates/menu_plan.html +++ b/rowers/templates/menu_plan.html @@ -61,11 +61,6 @@  Add Session -
  • - -  Add Group Session - -
  • Plan Microcycle @@ -78,6 +73,31 @@
  • + {% if request.user|user_teams %} +
  • + + +
      +
    • + +  Add Group Session + +
    • +
    • + + Plan Group Microcycle + +
    • +
    • + + Clone Multiple Group Sessions + +
    • +
    +
  • + {% endif %}

     

    diff --git a/rowers/templates/plannedsession_multicreate.html b/rowers/templates/plannedsession_multicreate.html index 2981a7b0..53418ea0 100644 --- a/rowers/templates/plannedsession_multicreate.html +++ b/rowers/templates/plannedsession_multicreate.html @@ -5,7 +5,11 @@ {% block title %}Plan entire microcycle{% endblock %} {% block main %} +{% if team %} +

    Create Group Sessions for {{ team.name }}

    +{% else %}

    Create Sessions for {{ rower.user.first_name }} {{ rower.user.last_name }}

    +{% endif %}
    • @@ -14,6 +18,9 @@ {{ dateform.as_table }}
      + + {{ teamform.as_table }} +

      @@ -66,9 +73,15 @@ {% endfor %} + {% if team %} + + Add More + + {% else %} Add More + {% endif %} or Clone multiple sessions diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py index 8ddf86f5..b5851649 100644 --- a/rowers/templatetags/rowerfilters.py +++ b/rowers/templatetags/rowerfilters.py @@ -355,6 +355,18 @@ def user_teams(user): return teams +@register.filter +def user_team1(user): + try: + therower = Rower.objects.get(user=user) + teams1 = therower.team.all() + teams2 = Team.objects.filter(manager=user) + teams = list(set(teams1).union(set(teams2))) + except TypeError: + teams = [] + + return teams[0].id + @register.filter def announcements(request): announcements = SiteAnnouncement.objects.filter( diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index 82e6e065..e1804a74 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -454,6 +454,7 @@ def plannedsession_multicreate_view(request, startdate,enddate = get_dates_timeperiod(request) + teamid = get_team(request) try: trainingplan = TrainingPlan.objects.filter( startdate__lte = startdate, @@ -472,6 +473,16 @@ def plannedsession_multicreate_view(request, ).order_by("startdate","preferreddate","enddate").exclude( sessiontype='race') + if teamid: + qset = qset.filter(team__in=[teamid]) + try: + team = Team.objects.get(id=teamid) + if team.manager != request.user: + team = None + except Team.DoesNotExist: + team = None + else: + team = None initial = { @@ -500,6 +511,8 @@ def plannedsession_multicreate_view(request, for ps in instances: ps.save() add_rower_session(r,ps) + if team: + add_team_session(team,ps) messages.info(request,"Saved changes for Planned Session "+str(ps)) for obj in ps_formset.deleted_objects: messages.info(request,"Deleted Planned Session "+str(obj)) @@ -515,6 +528,9 @@ def plannedsession_multicreate_view(request, startdatestring = startdate.strftime('%Y-%m-%d') enddatestring = enddate.strftime('%Y-%m-%d') url += '?when='+startdatestring+'/'+enddatestring + + if team: + url += '&team={teamid}'.format(teamid=team.id) return HttpResponseRedirect(url) @@ -537,16 +553,25 @@ def plannedsession_multicreate_view(request, 'enddate':enddate }) + if len(Team.objects.filter(manager=request.user))>=1: + teamform = RowerTeamForm(request.user) + if teamid: + teamform = RowerTeamForm(request.user,initial={'team':teamid}) + else: + teamform = None + context = { 'ps_formset':ps_formset, 'breadcrumbs':breadcrumbs, 'rower':r, 'active':'nav-plan', 'dateform':dateform, + 'teamform':teamform, 'plan':trainingplan, 'timeperiod':timeperiod, 'teams':get_my_teams(request.user), - 'extrasessions': extrasessions+1 + 'extrasessions': extrasessions+1, + 'team':team, } diff --git a/rowers/views/statements.py b/rowers/views/statements.py index 8b9a9991..e2b470c3 100644 --- a/rowers/views/statements.py +++ b/rowers/views/statements.py @@ -81,7 +81,7 @@ from rowers.forms import ( FusionMetricChoiceForm,BoxPlotChoiceForm,MultiFlexChoiceForm, TrendFlexModalForm,WorkoutSplitForm,WorkoutJoinParamForm, AnalysisOptionsForm, AnalysisChoiceForm, - PlannedSessionMultipleCloneForm,SessionDateShiftForm, + PlannedSessionMultipleCloneForm,SessionDateShiftForm,RowerTeamForm, ) from rowers.models import ( Workout, User, Rower, WorkoutForm,FavoriteChart,