Private
Public Access
1
0

attach workouts to sessions version 0

This commit is contained in:
Sander Roosendaal
2018-02-07 16:37:03 +01:00
parent d3448c66f1
commit 91d59dfc28
13 changed files with 483 additions and 61 deletions

View File

@@ -30,7 +30,7 @@ from rowers.forms import (
LoginForm,DocumentsForm,UploadOptionsForm,ImageForm,
TeamUploadOptionsForm,WorkFlowLeftPanelForm,WorkFlowMiddlePanelForm,
WorkFlowLeftPanelElement,WorkFlowMiddlePanelElement,
LandingPageForm,
LandingPageForm,PlannedSessionSelectForm,WorkoutSessionSelectForm
)
from django.core.urlresolvers import reverse
from django.core.exceptions import PermissionDenied
@@ -606,6 +606,7 @@ def rowhascoordinates(row):
if rowdata != 0:
try:
latitude = rowdata.df[' latitude']
if not latitude.std():
hascoordinates = 0
except KeyError,AttributeError:
@@ -11765,48 +11766,110 @@ def plannedsessions_view(request,timeperiod='today',rowerid=0):
if not checkaccessuser(request.user,r):
raise Http404("You don't have access to this plan")
# set start end date according timeperiod
if timeperiod=='today':
startdate=datetime.date.today()
enddate=datetime.date.today()
elif timeperiod=='tomorrow':
startdate=datetime.date.today()+timezone.timedelta(days=1)
enddate=datetime.date.today()+timezone.timedelta(days=1)
elif timeperiod=='thisweek':
today = datetime.date.today()
startdate = datetime.date.today()-timezone.timedelta(days=today.weekday())
enddate = startdate+timezone.timedelta(weeks=1)
elif timeperiod=='thismonth':
today = datetime.date.today()
startdate = today.replace(day=1)
enddate = startdate+timezone.timedelta(days=32)
enddate = enddate.replace(day=1)
elif timeperiod=='lastweek':
today = datetime.date.today()
enddate = today-timezone.timedelta(days=today.weekday())
startdate = enddate-timezone.timedelta(days=7)
elif timeperiod=='lastmonth':
today = datetime.date.today()
startdate = today.replace(day=1)
startdate = startdate-timezone.timedelta(days=3)
startdate = startdate.replace(day=1)
enddate = startdate+timezone.timedelta(days=32)
enddate = enddate.replace(day=1)
else:
startdate = datetime.date.today()
enddate = datetime.date.today()
startdate,enddate = get_dates_timeperiod(timeperiod)
sps = get_sessions(r,startdate=startdate,enddate=enddate)
completeness = {}
for ps in sps:
ratio,status = is_session_complete(r,ps)
completeness[ps.id] = status
return render(request,'plannedsessions.html',
{
'teams':get_my_teams(request.user),
'plannedsessions':sps,
'rower':r,
'timeperiod':timeperiod,
'completeness':completeness,
})
@login_required()
def plannedsessions_manage_view(request,timeperiod='today',rowerid=0):
if rowerid==0:
r = getrower(request.user)
else:
try:
r = Rower.objects.get(id=rowerid)
except Rower.DoesNotExist:
raise Http404("This rower doesn't exist")
if not checkaccessuser(request.user,r):
raise Http404("You don't have access to this plan")
startdate,enddate = get_dates_timeperiod(timeperiod)
sps = get_sessions(r,startdate=startdate,enddate=enddate)
ws = Workout.objects.filter(
user=r,date__gte=startdate,
date__lte=enddate
).order_by(
"date","id"
)
plannedsessionstuple = []
for ps in sps:
sessiontpl = (ps.id,ps.__unicode__())
plannedsessionstuple.append(sessiontpl)
plannedsessionstuple = tuple(plannedsessionstuple)
workoutdata = {}
workoutdata['initial'] = []
choices = []
for w in ws:
wtpl = (w.id, w.__unicode__())
choices.append(wtpl)
workoutdata['choices'] = tuple(choices)
if request.method == 'POST':
ps_form = PlannedSessionSelectForm(plannedsessionstuple,request.POST)
w_form = WorkoutSessionSelectForm(workoutdata,request.POST)
if ps_form.is_valid():
ps = PlannedSession.objects.get(id=ps_form.cleaned_data['plannedsession'])
if w_form.is_valid():
selectedworkouts = w_form.cleaned_data['workouts']
else:
selectedworkouts = []
if selectedworkouts:
workouts = Workout.objects.filter(user=r,id__in=selectedworkouts)
for w in ws:
if w.id not in selectedworkouts:
remove_workout_plannedsession(w,ps)
result,comments,errors = add_workouts_plannedsession(workouts,ps)
for c in comments:
messages.info(request,c)
for er in errors:
messages.error(request,er)
ps_form = PlannedSessionSelectForm(plannedsessionstuple)
w_form = WorkoutSessionSelectForm(workoutdata=workoutdata)
return render(request,'plannedsessionsmanage.html',
{
'teams':get_my_teams(request.user),
'plannedsessions':sps,
'workouts':ws,
'timeperiod':timeperiod,
'rower':r,
'ps_form':ps_form,
'w_form':w_form,
})
# Edit an existing planned session
@user_passes_test(hasplannedsessions,login_url="/rowers/promembership/",
@@ -11864,9 +11927,14 @@ def plannedsession_edit_view(request,id=0):
@login_required()
def plannedsession_view(request,id=0):
def plannedsession_view(request,id=0,rowerid=0):
r = getrower(request.user)
m = getrower(request.user)
if not rowerid:
r = m
else:
r = Rower.objects.get(id=rowerid)
try:
ps = PlannedSession.objects.get(id=id)
@@ -11879,13 +11947,27 @@ def plannedsession_view(request,id=0):
psdict = my_dict_from_instance(ps,PlannedSession)
ws = get_workouts_session(r,ps)
ratio,status = is_session_complete(r,ps)
print ratio
ratio = int(100.*ratio)
return render(request,'plannedsessionview.html',
{
'psdict': psdict,
'attrs':[
'name','startdate','enddate','sessiontype',
]
'sessionvalue','sessionunit'
],
'workouts': ws,
'manager':m,
'rower':r,
'ratio':ratio,
'status':status
}
)
@@ -11902,6 +11984,11 @@ def plannedsession_delete_view(request,id=0):
if ps.manager != request.user:
raise Http404("You are not allowed to delete this planned session")
ws = Workout.objects.filter(plannedsession=ps)
for w in ws:
w.plannedsession=None
w.save()
ps.delete()
url = reverse(plannedsessions_view)