diff --git a/rowers/templates/menu_workout.html b/rowers/templates/menu_workout.html index 1a10cc85..b46f79c2 100644 --- a/rowers/templates/menu_workout.html +++ b/rowers/templates/menu_workout.html @@ -26,6 +26,18 @@  Intervals + {% if workout|water %} +
  • + +  Measured Courses + +
  • + {% endif %} +
  • + +  Intervals + +
  • {% endif %} {% if user.is_authenticated %}
  • diff --git a/rowers/templates/workout_courses.html b/rowers/templates/workout_courses.html new file mode 100644 index 00000000..1a177d37 --- /dev/null +++ b/rowers/templates/workout_courses.html @@ -0,0 +1,79 @@ +{% extends "newbase.html" %} +{% load static %} +{% load rowerfilters %} +{% load leaflet_tags %} + +{% block meta %} +{% leaflet_js %} +{% leaflet_css %} +{% endblock %} + +{% block scripts %} + +{% endblock %} + +{% block title %}{{ workout.name }} {% endblock %} +{% block og_title %}{{ workout.name }} {% endblock %} +{% block description %}{{ workout.name }} +{{ workout.date }} - {{ workout.distance }}m - {{ workout.duration |durationprint:"%H:%M:%S.%f" }}{% endblock %} +{% block og_description %}{{ workout.name }} +{{ workout.date }} - {{ workout.distance }}m - {{ workout.duration |durationprint:"%H:%M:%S.%f" }}{% endblock %} + + + +{% block main %} + +

    {{ workout.name }}

    +
      +
    • + {% if records %} +
    • +

      Course Results

      + + + + + + + + + + {% for record in records %} + + + + + {% endfor %} + +
      CourseTimeDistance
      {{ record.course.name }}{{ record.duration |durationprint:"%H:%M:%S.%f" }}{{ record.distance }} m
      +
    • + {% endif %} + + + + + + + + + + + + + + + + + + + + +
      Rower:{{ first_name }} {{ last_name }}
      Name:{{ workout.name }}
      Date:{{ workout.date }}
      Time:{{ workout.starttime }}
      Distance:{{ workout.distance }}m
      Duration:{{ workout.duration |durationprint:"%H:%M:%S.%f" }}
      Type:{{ workout.workouttype }}
      Weight Category:{{ workout.weightcategory }}
      + +
    + +{% endblock %} + +{% block sidebar %} +{% include 'menu_workout.html' %} +{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index 2a30043a..7e07eeb3 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -650,6 +650,8 @@ urlpatterns = [ re_path(r'^register/thankyou/$', TemplateView.as_view(template_name='registerthankyou.html'), name='registerthankyou'), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/workflow/$',views.workout_workflow_view, name='workout_workflow_view'), + re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/courses/$',views.workout_course_view, + name='workout_course_view'), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/flexchart/(?P[\w\ ]+.*)/(?P[\w\ ]+.*)/(?P[\w\ ]+.*)/(?P\w+)/$',views.workout_flexchart3_view,name='workout_flexchart3_view'), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/flexchart/(?P\w+.*)/(?P[\w\ ]+.*)/(?P[\w\ ]+.*)/(?P\w+.*)/$',views.workout_flexchart3_view,name='workout_flexchart3_view'), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/flexchart/(?P\w+.*)/(?P[\w\ ]+.*)/(?P[\w\ ]+.*)/$',views.workout_flexchart3_view,name='workout_flexchart3_view'), diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py index 06b7e6d5..3d43e00f 100644 --- a/rowers/views/workoutviews.py +++ b/rowers/views/workoutviews.py @@ -6058,6 +6058,54 @@ def workout_fusion_view(request,id1=0,id2=1): 'workout2':w2, }) +# See attached courses +@login_required() +@permission_required('workout.change_workout',fn=get_workout_by_opaqueid, raise_exception=True) +def workout_course_view(request, id): + row = get_workout_by_opaqueid(request,id) + r = getrower(request.user) + breadcrumbs = [ + { + 'url':'/rowers/list-workouts/', + 'name':'Workouts' + }, + { + 'url':get_workout_default_page(request,encoder.encode_hex(row.id)), + 'name': row.name + }, + { + 'url':reverse('workout_course_view',kwargs={'id':id}), + 'name': 'Measured Courses' + } + + ] + + courses = [] + courseselecform = CourseSelectForm() + has_latlon,lat_mean,lon_mean = dataprep.workout_has_latlon(row.id) + if has_latlon: + courses = getnearestcourses([lat_mean,lon_mean],GeoCourse.objects.all(),whatisnear=25, + strict=True) + courseselectform = CourseSelectForm(choices=courses) + + # get results + records = VirtualRaceResult.objects.filter( + course__isnull=False, + workoutid=row.id, + coursecompleted=True).order_by("duration","-distance") + + + return render(request, 'workout_courses.html', + {'workout':row, + 'rower':r, + 'breadcrumbs':breadcrumbs, + 'active':'nav-workouts', + 'teams':get_my_teams(request.user), + 'courses':courses, + 'courseselectform':courseselectform, + 'records':records, + }) + # Edit the splits/summary @login_required()