adding functionality to make it easier to do timed courses
This commit is contained in:
@@ -356,7 +356,7 @@ def course_unfollow_view(request, id=0):
|
||||
url = reverse("courses_view")
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
def course_view(request, id=0):
|
||||
def course_view(request, id=0, workoutid=0):
|
||||
try:
|
||||
course = GeoCourse.objects.get(id=id)
|
||||
except GeoCourse.DoesNotExist: # pragma: no cover
|
||||
@@ -477,6 +477,7 @@ def course_view(request, id=0):
|
||||
'rower': r,
|
||||
'form': form,
|
||||
'onlyme': onlyme,
|
||||
'workoutid': workoutid,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -4540,24 +4540,13 @@ def workout_edit_view(request, id=0, message="", successmessage=""):
|
||||
|
||||
hascoordinates = 1
|
||||
courses = []
|
||||
if rowdata != 0:
|
||||
try:
|
||||
latitude = rowdata.df[' latitude']
|
||||
longitude = rowdata.df[' longitude']
|
||||
if not latitude.std(): # pragma: no cover
|
||||
hascoordinates = 0
|
||||
if not longitude.std():
|
||||
hascoordinates = 0
|
||||
except (KeyError, AttributeError):
|
||||
hascoordinates = 0
|
||||
|
||||
else: # pragma: no cover
|
||||
hascoordinates = 0
|
||||
suggested_courses = []
|
||||
has_latlon, lat_mean, lon_mean = dataprep.workout_has_latlon(row.id)
|
||||
|
||||
mapscript = ""
|
||||
mapdiv = ""
|
||||
|
||||
if hascoordinates:
|
||||
if has_latlon:
|
||||
try:
|
||||
mapscript, mapdiv = leaflet_chart(
|
||||
rowdata.df[' latitude'],
|
||||
@@ -4570,6 +4559,12 @@ def workout_edit_view(request, id=0, message="", successmessage=""):
|
||||
workoutid=row.id, userid=row.user.user.id, coursecompleted=True)
|
||||
if records.count() > 0: # pragma: no cover
|
||||
courses = list(set([record.course for record in records]))
|
||||
suggested_courses = getnearestcourses([lat_mean, lon_mean], GeoCourse.objects.all(), whatisnear=25,
|
||||
strict=True)
|
||||
|
||||
suggested_courses = list(set(courses) ^ set(suggested_courses))
|
||||
|
||||
|
||||
|
||||
breadcrumbs = [
|
||||
{
|
||||
@@ -4608,6 +4603,7 @@ def workout_edit_view(request, id=0, message="", successmessage=""):
|
||||
'mapdiv': mapdiv,
|
||||
'rower': r,
|
||||
'courses': courses,
|
||||
'suggested_courses': suggested_courses,
|
||||
})
|
||||
|
||||
|
||||
@@ -6102,8 +6098,71 @@ def workout_fusion_view(request, id1=0, id2=1):
|
||||
'workout2': w2,
|
||||
})
|
||||
|
||||
# See attached courses
|
||||
# See attached courses / attaching courses
|
||||
|
||||
@login_required()
|
||||
@permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True)
|
||||
def workout_submit_course_view(request, id, courseid):
|
||||
row = get_workout_by_opaqueid(request, id)
|
||||
r = getrower(request.user)
|
||||
try:
|
||||
course = GeoCourse.objects.get(id=courseid)
|
||||
except GeoCourse.DoesNotExist:
|
||||
url = reverse('workout_edit_view', kwargs={'id': encoder.encode_hex(row.id)})
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
# got a course
|
||||
records = VirtualRaceResult.objects.filter(
|
||||
userid = r.id,
|
||||
course=course,
|
||||
workoutid=row.id
|
||||
)
|
||||
if records:
|
||||
record = records[0]
|
||||
else:
|
||||
# create record
|
||||
record = VirtualRaceResult(
|
||||
userid=r.id,
|
||||
username=r.user.first_name+' '+r.user.last_name,
|
||||
workoutid=row.id,
|
||||
weightcategory=r.weightcategory,
|
||||
adaptiveclass=r.adaptiveclass,
|
||||
course=course,
|
||||
distance=course.distance,
|
||||
boatclass=row.workouttype,
|
||||
boattype=row.boattype,
|
||||
sex=r.sex,
|
||||
age=calculate_age(r.birthdate),
|
||||
)
|
||||
record.save()
|
||||
|
||||
job = myqueue(
|
||||
queuehigh,
|
||||
handle_check_race_course,
|
||||
row.csvfilename,
|
||||
row.id,
|
||||
course.id,
|
||||
record.id,
|
||||
r.user.email,
|
||||
r.user.first_name,
|
||||
summary=True,
|
||||
successemail=True,
|
||||
)
|
||||
|
||||
try:
|
||||
request.session['async_tasks'] += [
|
||||
(job.id, 'check_race_course')]
|
||||
except KeyError: # pragma: no cover
|
||||
request.session['async_tasks'] = [
|
||||
(job.id, 'check_race_course')]
|
||||
|
||||
messages.info(request, 'We are checking your time on the course in the background." \
|
||||
" You will receive an email when the check is complete." \
|
||||
" You can check the status <a href="/rowers/jobs-status/" target="_blank">here</a>')
|
||||
|
||||
url = reverse('workout_edit_view', kwargs={'id': encoder.encode_hex(row.id)})
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
@login_required()
|
||||
@permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True)
|
||||
|
||||
Reference in New Issue
Block a user