Private
Public Access
1
0

worked through a few more views. Need to do analysis, api, error

This commit is contained in:
Sander Roosendaal
2020-01-14 22:19:29 +01:00
parent 0cff00eb18
commit 62fe025218
4 changed files with 189 additions and 188 deletions

View File

@@ -387,11 +387,6 @@ rules.add_perm('plannedsession.view_session',can_view_session)
rules.add_perm('plannedsession.change_session',can_change_session)
rules.add_perm('plannedsession.delete_session',can_delete_session)
# checkaccessplanuser (models.py)
# getrequestrower, getrequestplanrower
# TEAM (group) permissions
"""
@@ -455,8 +450,44 @@ rules.add_perm('teams.delete_team',can_delete_team)
- rules to add, view, delete, change
- GeoCourse
- rules to add, view, delete, change
- RaceLogo
"""
@rules.predicate
def can_change_course(user,course):
if user.is_anonymous:
return False
return course.manager == user.rower
@rules.predicate
def can_delete_course(user,course):
if user.is_anonymous:
return False
return course.manager == user.rower
@rules.predicate
def can_delete_logo(user,logo):
if user.is_anonymous:
return False
return logo.user == user
@rules.predicate
def can_change_race(user,race):
if user.is_anonymous:
return False
return race.manager == user
rules.add_perm('course.change_course',can_change_course)
rules.add_perm('course.delete_course',can_delete_course)
rules.add_perm('racelogo.delete_logo',can_delete_logo)
rules.add_perm('virtualevent.change_race',can_change_race)
# ANALYSIS permissions

View File

@@ -191,7 +191,7 @@ urlpatterns = [
views.virtualevent_submit_result_view,name='virtualevent_submit_result_view'),
re_path(r'^virtualevent/(?P<id>\d+)/submit/(?P<workoutid>\b[0-9A-Fa-f]+\b)/$',
views.virtualevent_submit_result_view,name='virtualevent_submit_result_view'),
re_path(r'^virtualevent/(?P<raceid>\d+)/disqualify/(?P<recordid>\d+)/',
re_path(r'^virtualevent/(?P<id>\d+)/disqualify/(?P<recordid>\d+)/',
views.virtualevent_disqualify_view,name='virtualevent_disqualify_view'),
re_path(r'^list-workouts/$',views.workouts_view,name='workouts_view'),
re_path(r'^list-courses/$',views.courses_view,name='courses_view'),

View File

@@ -45,7 +45,7 @@ def course_map_view(request,id=0):
return Http404("Course doesn't exist")
script,div = course_map(course)
breadcrumbs = [
{
'url': reverse('virtualevents_view'),
@@ -64,10 +64,10 @@ def course_map_view(request,id=0):
'name': 'Map'
}
]
r = getrower(request.user)
return render(request,
'coursemap.html',
{
@@ -76,21 +76,16 @@ def course_map_view(request,id=0):
'mapscript':script,
'active':'nav-racing',
'rower':r,
'breadcrumbs':breadcrumbs,
'breadcrumbs':breadcrumbs,
})
@login_required()
@permission_required('course.change_course',fn=get_course_by_pk,raise_exception=True)
def course_replace_view(request,id=0):
try:
course = GeoCourse.objects.get(id=id)
except GeoCourse.DoesNotExist:
return Http404("Course doesn't exist")
course = get_object_or_404(GeoCourse,pk=id)
r = getrower(request.user)
if course.manager != r:
raise PermissionDenied("Access denied")
thecourses = GeoCourse.objects.filter(manager=r).exclude(id=id)
@@ -141,18 +136,13 @@ def course_replace_view(request,id=0):
'mapdiv':div,
'mapscript':script,
'form':form})
@login_required()
@permission_required('course.delete_course',fn=get_course_by_pk,raise_exception=True)
def course_delete_view(request,id=0):
try:
course = GeoCourse.objects.get(id=id)
except GeoCourse.DoesNotExist:
return Http404("Course doesn't exist")
course = get_object_or_404(GeoCourse,pk=id)
r = getrower(request.user)
if course.manager != r:
raise PermissionDenied("Access denied")
ps = PlannedSession.objects.filter(course=course)
nosessions = len(ps) == 0
@@ -163,22 +153,17 @@ def course_delete_view(request,id=0):
url = reverse(courses_view)
return HttpResponseRedirect(url)
@login_required()
@permission_required('course.change_course',fn=get_course_by_pk,raise_exception=True)
def course_edit_view(request,id=0):
try:
course = GeoCourse.objects.get(id=id)
except GeoCourse.DoesNotExist:
return Http404("Course doesn't exist")
course = get_object_or_404(GeoCourse,pk=id)
r = getrower(request.user)
if course.manager != r:
raise PermissionDenied("Access denied")
ps = PlannedSession.objects.filter(course=course)
nosessions = len(ps) == 0
script,div = course_map(course)
if request.method == 'POST':
@@ -187,7 +172,7 @@ def course_edit_view(request,id=0):
name = form.cleaned_data['name']
country = form.cleaned_data['country']
notes = form.cleaned_data['notes']
course.name = name
course.country = country
course.notes = notes
@@ -213,7 +198,7 @@ def course_edit_view(request,id=0):
'name': 'Edit'
}
]
return render(request, 'course_edit_view.html',
{
'course':course,
@@ -235,9 +220,9 @@ def course_view(request,id=0):
return Http404("Course doesn't exist")
r = getrower(request.user)
script,div = course_map(course)
breadcrumbs = [
{
'url': reverse('virtualevents_view'),
@@ -266,11 +251,10 @@ def course_view(request,id=0):
)
@login_required()
@permission_required('racelogo.delete_logo',fn=get_logo_by_pk,raise_exception=True)
def logo_delete_view(request,id=0):
try:
logo = RaceLogo.objects.get(id=id)
except RaceLogo.DoesNotExist:
raise Http404("Logo doesn't exist")
logo = get_object_or_404(RaceLogo,pk=id)
if logo.user == request.user:
logo.delete()
@@ -281,28 +265,18 @@ def logo_delete_view(request,id=0):
return HttpResponseRedirect(url)
@login_required()
@permission_required('virtualevent.change_race',fn=get_virtualevent_by_pk,raise_exception=True)
def virtualevent_setlogo_view(request,id=0,logoid=0):
try:
race = VirtualRace.objects.get(id=id)
except VirtualRace.DoesNotExist:
raise Http404("Race doesn't exist")
race = get_object_or_404(VirtualRace,pk=id)
logo = get_object_or_404(RaceLogo,pk=logoid)
try:
logo = RaceLogo.objects.get(id=logoid)
except RaceLogo.DoesNotExist:
raise Http404("Logo doesn't exist")
otherlogos = race.logos.all()
for otherlogo in otherlogos:
otherlogo.race.remove(race)
if logo.user == request.user and race.manager == request.user:
otherlogos = race.logos.all()
for otherlogo in otherlogos:
otherlogo.race.remove(race)
logo.race.add(race)
logo.save()
else:
message = "You do not own this race or this image"
messages.error(request,message)
logo.race.add(race)
logo.save()
url = reverse('virtualevent_view',
kwargs={'id':id})
@@ -318,10 +292,7 @@ def virtualevent_uploadimage_view(request,id=0):
r = getrower(request.user)
try:
race = VirtualRace.objects.get(id=id)
except VirtualRace.DoesNotExist:
raise Http404("Race doesn't exist")
race = get_object_or_404(VirtualRace,pk=id)
logos = RaceLogo.objects.filter(user=request.user).order_by("-creationdatetime")
@@ -348,7 +319,7 @@ def virtualevent_uploadimage_view(request,id=0):
kwargs={'id':id})
return HttpResponseRedirect(url)
form = ImageForm(request.POST, request.FILES)
if form.is_valid():
f = form.cleaned_data['file']
@@ -399,14 +370,14 @@ def virtualevent_uploadimage_view(request,id=0):
else:
return HttpResponseRedirect(url)
else:
form = ImageForm()
if is_ajax:
return {'result':0}
return render(request,'logo_form.html',
{'form':form,
'rower':r,
@@ -425,7 +396,7 @@ def course_upload_view(request):
is_ajax = True
r = getrower(request.user)
if request.method == 'POST':
form = CourseForm(request.POST,request.FILES)
@@ -435,7 +406,7 @@ def course_upload_view(request):
notes = form.cleaned_data['notes']
if f is not None:
filename,path_and_filename = handle_uploaded_file(f)
cs = courses.kmltocourse(path_and_filename)
@@ -443,11 +414,11 @@ def course_upload_view(request):
cname = name+' - '+course['name']
cnotes = notes+'\n\n'+course['description']
polygons = course['polygons']
course = courses.createcourse(r,cname,polygons,notes=cnotes)
os.remove(path_and_filename)
url = reverse(courses_view)
if is_ajax:
return JSONResponse({'result':1,'url':url})
@@ -492,7 +463,7 @@ def virtualevents_view(request):
evaluation_closure__gte=timezone.now()-datetime.timedelta(days=3),
)
races = (races1 | races2).order_by("startdate","start_time")
if not request.user.is_anonymous:
@@ -524,7 +495,7 @@ def virtualevents_view(request):
country__in=countries
)
races = (races1 | races2).order_by("startdate","start_time")
@@ -550,7 +521,7 @@ def virtualevents_view(request):
country__in=countries
).order_by("startdate","start_time")
else:
form = VirtualRaceSelectForm()
if is_ajax:
@@ -558,7 +529,7 @@ def virtualevents_view(request):
{ 'races':races,
'rower':r,
})
breadcrumbs = [
{
'url':reverse('virtualevents_view'),
@@ -576,18 +547,13 @@ def virtualevents_view(request):
)
@login_required()
def virtualevent_disqualify_view(request,raceid=0,recordid=0):
@permission_required('virtualevent.change_race',fn=get_virtualevent_by_pk,raise_exception=True)
def virtualevent_disqualify_view(request,id=0,recordid=0):
r = getrower(request.user)
race = get_object_or_404(VirtualRace,pk=id)
try:
race = VirtualRace.objects.get(id=raceid)
except VirtualRace.DoesNotExist:
raise Http404("Virtual Race does not exist")
if r.user != race.manager:
raise PermissionDenied("Access denied")
if race.sessiontype == 'race':
recordobj = VirtualRaceResult
else:
@@ -603,7 +569,7 @@ def virtualevent_disqualify_view(request,raceid=0,recordid=0):
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':
@@ -619,16 +585,16 @@ def virtualevent_disqualify_view(request,raceid=0,recordid=0):
job = myqueue(queue,handle_send_disqualification_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':raceid})
return HttpResponseRedirect(url)
else:
form = DisqualificationForm(request.POST)
@@ -705,7 +671,7 @@ def virtualevent_disqualify_view(request,raceid=0,recordid=0):
if race_can_edit(r,race):
buttons += ['editbutton']
return render(request,"disqualification_view.html",
{'workout':workout,
'active':'nav-racing',
@@ -723,13 +689,13 @@ def virtualevent_disqualify_view(request,raceid=0,recordid=0):
def virtualevent_view(request,id=0):
results = []
if not request.user.is_anonymous:
r = getrower(request.user)
else:
r = None
try:
race = VirtualRace.objects.get(id=id)
except VirtualRace.DoesNotExist:
@@ -744,8 +710,8 @@ def virtualevent_view(request,id=0):
resultobj = IndoorVirtualRaceResult
records = resultobj.objects.filter(race=race)
buttons = []
# to-do - add DNS
@@ -755,7 +721,7 @@ def virtualevent_view(request,id=0):
race=race,
workoutid__isnull=True,
)
if not request.user.is_anonymous:
if race_can_register(r,race):
@@ -790,14 +756,14 @@ def virtualevent_view(request,id=0):
except KeyError:
boattype = mytypes.waterboattype
try:
try:
boatclass = cd['boatclass']
except KeyError:
if race.sessiontype == 'race':
boatclass = [t for t in mytypes.otwtypes]
else:
boatclass = [t for t in mytypes.otetypes]
age_min = cd['age_min']
age_max = cd['age_max']
@@ -834,8 +800,8 @@ def virtualevent_view(request,id=0):
age__gte=age_min,
age__lte=age_max
).order_by("duration","-distance")
# to-do - add DNS
dns = []
if timezone.now() > race.evaluation_closure:
@@ -860,9 +826,9 @@ def virtualevent_view(request,id=0):
form = RaceResultFilterForm(records=records)
else:
form = None
breadcrumbs = [
{
'url':reverse('virtualevents_view'),
@@ -875,7 +841,7 @@ def virtualevent_view(request,id=0):
'name': race.name
}
]
racelogos = race.logos.all()
if racelogos:
@@ -885,7 +851,7 @@ def virtualevent_view(request,id=0):
comments = PlannedSessionComment.objects.filter(plannedsession=race).order_by("created")
return render(request,'virtualevent.html',
{
'coursescript':script,
@@ -906,13 +872,13 @@ def virtualevent_view(request,id=0):
def virtualevent_ranking_view(request,id=0):
results = []
if not request.user.is_anonymous:
r = getrower(request.user)
else:
r = None
try:
race = VirtualRace.objects.get(id=id)
except VirtualRace.DoesNotExist:
@@ -927,8 +893,8 @@ def virtualevent_ranking_view(request,id=0):
resultobj = IndoorVirtualRaceResult
records = resultobj.objects.filter(race=race)
buttons = []
# to-do - add DNS
@@ -938,7 +904,7 @@ def virtualevent_ranking_view(request,id=0):
race=race,
workoutid__isnull=True,
)
if not request.user.is_anonymous:
if race_can_register(r,race):
@@ -973,14 +939,14 @@ def virtualevent_ranking_view(request,id=0):
except KeyError:
boattype = mytypes.waterboattype
try:
try:
boatclass = cd['boatclass']
except KeyError:
if race.sessiontype == 'race':
boatclass = [t for t in mytypes.otwtypes]
else:
boatclass = [t for t in mytypes.otetypes]
age_min = cd['age_min']
age_max = cd['age_max']
@@ -1017,8 +983,8 @@ def virtualevent_ranking_view(request,id=0):
age__gte=age_min,
age__lte=age_max
).order_by("duration","-distance")
# to-do - add DNS
dns = []
if timezone.now() > race.evaluation_closure:
@@ -1043,9 +1009,9 @@ def virtualevent_ranking_view(request,id=0):
form = RaceResultFilterForm(records=records)
else:
form = None
breadcrumbs = [
{
'url':reverse('virtualevents_view'),
@@ -1058,7 +1024,7 @@ def virtualevent_ranking_view(request,id=0):
'name': race.name
}
]
racelogos = race.logos.all()
if racelogos:
@@ -1132,7 +1098,7 @@ def virtualevent_addboat_view(request,id=0):
boattypes = [record.boattype for record in records]
boatclasses = [record.boatclass for record in records]
allowedboats = tuple([ type for type in mytypes.boattypes if type[0] not in boattypes] )
# we're still here
if request.method == 'POST':
@@ -1151,14 +1117,14 @@ def virtualevent_addboat_view(request,id=0):
sex = r.sex
if mix:
sex = 'mixed'
if boattype == '1x' and r.birthdate:
age = calculate_age(r.birthdate)
sex = r.sex
if sex == 'not specified':
sex = 'male'
if boattype in boattypes and boatclass in boatclasses:
# check if different sexes
therecords = records.filter(
@@ -1167,7 +1133,7 @@ def virtualevent_addboat_view(request,id=0):
thesexes = [record.sex for record in therecords]
if sex in thesexes:
messages.error(
request,
"You have already registered in that boat class/type"
@@ -1199,11 +1165,11 @@ def virtualevent_addboat_view(request,id=0):
)
record.save()
add_rower_race(r,race)
messages.info(
request,
"You have successfully registered for this race. Good luck!"
@@ -1215,14 +1181,14 @@ def virtualevent_addboat_view(request,id=0):
})
return HttpResponseRedirect(url)
else:
initial = {
'age': calculate_age(r.birthdate),
'weightcategory': r.weightcategory,
'adaptiveclass': r.adaptiveclass,
}
form = VirtualRaceResultForm(initial=initial)
breadcrumbs = [
@@ -1243,8 +1209,8 @@ def virtualevent_addboat_view(request,id=0):
'name': 'Add Discipline'
}
]
buttons = []
if not request.user.is_anonymous:
@@ -1311,7 +1277,7 @@ def virtualevent_register_view(request,id=0):
sex = r.sex
if mix:
sex = 'mixed'
if boattype == '1x' and r.birthdate:
age = calculate_age(r.birthdate)
sex = r.sex
@@ -1338,7 +1304,7 @@ def virtualevent_register_view(request,id=0):
)
record.save()
add_rower_race(r,race)
otherrecords = IndoorVirtualRaceResult.objects.filter(
@@ -1357,8 +1323,8 @@ def virtualevent_register_view(request,id=0):
race.name,
race.id
)
messages.info(
request,
"You have successfully registered for this race. Good luck!"
@@ -1370,14 +1336,14 @@ def virtualevent_register_view(request,id=0):
})
return HttpResponseRedirect(url)
else:
initial = {
'age': calculate_age(r.birthdate),
'weightcategory': r.weightcategory,
'adaptiveclass': r.adaptiveclass,
}
form = VirtualRaceResultForm(initial=initial)
breadcrumbs = [
@@ -1419,7 +1385,7 @@ def virtualevent_register_view(request,id=0):
if race_can_edit(r,race):
buttons += ['editbutton']
return render(request,'virtualeventregister.html',
{
'form':form,
@@ -1440,7 +1406,7 @@ def virtualevent_toggle_email_view(request,id=0):
newsetting = False
else:
newsetting = True
for record in records:
record.emailnotifications = newsetting
record.save()
@@ -1454,7 +1420,7 @@ def virtualevent_toggle_email_view(request,id=0):
def indoorvirtualevent_toggle_email_view(request,id=0):
r = getrower(request.user)
race = VirtualRace.objects.get(id=id)
records = IndoorVirtualRaceResult.objects.filter(userid=r.id,
race=race)
@@ -1462,7 +1428,7 @@ def indoorvirtualevent_toggle_email_view(request,id=0):
newsetting = False
else:
newsetting = True
for record in records:
record.emailnotifications = newsetting
record.save()
@@ -1503,7 +1469,7 @@ def indoorvirtualevent_register_view(request,id=0):
boatclass = cd['boatclass']
sex = r.sex
if r.birthdate:
age = calculate_age(r.birthdate)
sex = r.sex
@@ -1529,7 +1495,7 @@ def indoorvirtualevent_register_view(request,id=0):
)
record.save()
add_rower_race(r,race)
otherrecords = IndoorVirtualRaceResult.objects.filter(
@@ -1548,8 +1514,8 @@ def indoorvirtualevent_register_view(request,id=0):
race.name,
race.id
)
messages.info(
request,
"You have successfully registered for this race. Good luck!"
@@ -1561,14 +1527,14 @@ def indoorvirtualevent_register_view(request,id=0):
})
return HttpResponseRedirect(url)
else:
initial = {
'age': calculate_age(r.birthdate),
'weightcategory': r.weightcategory,
'adaptiveclass': r.adaptiveclass,
}
form = IndoorVirtualRaceResultForm(initial=initial)
breadcrumbs = [
@@ -1624,7 +1590,7 @@ def indoorvirtualevent_register_view(request,id=0):
@login_required()
def indoorvirtualevent_create_view(request):
r = getrower(request.user)
if request.method == 'POST':
racecreateform = IndoorVirtualRaceForm(request.POST)
if racecreateform.is_valid():
@@ -1650,7 +1616,7 @@ def indoorvirtualevent_create_view(request):
startdatetime = datetime.datetime.combine(startdate,start_time)
enddatetime = datetime.datetime.combine(enddate,end_time)
startdatetime = pytz.timezone(timezone_str).localize(
startdatetime
)
@@ -1681,7 +1647,7 @@ def indoorvirtualevent_create_view(request):
sessionmode = 'time'
else:
sessionmode = 'distance'
vs = VirtualRace(
name=name,
startdate=startdate,
@@ -1719,7 +1685,7 @@ def indoorvirtualevent_create_view(request):
),
dotweet = dotweet
)
sa.save()
url = reverse('virtualevents_view')
@@ -1728,7 +1694,7 @@ def indoorvirtualevent_create_view(request):
racecreateform = IndoorVirtualRaceForm(timezone=r.defaulttimezone)
breadcrumbs = [
{
'url':reverse('virtualevents_view'),
@@ -1753,7 +1719,7 @@ def indoorvirtualevent_create_view(request):
@login_required()
def virtualevent_create_view(request):
r = getrower(request.user)
if request.method == 'POST':
racecreateform = VirtualRaceForm(request.POST)
if racecreateform.is_valid():
@@ -1779,7 +1745,7 @@ def virtualevent_create_view(request):
startdatetime = datetime.datetime.combine(startdate,start_time)
enddatetime = datetime.datetime.combine(enddate,end_time)
startdatetime = pytz.timezone(timezone_str).localize(
startdatetime
)
@@ -1805,8 +1771,8 @@ def virtualevent_create_view(request):
registration_closure = enddatetime
else:
registration_closure = evaluation_closure
vs = VirtualRace(
name=name,
startdate=startdate,
@@ -1842,7 +1808,7 @@ def virtualevent_create_view(request):
),
dotweet = dotweet
)
sa.save()
url = reverse('virtualevents_view')
return HttpResponseRedirect(url)
@@ -1850,7 +1816,7 @@ def virtualevent_create_view(request):
racecreateform = VirtualRaceForm()
breadcrumbs = [
{
'url':reverse('virtualevents_view'),
@@ -1872,15 +1838,12 @@ def virtualevent_create_view(request):
})
@login_required()
@permission_required('virtualevent.change_race',fn=get_virtualevent_by_pk,raise_exception=True)
def virtualevent_edit_view(request,id=0):
r = getrower(request.user)
try:
race = VirtualRace.objects.get(id=id)
if race.manager != request.user:
raise PermissionDenied("Access denied")
except VirtualRace.DoesNotExist:
raise Http404("Virtual Race does not exist")
race = get_object_or_404(VirtualRace,pk=id)
start_time = race.start_time
start_date = race.startdate
@@ -1900,7 +1863,7 @@ def virtualevent_edit_view(request,id=0):
racecreateform = VirtualRaceForm(request.POST,instance=race)
if racecreateform.is_valid():
cd = racecreateform.cleaned_data
res, message = update_virtualrace(race,cd)
if res:
@@ -1912,7 +1875,7 @@ def virtualevent_edit_view(request,id=0):
kwargs = {
'id':race.id
})
return HttpResponseRedirect(url)
else:
@@ -1937,7 +1900,7 @@ def virtualevent_edit_view(request,id=0):
'name': 'Edit'
}
]
buttons = []
if not request.user.is_anonymous:
@@ -1970,15 +1933,10 @@ def virtualevent_edit_view(request,id=0):
})
@login_required()
@permission_required('virtualevent.change_race',fn=get_virtualevent_by_pk,raise_exception=True)
def indoorvirtualevent_edit_view(request,id=0):
r = getrower(request.user)
try:
race = VirtualRace.objects.get(id=id)
if race.manager != request.user:
raise PermissionDenied("Access denied")
except VirtualRace.DoesNotExist:
raise Http404("Virtual Race does not exist")
race = get_object_or_404(VirtualRace,pk=id)
start_time = race.start_time
start_date = race.startdate
@@ -1998,7 +1956,7 @@ def indoorvirtualevent_edit_view(request,id=0):
racecreateform = IndoorVirtualRaceForm(request.POST,instance=race)
if racecreateform.is_valid():
cd = racecreateform.cleaned_data
res, message = update_indoorvirtualrace(race,cd)
if res:
@@ -2010,14 +1968,14 @@ def indoorvirtualevent_edit_view(request,id=0):
kwargs = {
'id':race.id
})
return HttpResponseRedirect(url)
else:
racecreateform = IndoorVirtualRaceForm(instance=race)
breadcrumbs = [
{
'url':reverse('virtualevents_view'),
@@ -2057,8 +2015,8 @@ def indoorvirtualevent_edit_view(request,id=0):
if race_can_edit(r,race):
buttons += ['editbutton']
return render(request,'virtualeventedit.html',
{
'form':racecreateform,
@@ -2084,7 +2042,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
start_date = race.startdate
startdatetime = datetime.datetime.combine(start_date, start_time)
startdatetime = pytz.timezone(race.timezone).localize(startdatetime)
end_time = race.end_time
end_date = race.enddate
enddatetime = datetime.datetime.combine(end_date, end_time)
@@ -2096,7 +2054,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
resultobj = VirtualRaceResult
else:
resultobj = IndoorVirtualRaceResult
records = resultobj.objects.filter(
userid = r.id,
race=race
@@ -2104,7 +2062,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
entrychoices = []
for record in records:
rtpl = (record.id, record.__str__())
entrychoices.append(rtpl)
@@ -2121,7 +2079,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
}
)
return HttpResponseRedirect(url)
ws = Workout.objects.filter(
user=r,
workouttype__in=mytypes.rowtypes,
@@ -2134,14 +2092,14 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
request,
'You have no workouts executed during the race window. Please upload a result or enter it manually.'
)
url = reverse('virtualevent_view',
kwargs = {
'id':id
})
return HttpResponseRedirect(url)
initialworkouts = [w.id for w in Workout.objects.filter(
user=r,plannedsession=race
@@ -2151,7 +2109,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
workoutdata['initial'] = []
choices = []
for w in ws:
wtpl = (w.id, w.__str__())
choices.append(wtpl)
@@ -2183,7 +2141,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
result,comments,errors,jobid = add_workout_indoorrace(
workouts,race,r,recordid=recordid)
for c in comments:
messages.info(request,c)
for er in errors:
@@ -2217,13 +2175,13 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
race.id
)
# redirect to race page
url = reverse('virtualevent_view',
kwargs = {
'id':race.id
})
return HttpResponseRedirect(url)
else:
@@ -2273,7 +2231,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
if race_can_edit(r,race):
buttons += ['editbutton']
return render(request,'race_submit.html',
{
'race':race,

View File

@@ -285,9 +285,21 @@ def getfavorites(r,row):
return favorites,maxfav
def get_logo_by_pk(request,*args,**kwargs):
id = kwargs['id']
return get_object_or_404(RaceLogo,pk=id)
def get_virtualevent_by_pk(request,*args,**kwargs):
id = kwargs['id']
return get_object_or_404(VirtualRace,pk=id)
def get_promember(request,*args,**kwargs):
return request.user
def get_course_by_pk(request,*args,**kwargs):
id = kwargs['id']
return get_object_or_404(GeoCourse,pk=id)
def get_workout_by_opaqueid(request,id,**kwargs):
pk = encoder.decode_hex(id)
return get_object_or_404(Workout,pk=pk)