edit and create team sessions
This commit is contained in:
236
rowers/views.py
236
rowers/views.py
@@ -30,7 +30,8 @@ from rowers.forms import (
|
||||
LoginForm,DocumentsForm,UploadOptionsForm,ImageForm,
|
||||
TeamUploadOptionsForm,WorkFlowLeftPanelForm,WorkFlowMiddlePanelForm,
|
||||
WorkFlowLeftPanelElement,WorkFlowMiddlePanelElement,
|
||||
LandingPageForm,PlannedSessionSelectForm,WorkoutSessionSelectForm
|
||||
LandingPageForm,PlannedSessionSelectForm,WorkoutSessionSelectForm,
|
||||
PlannedSessionTeamForm,PlannedSessionTeamMemberForm,
|
||||
)
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.exceptions import PermissionDenied
|
||||
@@ -11809,6 +11810,208 @@ def plannedsession_create_view(request,timeperiod='thisweek',rowerid=0):
|
||||
'timeperiod':timeperiod,
|
||||
})
|
||||
|
||||
# Manager creates sessions for entire team
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/planmembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_teamcreate_view(request,timeperiod='thisweek',
|
||||
teamid=0):
|
||||
|
||||
|
||||
teams = Team.objects.filter(manager=request.user)
|
||||
teamchoices = [(team.id, team.name) for team in teams]
|
||||
teaminitial = [str(teams[0].id)]
|
||||
|
||||
startdate,enddate = get_dates_timeperiod(timeperiod)
|
||||
|
||||
sps = []
|
||||
for team in teams:
|
||||
res = get_sessions_manager(request.user,startdate=startdate,enddate=enddate)
|
||||
sps += res
|
||||
|
||||
sps = list(set(sps))
|
||||
|
||||
if request.method == 'POST':
|
||||
sessioncreateform = PlannedSessionForm(request.POST)
|
||||
sessionteamselectform = PlannedSessionTeamForm(
|
||||
request.user,request.POST
|
||||
)
|
||||
if sessioncreateform.is_valid():
|
||||
cd = sessioncreateform.cleaned_data
|
||||
startdate = cd['startdate']
|
||||
enddate = cd['enddate']
|
||||
sessiontype = cd['sessiontype']
|
||||
sessionmode = cd['sessionmode']
|
||||
criterium = cd['criterium']
|
||||
sessionvalue = cd['sessionvalue']
|
||||
sessionunit = cd['sessionunit']
|
||||
comment = cd['comment']
|
||||
name = cd['name']
|
||||
|
||||
if sessionunit == 'min':
|
||||
sessionmode = 'time'
|
||||
elif sessionunit in ['km','m']:
|
||||
sessionmode = 'distance'
|
||||
|
||||
ps = PlannedSession(
|
||||
name=name,
|
||||
startdate=startdate,
|
||||
enddate=enddate,
|
||||
sessiontype=sessiontype,
|
||||
sessionmode=sessionmode,
|
||||
sessionvalue=sessionvalue,
|
||||
sessionunit=sessionunit,
|
||||
comment=comment,
|
||||
criterium=criterium,
|
||||
manager=request.user)
|
||||
|
||||
ps.save()
|
||||
|
||||
# some logic when to add all selected rowers
|
||||
if sessionteamselectform.is_valid():
|
||||
cd = sessionteamselectform.cleaned_data
|
||||
teams = cd['team']
|
||||
for team in teams:
|
||||
add_team_session(team,ps)
|
||||
rs = Rower.objects.filter(team__in=[team])
|
||||
for r in rs:
|
||||
add_rower_session(r,ps)
|
||||
|
||||
|
||||
url = reverse(plannedsession_teamcreate_view,
|
||||
kwargs = {
|
||||
'timeperiod':timeperiod,
|
||||
})
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
sessioncreateform = PlannedSessionForm()
|
||||
sessionteamselectform = PlannedSessionTeamForm(
|
||||
request.user
|
||||
)
|
||||
|
||||
return render(request,'plannedsessionteamcreate.html',
|
||||
{
|
||||
'teams':get_my_teams(request.user),
|
||||
'form':sessioncreateform,
|
||||
'teamform':sessionteamselectform,
|
||||
'timeperiod':timeperiod,
|
||||
'plannedsessions':sps,
|
||||
})
|
||||
|
||||
# Manager edits sessions for entire team
|
||||
@user_passes_test(iscoachmember,login_url="/rowers/planmembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_teamedit_view(request,timeperiod='thisweek',
|
||||
sessionid=0):
|
||||
|
||||
try:
|
||||
ps = PlannedSession.objects.get(id=sessionid)
|
||||
except PlannedSession.DoesNotExist:
|
||||
raise Http404("This session doesn't exist")
|
||||
if not ps.manager == request.user:
|
||||
raise Http404("You are not the manager of this session")
|
||||
|
||||
teams = Team.objects.filter(manager=request.user)
|
||||
teamchoices = [(team.id, team.name) for team in teams]
|
||||
|
||||
teaminitial = ps.team.all()
|
||||
|
||||
startdate,enddate = get_dates_timeperiod(timeperiod)
|
||||
|
||||
sps = []
|
||||
rowers = []
|
||||
for team in teams:
|
||||
res = get_sessions_manager(request.user,startdate=startdate,enddate=enddate)
|
||||
sps += res
|
||||
rowers += Rower.objects.filter(team__in=[team])
|
||||
|
||||
rowers = list(set(rowers))
|
||||
|
||||
|
||||
sps = list(set(sps))
|
||||
|
||||
if request.method == 'POST':
|
||||
sessioncreateform = PlannedSessionForm(request.POST,instance=ps)
|
||||
sessionteamselectform = PlannedSessionTeamForm(
|
||||
request.user,request.POST
|
||||
)
|
||||
sessionrowerform = PlannedSessionTeamMemberForm(ps,request.POST)
|
||||
if sessioncreateform.is_valid():
|
||||
cd = sessioncreateform.cleaned_data
|
||||
|
||||
if cd['sessionunit'] == 'min':
|
||||
cd['sessionmode'] = 'time'
|
||||
elif cd['sessionunit'] in ['km','m']:
|
||||
cd['sessionmode'] = 'distance'
|
||||
|
||||
|
||||
res,message = update_plannedsession(ps,cd)
|
||||
|
||||
if res:
|
||||
messages.info(request,message)
|
||||
else:
|
||||
messages.error(request,message)
|
||||
|
||||
|
||||
# some logic when to add all selected rowers
|
||||
if sessionteamselectform.is_valid():
|
||||
cd = sessionteamselectform.cleaned_data
|
||||
selectedteams = cd['team']
|
||||
for team in teams:
|
||||
if team in selectedteams:
|
||||
add_team_session(team,ps)
|
||||
rs = Rower.objects.filter(team__in=[team])
|
||||
for r in rs:
|
||||
add_rower_session(r,ps)
|
||||
else:
|
||||
remove_team_session(team,ps)
|
||||
else:
|
||||
selectedteams = []
|
||||
|
||||
|
||||
if sessionrowerform.is_valid():
|
||||
cd = sessionrowerform.cleaned_data
|
||||
selectedrowers = cd['members']
|
||||
for r in rowers:
|
||||
if r in selectedrowers:
|
||||
add_rower_session(r,ps)
|
||||
else:
|
||||
remove_rower_session(r,ps)
|
||||
for t in selectedteams:
|
||||
if t in r.team.all():
|
||||
add_rower_session(r,ps)
|
||||
|
||||
|
||||
url = reverse(plannedsession_teamedit_view,
|
||||
kwargs = {
|
||||
'sessionid':sessionid,
|
||||
'timeperiod':timeperiod,
|
||||
})
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
sessioncreateform = PlannedSessionForm(instance=ps)
|
||||
sessionteamselectform = PlannedSessionTeamForm(
|
||||
request.user
|
||||
)
|
||||
sessionteamselectform.fields['team'].initial = teaminitial
|
||||
sessionrowerform = PlannedSessionTeamMemberForm(
|
||||
ps
|
||||
)
|
||||
|
||||
|
||||
sessionrowerform.fields['members'].initial = ps.rower.all()
|
||||
|
||||
return render(request,'plannedsessionteamedit.html',
|
||||
{
|
||||
'plannedsession':ps,
|
||||
'teams':get_my_teams(request.user),
|
||||
'form':sessioncreateform,
|
||||
'teamform':sessionteamselectform,
|
||||
'rowersform':sessionrowerform,
|
||||
'timeperiod':timeperiod,
|
||||
'plannedsessions':sps,
|
||||
})
|
||||
|
||||
|
||||
@login_required()
|
||||
def plannedsessions_view(request,timeperiod='thisweek',rowerid=0):
|
||||
|
||||
@@ -11840,7 +12043,12 @@ def plannedsessions_view(request,timeperiod='thisweek',rowerid=0):
|
||||
completiondate[ps.id] = date
|
||||
else:
|
||||
completiondate[ps.id] = ''
|
||||
|
||||
|
||||
unmatchedworkouts = Workout.objects.filter(
|
||||
user=r,
|
||||
plannedsession=None,
|
||||
date__gte=startdate,date__lte=enddate)
|
||||
|
||||
return render(request,'plannedsessions.html',
|
||||
{
|
||||
'teams':get_my_teams(request.user),
|
||||
@@ -11850,6 +12058,7 @@ def plannedsessions_view(request,timeperiod='thisweek',rowerid=0):
|
||||
'completeness':completeness,
|
||||
'actualvalue':actualvalue,
|
||||
'completiondate':completiondate,
|
||||
'unmatchedworkouts':unmatchedworkouts,
|
||||
})
|
||||
|
||||
@login_required()
|
||||
@@ -11926,7 +12135,10 @@ def plannedsessions_manage_view(request,timeperiod='thisweek',rowerid=0,
|
||||
else:
|
||||
selectedworkouts = []
|
||||
|
||||
|
||||
if len(selectedworkouts)==0:
|
||||
for w in ws:
|
||||
remove_workout_plannedsession(w,ps)
|
||||
|
||||
if selectedworkouts:
|
||||
workouts = Workout.objects.filter(user=r,id__in=selectedworkouts)
|
||||
for w in ws:
|
||||
@@ -11997,6 +12209,9 @@ def plannedsession_clone_view(request,id=0,rowerid=0,
|
||||
if ps.manager != request.user:
|
||||
raise Http404("You are not allowed to clone this planned session")
|
||||
|
||||
rowers = ps.rower.all()
|
||||
teams = ps.team.all()
|
||||
|
||||
ps.pk = None
|
||||
|
||||
deltadays = ps.enddate-ps.startdate
|
||||
@@ -12007,7 +12222,10 @@ def plannedsession_clone_view(request,id=0,rowerid=0,
|
||||
|
||||
ps.save()
|
||||
|
||||
add_rower_session(r,ps)
|
||||
for rower in rowers:
|
||||
add_rower_session(rower,ps)
|
||||
for team in teams:
|
||||
add_team_session(team,ps)
|
||||
|
||||
url = reverse(plannedsession_edit_view,
|
||||
kwargs = {
|
||||
@@ -12024,7 +12242,7 @@ def plannedsession_clone_view(request,id=0,rowerid=0,
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/planmembership/",
|
||||
redirect_field_name=None)
|
||||
def plannedsession_edit_view(request,id=0,timeperiod='thisweek',rowerid=0):
|
||||
|
||||
|
||||
if rowerid==0:
|
||||
r = getrower(request.user)
|
||||
else:
|
||||
@@ -12046,6 +12264,14 @@ def plannedsession_edit_view(request,id=0,timeperiod='thisweek',rowerid=0):
|
||||
if ps.manager != request.user:
|
||||
raise Http404("You are not allowed to edit this planned session")
|
||||
|
||||
if ps.team.all() or len(ps.rower.all())>1:
|
||||
url = reverse(plannedsession_teamedit_view,
|
||||
kwargs={
|
||||
'timeperiod':timeperiod,
|
||||
'sessionid':id,
|
||||
})
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
if request.method == 'POST':
|
||||
sessioncreateform = PlannedSessionForm(request.POST,instance=ps)
|
||||
if sessioncreateform.is_valid():
|
||||
|
||||
Reference in New Issue
Block a user