Private
Public Access
1
0

adding courses upload and course delete

This commit is contained in:
Sander Roosendaal
2018-02-20 22:50:34 +01:00
parent 00a6dae6aa
commit d3e3925625
10 changed files with 382 additions and 47 deletions

View File

@@ -27,7 +27,7 @@ from django.http import (
)
from django.contrib.auth import authenticate, login, logout
from rowers.forms import (
LoginForm,DocumentsForm,UploadOptionsForm,ImageForm,
LoginForm,DocumentsForm,UploadOptionsForm,ImageForm,CourseForm,
TeamUploadOptionsForm,WorkFlowLeftPanelForm,WorkFlowMiddlePanelForm,
WorkFlowLeftPanelElement,WorkFlowMiddlePanelElement,
LandingPageForm,PlannedSessionSelectForm,WorkoutSessionSelectForm,
@@ -69,6 +69,7 @@ from rowers.models import (
)
from rowers.metrics import rowingmetrics,defaultfavoritecharts
from rowers import metrics
from rowers import courses
import rowers.uploads as uploads
from django.forms.formsets import formset_factory
from django.forms import modelformset_factory
@@ -6052,6 +6053,8 @@ def courses_view(request):
courses = GeoCourse.objects.all().order_by("country")
# add search processing
return render(request,'list_courses.html',
{'courses':courses,
'rower':r,
@@ -8405,6 +8408,28 @@ def workout_comment_view(request,id=0):
'form':form,
})
@login_required()
def course_delete_view(request,id=0):
try:
course = GeoCourse.objects.get(id=id)
except GeoCourse.DoesNotExist:
return Http404("Course doesn't exist")
r = getrower(request.user)
if course.manager != r:
raise PermissionDenied("Access denied")
ps = PlannedSession.objects.filter(course=course)
nosessions = len(ps) == 0
if nosessions:
course.delete()
url = reverse(courses_view)
return HttpResponseRedirect(url)
@login_required()
def course_edit_view(request,id=0):
try:
@@ -8412,7 +8437,15 @@ def course_edit_view(request,id=0):
except GeoCourse.DoesNotExist:
return Http404("Course doesn't exist")
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)
return render(request, 'course_view.html',
@@ -8420,6 +8453,7 @@ def course_edit_view(request,id=0):
'course':course,
'mapscript':script,
'mapdiv':div,
'nosessions':nosessions,
}
)
@@ -8892,6 +8926,58 @@ def workout_uploadimage_view(request,id):
else:
return {'result':0}
# Image upload
@login_required()
def course_upload_view(request):
is_ajax = False
if request.is_ajax():
is_ajax = True
r = getrower(request.user)
if request.method == 'POST':
form = CourseForm(request.POST,request.FILES)
if form.is_valid():
f = form.cleaned_data['file']
name = form.cleaned_data['name']
notes = form.cleaned_data['notes']
if f is not None:
filename,path_and_filename = handle_uploaded_file(f)
polygons = courses.kmltocourse(path_and_filename)
course = courses.createcourse(r,name,polygons,notes=notes)
os.remove(path_and_filename)
url = reverse(courses_view)
if is_ajax:
return JSONResponse({'result':1,'url':url})
else:
return HttpResponseRedirect(url)
else:
messages.error(request,'Something went wrong - no file attached')
url = reverse(course_upload_view)
if is_ajax:
return JSONResponse({'result':0,'url':0})
else:
return HttpResponseRedirect(url)
else:
messages.error(request,'Form is not valid')
return render(request,'course_form.html',
{'form':form,
})
else:
if not is_ajax:
form = CourseForm()
return render(request,'course_form.html',
{'form':form,
})
else:
return {'result':0}
# Generic chart creation