Merge branch 'release/v12.57'
This commit is contained in:
@@ -351,6 +351,10 @@
|
||||
<a href="/rowers/virtualevent/{{ race.id }}/compare"
|
||||
title="Compare the workouts of all competitors">Compare Results</a>
|
||||
</p>
|
||||
{% if race.manager == request.user %}
|
||||
<a href="/rowers/virtualevent/{{ race.id }}/download"
|
||||
title="Download Results">Download Results</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<p>
|
||||
No results yet
|
||||
|
||||
@@ -197,6 +197,8 @@ urlpatterns = [
|
||||
views.virtualevent_disqualify_view,name='virtualevent_disqualify_view'),
|
||||
re_path(r'^virtualevent/(?P<id>\d+)/withdrawresult/(?P<recordid>\d+)/',
|
||||
views.virtualevent_withdrawresult_view,name='virtualevent_withdrawresult_view'),
|
||||
re_path(r'^virtualevent/(?P<id>\d+)/download/',
|
||||
views.virtualevent_results_download_view,name='virtualevent_results_download_view'),
|
||||
re_path(r'^list-workouts/$',views.workouts_view,name='workouts_view'),
|
||||
re_path(r'^list-courses/$',views.courses_view,name='courses_view'),
|
||||
re_path(r'^courses/upload/$',views.course_upload_view,name='course_upload_view'),
|
||||
|
||||
@@ -591,6 +591,8 @@ def virtualevent_disqualify_view(request,id=0,recordid=0):
|
||||
messages.info(request,"We have invalidated the result for: "+str(record))
|
||||
|
||||
record.coursecompleted = False
|
||||
record.startsecond = 0
|
||||
record.endsecond = 0
|
||||
record.save()
|
||||
|
||||
url = reverse('virtualevent_view',kwargs={'id':raceid})
|
||||
@@ -733,6 +735,8 @@ def virtualevent_withdrawresult_view(request,id=0,recordid=0):
|
||||
messages.info(request,"We have invalidated the result for: "+str(record))
|
||||
|
||||
record.coursecompleted = False
|
||||
record.startsecond = 0
|
||||
record.endsecond = 0
|
||||
record.save()
|
||||
|
||||
url = reverse('virtualevent_view',kwargs={'id':id})
|
||||
@@ -853,7 +857,7 @@ def virtualevent_view(request,id=0):
|
||||
try:
|
||||
race = VirtualRace.objects.get(id=id)
|
||||
except VirtualRace.DoesNotExist:
|
||||
raise Http404("Virtual Race does not exist")
|
||||
raise Http404("Virtual Challenge does not exist")
|
||||
|
||||
if race.sessiontype == 'race':
|
||||
script,div = course_map(race.course)
|
||||
@@ -1023,6 +1027,40 @@ def virtualevent_view(request,id=0):
|
||||
'comments':comments
|
||||
})
|
||||
|
||||
@login_required()
|
||||
@permission_required('virtualevent.change_race',fn=get_virtualevent_by_pk,raise_exception=True)
|
||||
def virtualevent_results_download_view(request,id=0):
|
||||
r = getrower(request.user)
|
||||
|
||||
try:
|
||||
race = VirtualRace.objects.get(id=id)
|
||||
except VirtualRace.DoesNotExist:
|
||||
raise Http404("Virtual Challenge does not exist")
|
||||
|
||||
if race.sessiontype == 'race':
|
||||
resultobj = VirtualRaceResult
|
||||
else:
|
||||
resultobj = IndoorVirtualRaceResult
|
||||
|
||||
records = resultobj.objects.filter(race=race)
|
||||
|
||||
filename = 'Challenge Results {name} {id} {date}.csv'.format(
|
||||
id=id,
|
||||
name=race.name,
|
||||
date=timezone.now().strftime("%Y-%m-%d %H:%M:%S %Z")
|
||||
)
|
||||
|
||||
df = pd.DataFrame.from_records(records.values())
|
||||
df['workoutid'] = df['workoutid'].apply(lambda x:encoder.encode_hex(x))
|
||||
|
||||
response = HttpResponse(df.to_csv())
|
||||
|
||||
response['Content-Disposition'] = 'attachment; filename="%s"' % filename
|
||||
response['Content-Type'] = 'application/octet-stream'
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def virtualevent_ranking_view(request,id=0):
|
||||
|
||||
results = []
|
||||
@@ -1036,7 +1074,7 @@ def virtualevent_ranking_view(request,id=0):
|
||||
try:
|
||||
race = VirtualRace.objects.get(id=id)
|
||||
except VirtualRace.DoesNotExist:
|
||||
raise Http404("Virtual Race does not exist")
|
||||
raise Http404("Virtual Challenge does not exist")
|
||||
|
||||
if race.sessiontype == 'race':
|
||||
script,div = course_map(race.course)
|
||||
@@ -1210,7 +1248,7 @@ def virtualevent_withdraw_view(request,id=0,recordid=None):
|
||||
try:
|
||||
race = VirtualRace.objects.get(id=id)
|
||||
except VirtualRace.DoesNotExist:
|
||||
raise Http404("Virtual Race does not exist")
|
||||
raise Http404("Virtual Challenge does not exist")
|
||||
|
||||
if race_can_withdraw(r,race):
|
||||
remove_rower_race(r,race,recordid=recordid)
|
||||
@@ -1232,7 +1270,7 @@ def virtualevent_addboat_view(request,id=0):
|
||||
try:
|
||||
race = VirtualRace.objects.get(id=id)
|
||||
except VirtualRace.DoesNotExist:
|
||||
raise Http404("Virtual Race does not exist")
|
||||
raise Http404("Virtual Challenge does not exist")
|
||||
|
||||
if not race_can_adddiscipline(r,race):
|
||||
messages.error(request,"You cannot register for this race")
|
||||
@@ -1402,7 +1440,7 @@ def virtualevent_register_view(request,id=0):
|
||||
try:
|
||||
race = VirtualRace.objects.get(id=id)
|
||||
except VirtualRace.DoesNotExist:
|
||||
raise Http404("Virtual Race does not exist")
|
||||
raise Http404("Virtual Challenge does not exist")
|
||||
|
||||
if not race_can_register(r,race):
|
||||
messages.error(request,"You cannot register for this race")
|
||||
@@ -1598,7 +1636,7 @@ def indoorvirtualevent_register_view(request,id=0):
|
||||
try:
|
||||
race = VirtualRace.objects.get(id=id)
|
||||
except VirtualRace.DoesNotExist:
|
||||
raise Http404("Virtual Race does not exist")
|
||||
raise Http404("Virtual Challenge does not exist")
|
||||
|
||||
if not race_can_register(r,race):
|
||||
messages.error(request,"You cannot register for this race")
|
||||
@@ -2214,7 +2252,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
|
||||
try:
|
||||
race = VirtualRace.objects.get(id=id)
|
||||
except VirtualRace.DoesNotExist:
|
||||
raise Http404("Virtual Race does not exist")
|
||||
raise Http404("Virtual Challenge does not exist")
|
||||
|
||||
start_time = race.start_time
|
||||
start_date = race.startdate
|
||||
|
||||
Reference in New Issue
Block a user