Private
Public Access
1
0

adding functionality to make it easier to do timed courses

This commit is contained in:
2024-10-31 10:30:23 +01:00
parent a80c523c3b
commit c3504bd86e
7 changed files with 123 additions and 16 deletions

View File

@@ -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,
}
)

View File

@@ -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)