Private
Public Access
1
0

better more intuitive course update

This commit is contained in:
Sander Roosendaal
2020-07-11 17:05:21 +02:00
parent 7b552f8da6
commit 6372da689c
10 changed files with 570 additions and 54 deletions

View File

@@ -8,6 +8,7 @@ from rowsandall_app.settings import SITE_URL
from rowers.scoring import *
from django.contrib.gis.geoip2 import GeoIP2
from django import forms
# distance of course from lat_lon in km
def howfaris(lat_lon,course):
@@ -559,6 +560,132 @@ def virtualevent_uploadimage_view(request,id=0):
})
@login_required()
@permission_required('course.change_course',fn=get_course_by_pk,raise_exception=True)
def course_upload_replace_view(request,id=0):
is_ajax = False
if request.is_ajax():
is_ajax = True
r = getrower(request.user)
course = get_object_or_404(GeoCourse,pk=id)
if request.method == 'POST':
form = CourseForm(request.POST,request.FILES)
if form.is_valid():
f = form.cleaned_data['file']
notes = form.cleaned_data['notes']
if f is not None:
filename, path_and_filename = handle_uploaded_file(f)
cs = courses.kmltocourse(path_and_filename)
os.remove(path_and_filename)
if cs and len(cs) > 1:
messages.info(request,'File contained multiple courses. We use the first one.')
if cs:
course = cs[0]
cname = course['name']
cnotes = notes+'\n\n'+course['description']
polygons = course['polygons']
course = courses.createcourse(r,cname,polygons,notes=cnotes)
url = reverse(course_update_confirm,
kwargs = {
'newid':course.id,
'id':id,
}
)
if is_ajax:
return JSONResponse({'result':1,'url':url})
else:
return HttpResponseRedirect(url)
else:
messages.error(request,"File does not contain a course")
else:
messages.error(request,"No file attached")
else:
messages.error(request,"Form is not valid")
else:
form = CourseForm()
form.fields['name'].widget = forms.HiddenInput()
if not is_ajax:
return render(request,'course_form_update.html',
{'form':form,
'course':course,
'active':'nav-racing',
})
else:
return {'result':0}
@login_required()
@permission_required('course.change_course',fn=get_course_by_pk,raise_exception=True)
def course_update_confirm(request,id=0,newid=0):
course = get_object_or_404(GeoCourse,pk=id)
course2 = get_object_or_404(GeoCourse,pk=newid)
r = getrower(request.user)
if request.method == 'POST':
form = CourseConfirmForm(request.POST)
if form.is_valid():
doupdate = form.cleaned_data['doupdate']
if doupdate:
res = courses.replacecourse(course,course2)
messages.info(request,'All challenges with this course are updated')
url = reverse(course_view,
kwargs = {
'id':course2.id,
})
return HttpResponseRedirect(url)
else:
course2.delete()
url = reverse(course_view,
kwargs = {
'id':course.id,
})
return HttpResponseRedirect(url)
else:
form = CourseConfirmForm()
# GET call or invalid form
script, div = course_map(course2)
breadcrumbs = [
{
'url': reverse('virtualevents_view'),
'name': 'Challenges'
},
{
'url': reverse(courses_view),
'name': 'Courses'
},
{
'url': reverse(course_view,kwargs={'id':course.id}),
'name': course.name
},
{
'url': reverse(course_replace_view,kwargs={'id':course.id}),
'name': 'Replace Markers'
}
]
return render(request,
'course_replace_confirm.html',
{'course':course,
'form':form,
'active':'nav-racing',
'breadcrumbs':breadcrumbs,
'rower':r,
'mapdiv':div,
'mapscript':script,
})
# Course upload
@login_required()
def course_upload_view(request):

View File

@@ -64,6 +64,7 @@ from django.contrib.auth import authenticate, login, logout
from rowers.forms import (
ForceCurveOptionsForm,HistoForm,TeamMessageForm,
LoginForm,DocumentsForm,UploadOptionsForm,ImageForm,CourseForm,
CourseConfirmForm,
TeamUploadOptionsForm,WorkFlowLeftPanelForm,WorkFlowMiddlePanelForm,
WorkFlowLeftPanelElement,WorkFlowMiddlePanelElement,
LandingPageForm,PlannedSessionSelectForm,WorkoutSessionSelectForm,