diff --git a/rowers/templates/menu_workout.html b/rowers/templates/menu_workout.html index ea138baf..a503805f 100644 --- a/rowers/templates/menu_workout.html +++ b/rowers/templates/menu_workout.html @@ -260,6 +260,11 @@ TCX +
  • + + FIT + +
  • diff --git a/rowers/urls.py b/rowers/urls.py index b6e01143..14e77eb0 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -494,6 +494,8 @@ urlpatterns = [ name='workout_comment_view'), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/emailtcx/$', views.workout_tcxemail_view, name='workout_tcxemail_view'), + re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/emailfit/$', views.workout_fitemail_view, + name='workout_fitemail_view'), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/emailgpx/$', views.workout_gpxemail_view, name='workout_gpxemail_view'), re_path(r'^workout/(?P\b[0-9A-Fa-f]+\b)/emailcsv/$', views.workout_csvemail_view, diff --git a/rowers/views/exportviews.py b/rowers/views/exportviews.py index e2aa4a00..0b62bdc2 100644 --- a/rowers/views/exportviews.py +++ b/rowers/views/exportviews.py @@ -22,6 +22,27 @@ def workout_tcxemail_view(request, id=0): os.remove(tcxfilename) return response +@permission_required('workout.change_workout', fn=get_workout_by_opaqueid, raise_exception=True) +def workout_fitemail_view(request, id=0): + w = get_workout(id) + + row = rdata(csvfile=w.csvfilename) + + code = str(uuid4()) + fitfilename = code+'.fit' + + workouttype = mytypes.fitmapping.get(w.workouttype, 'generic') + + row.exporttofit(fitfilename, sport=workouttype, notes=w.name) + + with open(fitfilename, 'rb') as f: + response = HttpResponse(f) + response['Content-Disposition'] = 'attachment; filename="%s"' % fitfilename + response['Content-Type'] = 'application/octet-stream' + + os.remove(fitfilename) + return response + @login_required() def plannedsessions_icsemail_view(request, userid=0):