better more intuitive course update
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user