From 57fe6413e64b5235c77376753c379524442a77c6 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 16 Dec 2022 08:18:13 +0100 Subject: [PATCH] adding simple power form --- rowers/models.py | 13 +++++++ rowers/templates/rower_simplepreferences.html | 28 +++++++++++++++ rowers/urls.py | 4 +++ rowers/views/statements.py | 2 +- rowers/views/userviews.py | 34 +++++++++++++++++++ 5 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 rowers/templates/rower_simplepreferences.html diff --git a/rowers/models.py b/rowers/models.py index e533f129..51848378 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -4220,7 +4220,20 @@ class RowerExportForm(ModelForm): ] # Simple form to set rower's Functional Threshold Power +class SimpleRowerPowerForm(ModelForm): + otwftp = forms.IntegerField(initial=0,required=False, label='FTP on water') + class Meta: + model = Rower + fields = ['ftp'] + def __init__(self, *args, **kwargs): + super(SimpleRowerPowerForm, self).__init__(*args, **kwargs) + self.initial['otwftp'] = int((1-0.01*self.instance.otwslack)*self.instance.ftp) + + def save(self, *args, **kwargs): + otwslack = -100.*(self.cleaned_data['otwftp']-self.cleaned_data['ftp'])/(self.cleaned_data['ftp']) + self.instance.otwslack = otwslack + return super(SimpleRowerPowerForm, self).save(*args, **kwargs) class RowerPowerForm(ModelForm): class Meta: diff --git a/rowers/templates/rower_simplepreferences.html b/rowers/templates/rower_simplepreferences.html new file mode 100644 index 00000000..b7b697be --- /dev/null +++ b/rowers/templates/rower_simplepreferences.html @@ -0,0 +1,28 @@ +{% extends "newbase.html" %} +{% load static %} +{% load rowerfilters %} + +{% block title %}Change Rower Preferences{% endblock %} + +{% block main %} +

Functional Threshold Power for {{ rower.user.first_name }} {{ rower.user.last_name }}

+ +
    +
  • +
    + + {{ form.as_table }} +
    + {% csrf_token %} + +
    +
  • +
+ + + +{% endblock %} + +{% block sidebar %} +{% include 'menu_profile.html' %} +{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index fe555ae3..cd51fe38 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -782,10 +782,14 @@ urlpatterns = [ views.rower_edit_view, name='rower_edit_view'), re_path(r'^me/preferences/$', views.rower_prefs_view, name='rower_prefs_view'), + re_path(r'^me/prefs/$', views.rower_simpleprefs_view, + name='rower_simpleprefs_view'), re_path(r'^me/transactions/$', views.transactions_view, name='transactions_view'), re_path(r'^me/preferences/user/(?P\d+)/$', views.rower_prefs_view, name='rower_prefs_view'), + re_path(r'^me/prefs/user/(?P\d+)/$', + views.rower_simpleprefs_view, name='rower_simpleprefs_view'), re_path(r'^me/edit/(.+.*)/$', views.rower_edit_view, name='rower_edit_view'), re_path(r'^me/c2authorize/$', views.rower_c2_authorize, name='rower_c2_authorize'), diff --git a/rowers/views/statements.py b/rowers/views/statements.py index 9aa224db..93a8350d 100644 --- a/rowers/views/statements.py +++ b/rowers/views/statements.py @@ -159,7 +159,7 @@ from rowers.models import ( VirtualRaceFollower, TombStone, InstantPlan, PlannedSessionStep,InStrokeAnalysis, ForceCurveAnalysis ) -from rowers.models import ( RowerPowerForm, RowerHRZonesForm, +from rowers.models import ( RowerPowerForm, RowerHRZonesForm, SimpleRowerPowerForm, RowerForm, RowerCPForm, GraphImage, AdvancedWorkoutForm, RowerPowerZonesForm, AccountRowerForm, UserForm, Team, TeamForm, TeamInviteForm, TeamInvite, TeamRequest, WorkoutComment, diff --git a/rowers/views/userviews.py b/rowers/views/userviews.py index cd744ffd..144d2d33 100644 --- a/rowers/views/userviews.py +++ b/rowers/views/userviews.py @@ -551,6 +551,40 @@ def rower_edit_view(request, rowerid=0, userid=0, message=""): 'rower': r, }) +#simple initial settings page +@login_required() +@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True) +def rower_simpleprefs_view(request, userid=0): + r = getrequestrowercoachee(request, userid=userid, notpermanent=True) + + breadcrumbs = [ + { + 'url': '/rowers/me/edit/', + 'name': 'Profile' + }, + { + 'url': reverse('rower_simpleprefs_view'), + 'name': 'Zones' + } + ] + + form = SimpleRowerPowerForm(instance=r) + + if request.method == 'POST': + form = SimpleRowerPowerForm(request.POST, instance=r) + if form.is_valid(): + form.save(commit=True) + messages.info(request,'FTP and OTW FTP saved') + + return render(request, 'rower_simplepreferences.html', + { + 'form': form, + 'teams': get_my_teams(request.user), + 'breadcrumbs': breadcrumbs, + 'rower': r, + }) + + # Page where user can set his details # Add email address to form so user can change his email address