attach workouts to sessions version 0
This commit is contained in:
159
rowers/views.py
159
rowers/views.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user