courses functionality
This commit is contained in:
@@ -62,7 +62,7 @@ from rowers.models import (
|
||||
Team,TeamForm,TeamInviteForm,TeamInvite,TeamRequest,
|
||||
WorkoutComment,WorkoutCommentForm,RowerExportForm,
|
||||
CalcAgePerformance,PowerTimeFitnessMetric,PlannedSessionForm,
|
||||
PlannedSessionFormSmall,
|
||||
PlannedSessionFormSmall,GeoCourseEditForm,
|
||||
)
|
||||
from rowers.models import (
|
||||
FavoriteForm,BaseFavoriteFormSet,SiteAnnouncement,BasePlannedSessionFormSet
|
||||
@@ -6051,9 +6051,20 @@ def boxplot_view(request,userid=0,
|
||||
def courses_view(request):
|
||||
r = getrower(request.user)
|
||||
|
||||
courses = GeoCourse.objects.all().order_by("country")
|
||||
courses = GeoCourse.objects.all().order_by("country","name")
|
||||
|
||||
# add search processing
|
||||
query = request.GET.get('q')
|
||||
if query:
|
||||
query_list = query.split()
|
||||
courses = GeoCourse.objects.filter(
|
||||
reduce(operator.and_,
|
||||
(Q(name__icontains=q) for q in query_list)) |
|
||||
reduce(operator.and_,
|
||||
(Q(country__icontains=q) for q in query_list)) |
|
||||
reduce(operator.and_,
|
||||
(Q(notes__icontains=q) for q in query_list))
|
||||
)
|
||||
|
||||
return render(request,'list_courses.html',
|
||||
{'courses':courses,
|
||||
@@ -8444,7 +8455,40 @@ def course_edit_view(request,id=0):
|
||||
|
||||
ps = PlannedSession.objects.filter(course=course)
|
||||
nosessions = len(ps) == 0
|
||||
|
||||
script,div = course_map(course)
|
||||
|
||||
if request.method == 'POST':
|
||||
form = GeoCourseEditForm(request.POST)
|
||||
if form.is_valid():
|
||||
name = form.cleaned_data['name']
|
||||
notes = form.cleaned_data['notes']
|
||||
|
||||
course.name = name
|
||||
course.notes = notes
|
||||
course.save()
|
||||
|
||||
form = GeoCourseEditForm(instance=course)
|
||||
|
||||
return render(request, 'course_edit_view.html',
|
||||
{
|
||||
'course':course,
|
||||
'mapscript':script,
|
||||
'mapdiv':div,
|
||||
'nosessions':nosessions,
|
||||
'rower':r,
|
||||
'form':form,
|
||||
}
|
||||
)
|
||||
|
||||
@login_required()
|
||||
def course_view(request,id=0):
|
||||
try:
|
||||
course = GeoCourse.objects.get(id=id)
|
||||
except GeoCourse.DoesNotExist:
|
||||
return Http404("Course doesn't exist")
|
||||
|
||||
r = getrower(request.user)
|
||||
|
||||
script,div = course_map(course)
|
||||
|
||||
@@ -8453,7 +8497,8 @@ def course_edit_view(request,id=0):
|
||||
'course':course,
|
||||
'mapscript':script,
|
||||
'mapdiv':div,
|
||||
'nosessions':nosessions,
|
||||
'nosessions':False,
|
||||
'rower':r,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -8945,9 +8990,15 @@ def course_upload_view(request):
|
||||
if f is not None:
|
||||
filename,path_and_filename = handle_uploaded_file(f)
|
||||
|
||||
polygons = courses.kmltocourse(path_and_filename)
|
||||
cs = courses.kmltocourse(path_and_filename)
|
||||
|
||||
course = courses.createcourse(r,name,polygons,notes=notes)
|
||||
for course in cs:
|
||||
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)
|
||||
@@ -12571,6 +12622,12 @@ def plannedsession_view(request,id=0,rowerid=0,
|
||||
raise Http404("Planned Session does not exist")
|
||||
|
||||
|
||||
if ps.course:
|
||||
coursescript,coursediv = course_map(ps.course)
|
||||
else:
|
||||
coursescript = ''
|
||||
coursediv = ''
|
||||
|
||||
if ps.manager != request.user and r not in ps.rower.all():
|
||||
raise PermissionDenied("You do not have access to this session")
|
||||
|
||||
@@ -12623,6 +12680,8 @@ def plannedsession_view(request,id=0,rowerid=0,
|
||||
'plannedsession':ps,
|
||||
'timeperiod':timeperiod,
|
||||
'ranking':ranking,
|
||||
'coursescript': coursescript,
|
||||
'coursediv': coursediv
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user