Private
Public Access
1
0

team multicreate

This commit is contained in:
Sander Roosendaal
2019-06-16 17:06:12 +02:00
parent d073d1ffb7
commit 64a5435dd7
8 changed files with 98 additions and 7 deletions

View File

@@ -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(),

View File

@@ -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')

View File

@@ -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

View File

@@ -61,11 +61,6 @@
<i class="far fa-calendar-plus fa-fw"></i>&nbsp;Add Session
</a>
</li>
<li id="plan-teamsession">
<a href="/rowers/sessions/teamcreate/?when={{ timeperiod }}">
<i class="fas fa-whistle fa-fw"></i>&nbsp;Add Group Session
</a>
</li>
<li id="plan-microcycle">
<a href="/rowers/sessions/multicreate/?when={{ timeperiod }}">
<i class="fas fa-expand fa-fw"></i>Plan Microcycle
@@ -78,6 +73,31 @@
</li>
</ul>
</li>
{% if request.user|user_teams %}
<li class="has-children" id="teamplan">
<input type="checkbox" name="group-plan" id="group-teamplan">
<label for="group-teamplan">
<i class="fas fa-calendar-plus fa-fw"></i>&nbsp;Plan Group Sessions
</label>
<ul>
<li id="plan-teamsession">
<a href="/rowers/sessions/teamcreate/?when={{ timeperiod }}">
<i class="fas fa-whistle fa-fw"></i>&nbsp;Add Group Session
</a>
</li>
<li id="plan-microcycle">
<a href="/rowers/sessions/multicreate/?when={{ timeperiod }}&team={{ request.user|user_team1 }}">
<i class="fas fa-expand fa-fw"></i>Plan Group Microcycle
</a>
</li>
<li id="plan-microcycle">
<a href="/rowers/sessions/multiclone/user/{{ rower.user.id }}/?when={{ timeperiod }}">
<i class="fas fa-layer-plus fa-fw"></i>Clone Multiple Group Sessions
</a>
</li>
</ul>
</li>
{% endif %}
</ul><!-- cd-accordion-menu -->
<p>&nbsp;</p>

View File

@@ -5,7 +5,11 @@
{% block title %}Plan entire microcycle{% endblock %}
{% block main %}
{% if team %}
<h1>Create Group Sessions for {{ team.name }}</h1>
{% else %}
<h1>Create Sessions for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1>
{% endif %}
<ul class="main-content">
<li class="grid_2">
@@ -14,6 +18,9 @@
<table>
{{ dateform.as_table }}
</table>
<table>
{{ teamform.as_table }}
</table>
<input type="Submit" value="Set Date Range">
</form>
</p>
@@ -66,9 +73,15 @@
{% endfor %}
</tbody>
</table>
{% if team %}
<a href="/rowers/sessions/multicreate/user/{{ rower.user.id }}/extra/{{ extrasessions }}/?when={{ timeperiod }}&team={{ team.id }}">
Add More
</a>
{% else %}
<a href="/rowers/sessions/multicreate/user/{{ rower.user.id }}/extra/{{ extrasessions }}/?when={{ timeperiod }}">
Add More
</a>
{% endif %}
or
<a href="/rowers/sessions/multiclone/user/{{ rower.user.id }}/?when={{ timeperiod }}">
Clone multiple sessions

View File

@@ -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(

View File

@@ -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,
}

View File

@@ -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,