Private
Public Access
1
0

withdraw from race

This commit is contained in:
Sander Roosendaal
2020-05-23 16:00:04 +02:00
parent 248276ddcf
commit 3159526e64
7 changed files with 353 additions and 2 deletions

View File

@@ -647,7 +647,7 @@ def virtualevent_disqualify_view(request,id=0,recordid=0):
},
{
'url':reverse(virtualevent_disqualify_view,
kwargs={'raceid':raceid,
kwargs={'id':id,
'recordid':recordid}),
'name': 'Disqualify Entry'
},
@@ -688,6 +688,149 @@ def virtualevent_disqualify_view(request,id=0,recordid=0):
'record':record,
})
@login_required()
def virtualevent_withdrawresult_view(request,id=0,recordid=0):
r = getrower(request.user)
race = get_object_or_404(VirtualRace,pk=id)
if race.sessiontype == 'race':
recordobj = VirtualRaceResult
else:
recordobj = IndoorVirtualRaceResult
# datum moet voor race evaluation date zijn (ook in template controleren)
try:
record = recordobj.objects.get(id=recordid)
except recordobj.DoesNotExist:
messages.error(request,"We couldn't find the record")
if r.id != record.userid:
raise PermissionDenied("You are not the owner of this result")
if timezone.now() > race.evaluation_closure+datetime.timedelta(hours=1):
messages.error(request,"The evaluation is already closed and the results are official")
url = reverse('virtualevent_view',kwargs={'id':raceid})
return HttpResponseRedirect(url)
if request.method == 'POST':
form = DisqualificationForm(request.POST)
if form.is_valid():
message = form.cleaned_data['message']
reason = form.cleaned_data['reason']
disqualifier = disqualifiers[reason]
r = Rower.objects.get(id=record.userid)
name = record.username
job = myqueue(queue,handle_send_withdraw_email,
r.user.email, name,
disqualifier,message,race.name)
messages.info(request,"We have invalidated the result for: "+str(record))
record.coursecompleted = False
record.save()
url = reverse('virtualevent_view',kwargs={'id':id})
return HttpResponseRedirect(url)
else:
form = DisqualificationForm(request.POST)
workout = Workout.objects.get(id=record.workoutid)
g = GraphImage.objects.filter(workout=workout).order_by("-creationdatetime")
for i in g:
try:
width,height = Image.open(i.filename).size
i.width = width
i.height = height
i.save()
except:
pass
script, div = interactive_chart(record.workoutid)
f1 = workout.csvfilename
rowdata = rdata(f1)
hascoordinates = 1
if rowdata != 0:
try:
latitude = rowdata.df[' latitude']
if not latitude.std():
hascoordinates = 0
except (KeyError, AttributeError):
hascoordinates = 0
else:
hascoordinates = 0
if hascoordinates:
mapscript, mapdiv = leaflet_chart(rowdata.df[' latitude'],
rowdata.df[' longitude'],
workout.name)
else:
mapscript = ""
mapdiv = ""
breadcrumbs = [
{
'url':reverse('virtualevents_view'),
'name': 'Challenges'
},
{
'url':reverse('virtualevent_view',
kwargs={'id':race.id}),
'name': race.name
},
{
'url':reverse(virtualevent_disqualify_view,
kwargs={'id':id,
'recordid':recordid}),
'name': 'Disqualify Entry'
},
]
buttons = []
if not request.user.is_anonymous:
if race_can_register(r,race):
buttons += ['registerbutton']
if race_can_adddiscipline(r,race):
buttons += ['adddisciplinebutton']
if race_can_submit(r,race):
buttons += ['submitbutton']
if race_can_resubmit(r,race):
buttons += ['resubmitbutton']
if race_can_withdraw(r,race):
buttons += ['withdrawbutton']
if race_can_edit(r,race):
buttons += ['editbutton']
return render(request,"withdraw_view.html",
{'workout':workout,
'active':'nav-racing',
'graphs':g,
'buttons':buttons,
'interactiveplot':script,
'the_div':div,
'mapscript':mapscript,
'mapdiv':mapdiv,
'form':form,
'race':race,
'record':record,
})
def virtualevent_view(request,id=0):
results = []