Private
Public Access
1
0

register multiple disciplines

This commit is contained in:
Sander Roosendaal
2018-06-01 12:25:36 +02:00
parent 3998c7dded
commit 25249f4b53
7 changed files with 246 additions and 65 deletions

View File

@@ -13440,6 +13440,9 @@ def virtualevent_view(request,id=0):
if race_can_register(r,race):
buttons += ['registerbutton']
if race_can_adddiscipline(r,race):
buttons += ['adddisciplinebutton']
if race_can_submit(r,race):
buttons += ['submitbutton']
@@ -13485,7 +13488,7 @@ def virtualevent_view(request,id=0):
})
@login_required()
def virtualevent_withdraw_view(request,id=0):
def virtualevent_withdraw_view(request,id=0,recordid=None):
r = getrower(request.user)
try:
race = VirtualRace.objects.get(id=id)
@@ -13493,7 +13496,7 @@ def virtualevent_withdraw_view(request,id=0):
raise Http404("Virtual Race does not exist")
if race_can_withdraw(r,race):
remove_rower_race(r,race)
remove_rower_race(r,race,recordid=recordid)
messages.info(request,
"You have successfully withdrawn from this race.")
else:
@@ -13506,6 +13509,106 @@ def virtualevent_withdraw_view(request,id=0):
return HttpResponseRedirect(url)
@login_required()
def virtualevent_addboat_view(request,id=0):
r = getrower(request.user)
try:
race = VirtualRace.objects.get(id=id)
except VirtualRace.DoesNotExist:
raise Http404("Virtual Race does not exist")
if not race_can_adddiscipline(r,race):
messages.error(request,"You cannot register for this race")
url = reverse(virtualevent_view,
kwargs = {
'id':race.id
})
return HttpResponseRedirect(url)
records = VirtualRaceResult.objects.filter(
userid = r.id,
race = race
)
boattypes = [record.boattype for record in records]
allowedboats = tuple([ type for type in types.boattypes if type[0] not in boattypes] )
# we're still here
if request.method == 'POST':
# process form
form = VirtualRaceResultForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
teamname = cd['teamname']
boattype = cd['boattype']
weightcategory = cd['weightcategory']
age = cd['age']
if boattype == '1x' and r.birthdate:
age = calculate_age(r.birthdate)
if boattype in boattypes:
messages.error(request,"You have already registered in that boat type")
url = reverse(virtualevent_view,
kwargs = {
'id': race.id
}
)
return HttpResponseRedirect(url)
record = VirtualRaceResult(
userid=r.id,
teamname=teamname,
race=race,
username = u'{f} {l}'.format(
f = r.user.first_name,
l = r.user.last_name
),
weightcategory=weightcategory,
duration=datetime.time(0,0),
boattype=boattype,
coursecompleted=False,
sex=r.sex,
age=age
)
record.save()
add_rower_race(r,race)
messages.info(
request,
"You have successfully registered for this race. Good luck!"
)
url = reverse(virtualevent_view,
kwargs = {
'id':race.id
})
return HttpResponseRedirect(url)
else:
initial = {
'age': calculate_age(r.birthdate),
'weightcategory': r.weightcategory,
}
form = VirtualRaceResultForm(initial=initial,boattypes=allowedboats)
return render(request,'virtualeventregister.html',
{
'form':form,
'race':race,
'rowerid':r.id,
})
@login_required()
def virtualevent_register_view(request,id=0):
r = getrower(request.user)
@@ -13787,6 +13890,21 @@ def virtualevent_submit_result_view(request,id=0):
can_submit = race_can_submit(r,race) or race_can_resubmit(r,race)
records = VirtualRaceResult.objects.filter(
userid = r.id,
race=race
)
entrychoices = []
for record in records:
rtpl = (record.id, record.__unicode__())
entrychoices.append(rtpl)
entries = {}
entries['choices'] = entrychoices
entries['initial'] = [records[0].id]
if not can_submit:
messages.error(request,'You cannot submit a result to this race')
url = reverse(virtualevent_view,
@@ -13820,18 +13938,20 @@ def virtualevent_submit_result_view(request,id=0):
workoutdata['choices'] = tuple(choices)
if request.method == 'POST':
w_form = WorkoutRaceSelectForm(workoutdata,request.POST)
w_form = WorkoutRaceSelectForm(workoutdata,entries,request.POST)
if w_form.is_valid():
selectedworkout = w_form.cleaned_data['workouts']
splittime = w_form.cleaned_data['evaluate_after']
if splittime is not None:
splitsecond = splittime.hour*3600
splitsecond += splittime.minute*60
splitsecond += splittime.second
splitsecond += splittime.microsecond/1.e6
else:
splitsecond = 0
splitsecond = 0
recordid = w_form.cleaned_data['record']
# splittime = w_form.cleaned_data['evaluate_after']
# if splittime is not None:
# splitsecond = splittime.hour*3600
# splitsecond += splittime.minute*60
# splitsecond += splittime.second
# splitsecond += splittime.microsecond/1.e6
# else:
# splitsecond = 0
else:
selectedworkout = None
@@ -13843,11 +13963,11 @@ def virtualevent_submit_result_view(request,id=0):
result,comments,errors,jobid = add_workout_race(
workouts,race,r,
splitsecond=splitsecond)
if result:
for w in ws:
remove_workout_plannedsession(w,race)
delete_race_result(w,race)
splitsecond=splitsecond,recordid=recordid)
# if result:
# for w in ws:
# remove_workout_plannedsession(w,race)
# delete_race_result(w,race)
for c in comments:
messages.info(request,c)
@@ -13871,7 +13991,7 @@ def virtualevent_submit_result_view(request,id=0):
return HttpResponseRedirect(url)
else:
w_form = WorkoutRaceSelectForm(workoutdata=workoutdata)
w_form = WorkoutRaceSelectForm(workoutdata,entries)
return render(request,'race_submit.html',
{