Private
Public Access
1
0

Merge branch 'release/v18.9.0'

This commit is contained in:
Sander Roosendaal
2022-12-17 17:31:02 +01:00
44 changed files with 333 additions and 139 deletions
+13 -2
View File
@@ -82,6 +82,7 @@ from rowingdata import (
from rowers.dataroutines import *
from rowers.tasks import (
handle_sendemail_newftp,
handle_sendemail_unrecognized, handle_setcp,
handle_getagegrouprecords, handle_update_wps,
handle_request_post, handle_calctrimp,
@@ -721,23 +722,33 @@ def update_rolling_cp(r, types, mode='water'):
powerdf.drop_duplicates(subset='Delta', keep='first', inplace=True)
res2 = datautils.cpfit(powerdf)
p1 = res2[0]
# calculate FTP
hourseconds = 3600.
pwr = p1[0]/(1+hourseconds/p1[2])
pwr += p1[1]/(1+hourseconds/p1[3])
if len(powerdf) != 0:
if mode == 'water':
p1 = res2[0]
r.p0 = p1[0]
r.p1 = p1[1]
r.p2 = p1[2]
r.p3 = p1[3]
r.cpratio = res2[3]
r.save()
if pwr-5 > r.ftp*(100.-r.otwslack)/100. and r.getemailnotifications and not r.emailbounced:
_ = myqueue(queuehigh, handle_sendemail_newftp,r,pwr,'water')
else:
p1 = res2[0]
r.ep0 = p1[0]
r.ep1 = p1[1]
r.ep2 = p1[2]
r.ep3 = p1[3]
r.ecpratio = res2[3]
r.save()
if pwr-5 > r.ftp and r.getemailnotifications and not r.emailbounced:
_ = myqueue(queuehigh, handle_sendemail_newftp,r,pwr,'water')
return True
return False
+22 -1
View File
@@ -33,7 +33,8 @@ allowed_paths = [
'/rowers/me/gdpr-optin-confirm'
'/rowers/exportallworkouts/',
'/rowers/exportallworkouts',
'/rowers/survey/'
'/rowers/survey/',
'/rowers/me/prefs/'
]
@@ -58,6 +59,26 @@ class SurveyMiddleWare(object):
return response
class FTPMiddleWare(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.user.is_authenticated and request.path not in allowed_paths:
r = getrower(request.user)
nexturl = request.path
if 'ftp' in nexturl: # pragma: no cover
nexturl = '/rowers/me/prefs/'
mustsetftp = not r.ftpset
if mustsetftp: # pragma: no cover
return redirect(
'/rowers/me/prefs/?next=%s' % nexturl
)
response = self.get_response(request)
return response
class GDPRMiddleWare(object):
def __init__(self, get_response):
+30 -4
View File
@@ -919,6 +919,7 @@ class Rower(models.Model):
# Privacy Data
gdproptin = models.BooleanField(default=False)
gdproptindate = models.DateTimeField(blank=True, null=True)
ftpset = models.BooleanField(default=False)
surveydone = models.BooleanField(default=False)
surveydonedate = models.DateTimeField(blank=True, null=True)
@@ -4220,12 +4221,37 @@ class RowerExportForm(ModelForm):
]
# Simple form to set rower's Functional Threshold Power
class RowerPowerForm(ModelForm):
class SimpleRowerPowerForm(ModelForm):
otwftp = forms.IntegerField(initial=0,required=False, label='FTP on water')
class Meta:
model = Rower
fields = ['hrftp', 'ftp', 'otwslack','cogganzones']
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):
otwftp = forms.IntegerField(initial=0,required=False, label='FTP on water')
class Meta:
model = Rower
fields = ['hrftp', 'ftp','cogganzones']
field_order = ['hrftp', 'ftp', 'otwftp', 'cogganzones']
def __init__(self, *args, **kwargs):
super(RowerPowerForm, 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(RowerPowerForm, self).save(*args, **kwargs)
class RowerCPForm(ModelForm):
+20
View File
@@ -1712,6 +1712,26 @@ def handle_sendemail_expired(useremail, userfirstname, userlastname, expireddate
d, cc=['support@rowsandall.com'], **kwargs)
return 1
@app.task
def handle_sendemail_newftp(rower,power,mode, **kwargs):
subject = "You may want to update your FTP on rowsandall.com"
from_email = 'Rowsandall <info@rowsandall.com>'
power = int(power)
d = {
'first_name': rower.user.first_name,
'last_name': rower.user.last_name,
'siteurl': siteurl,
'ftp': rower.ftp,
'newftp': power,
}
_ = send_template_email(from_email, [rower.user.email],
subject, 'newftpemail.html',
d, **kwargs)
return 1
@app.task
def handle_sendemail_breakthrough(workoutid, useremail,
+8 -3
View File
@@ -2,9 +2,9 @@
{% load rowerfilters %}
<h1><a href="/rowers/me/edit/">Profile</a></h1>
<ul class="cd-accordion-menu animated">
<li id="manage-prefs">
<a href="/rowers/me/preferences/">
<i class="fas fa-cog fa-fw"></i>&nbsp;Zones & Fitness
<li id="manage-prefs-simple">
<a href="/rowers/me/prefs/">
<i class="fas fa-sliders-v-square fa-fw"></i>&nbsp;Threshold
</a>
</li>
<li id="manage-impex">
@@ -27,6 +27,11 @@
<i class="fas fa-tachometer-alt-slow fa-fw"></i>&nbsp;Manage Workflow
</a>
</li>
<li id="manage-prefs">
<a href="/rowers/me/preferences/">
<i class="fas fa-cog fa-fw"></i>&nbsp;Zones & Fitness, detailed
</a>
</li>
{% if user.is_authenticated and user.is_staff %}
<li id="manage-transactions">
<a href="/rowers/me/transactions/">
+24
View File
@@ -0,0 +1,24 @@
{% extends "emailbase.html" %}
{% block body %}
<p>Dear <strong>{{ first_name }} {{ last_name }}</strong>,</p>
<p>
{% if mode == 'water' %}
Your 1 hour rowing effort on water has improved. Your current FTP setting on Rowsandall is
{{ ftp }} Watt. Your recent 1 hour effort is {{ newftp }} Watt.
{% else %}
Your 1 hour effort on the indoor rower has improved. Your current FTP setting on Rowsandall is
{{ ftp }} Watt. Your recent 1 hour effort is {{ newftp }} Watt.
{% endif %}
</p>
<p>
You can set the new value on <a href="{{siteurl}}/rowers/me/prefs/">this settings page</a>.
</p>
<p>
Best Regards, the Rowsandall Team
</p>
{% endblock %}
@@ -0,0 +1,41 @@
{% extends "newbase.html" %}
{% load static %}
{% load rowerfilters %}
{% block title %}Change Rower Preferences{% endblock %}
{% block main %}
<h1>Functional Threshold Power for {{ rower.user.first_name }} {{ rower.user.last_name }}</h1>
<ul class="main-content">
<li class="grid_2">
<form enctype="multipart/form-data" action="" method="post">
<table>
{{ form.as_table }}
</table>
{% csrf_token %}
<input type="submit" value="Update">
</form>
</li>
<li class="grid_2">
<p>
The Functional Threshold Power (FTP) is the power you can hold
for an hour all out. If you haven't done a full out hour, you
can also take a full out 20 minutes effort and take 95% of it.
</p>
<p>
If you do not row with a power meter on the water, the FTP on
water is irrelevant. If you do not know your 20 minute or full
hour full out power value on the water, take 85% of your indoor
rowing value.
</p>
</li>
</ul>
{% endblock %}
{% block sidebar %}
{% include 'menu_profile.html' %}
{% endblock %}
+1 -1
View File
@@ -50,7 +50,7 @@ class AjaxTests(TestCase):
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,
r = Rower.objects.create(user=u,gdproptin=True, ftpset=True,
gdproptindate=timezone.now()
)
self.nu = datetime.datetime.now()
+5 -4
View File
@@ -20,7 +20,8 @@ class VirtualEventViewTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True, surveydone=True,gdproptindate=timezone.now(),
rowerplan='coach')
self.c = Client()
@@ -36,7 +37,7 @@ class VirtualEventViewTest(TestCase):
self.rpiet = Rower.objects.create(user=self.upiet,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic')
self.piet_workouts = WorkoutFactory.create_batch(5, user=self.rpiet)
@@ -49,7 +50,7 @@ class VirtualEventViewTest(TestCase):
self.rklaas = Rower.objects.create(user=self.uklaas,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic')
self.klaas_workouts = WorkoutFactory.create_batch(5, user=self.rklaas)
@@ -62,7 +63,7 @@ class VirtualEventViewTest(TestCase):
self.rhenk = Rower.objects.create(user=self.uhenk,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic')
self.henk_workouts = WorkoutFactory.create_batch(5, user=self.rhenk)
+12 -12
View File
@@ -19,7 +19,7 @@ class ListWorkoutTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -73,7 +73,7 @@ class PlannedSessionTests(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -124,7 +124,7 @@ class ForcecurveTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -161,7 +161,7 @@ class WorkoutCompareTestNew(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -259,7 +259,7 @@ class WorkoutBoxPlotTestNew(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -356,7 +356,7 @@ class WorkoutHistoTestNew(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -453,7 +453,7 @@ class History(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -540,7 +540,7 @@ class GoldMedalScores(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -640,7 +640,7 @@ class WorkoutFlexallTestNew(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -737,7 +737,7 @@ class WorkoutStatsTestNew(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -1038,7 +1038,7 @@ class MarkerPerformanceTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -1236,7 +1236,7 @@ class AlertTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
+1 -1
View File
@@ -33,7 +33,7 @@ class OwnApi(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',subscription_id=1)
+1 -1
View File
@@ -30,7 +30,7 @@ class AsyncTaskTests(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
+2 -2
View File
@@ -37,7 +37,7 @@ class ListWorkoutTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -95,7 +95,7 @@ class WorkoutViewTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
+1 -1
View File
@@ -18,7 +18,7 @@ class SimpleViewTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
protrialexpires=datetime.date(1970,1,1),
plantrialexpires=datetime.date(1970,1,1),
+1 -1
View File
@@ -65,7 +65,7 @@ class BraintreeUnits(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',subscription_id=1)
+2 -2
View File
@@ -16,7 +16,7 @@ class CourseUnitTest(TestCase):
self.u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
)
@@ -128,7 +128,7 @@ class CoursesTest(TestCase):
self.u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
)
+1 -1
View File
@@ -20,7 +20,7 @@ class CPChartTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,sex='male',
gdproptin=True, ftpset=True,surveydone=True,sex='male',
weightcategory='hwt',
gdproptindate=timezone.now(),
rowerplan='coach')
+4 -4
View File
@@ -16,7 +16,7 @@ class EmailUpload(TestCase):
'koeinsloot',
first_name='John',
last_name='Sloot')
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
r = Rower.objects.create(user=u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
emailalternatives=['sander2@ds.nl']
)
@@ -24,7 +24,7 @@ class EmailUpload(TestCase):
self.theadmin = UserFactory(is_staff=True)
self.rtheadmin = Rower.objects.create(user=self.theadmin,
birthdate = faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -168,14 +168,14 @@ class EmailTests(TestCase):
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
r = Rower.objects.create(user=u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
self.theadmin = UserFactory(is_staff=True)
self.rtheadmin = Rower.objects.create(user=self.theadmin,
birthdate = faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
+1 -1
View File
@@ -14,7 +14,7 @@ class EmpowerTest(TestCase):
'sander@ds.ds',
'koeinsloot',
)
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True,surveydone=True,
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now())
self.c = Client()
+1 -1
View File
@@ -12,7 +12,7 @@ class WorkoutViewTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
showfavoritechartnotes=True)
+10 -10
View File
@@ -39,7 +39,7 @@ class RojaboObjects(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
@@ -91,7 +91,7 @@ class GarminObjects(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
self.r.garmintoken = 'dfdzf'
@@ -266,7 +266,7 @@ class C2Objects(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
@@ -598,7 +598,7 @@ class C2ObjectsTokenExpired(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
@@ -672,7 +672,7 @@ class NKObjects(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
@@ -824,7 +824,7 @@ class PolarObjects(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
@@ -920,7 +920,7 @@ class RP3Objects(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
@@ -1012,7 +1012,7 @@ class StravaObjects(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
strava_auto_import=True,
strava_auto_delete=True,
@@ -1189,7 +1189,7 @@ class STObjects(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
@@ -1338,7 +1338,7 @@ class TPObjects(DjangoTestCase):
self.u.first_name = 'John'
self.u.last_name = 'Sander'
self.u.save()
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
+1 -1
View File
@@ -14,7 +14,7 @@ class InteractiveChartTest(TestCase):
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
r = Rower.objects.create(user=u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
self.nu = datetime.datetime.now()
+3 -3
View File
@@ -16,7 +16,7 @@ class MiscTests(TestCase):
self.u = UserFactory(is_staff=True)
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',subscription_id=1)
@@ -49,7 +49,7 @@ class WorkoutTests(TestCase):
self.u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
nu = datetime.datetime.now()
@@ -69,7 +69,7 @@ class C2Tests(TestCase):
self.u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
self.nu = datetime.datetime.now()
+3 -1
View File
@@ -47,6 +47,7 @@ class NewUserRegistrationTest(TestCase):
# set opt-in
user = User.objects.get(username='janderoeiert')
user.rower.gdpr_optin = True
user.rower.ftpset = True
user.set_password('Aapindewei2')
user.is_active = True
user.save()
@@ -67,8 +68,9 @@ class NewUserRegistrationTest(TestCase):
status_code=302,target_status_code=200)
url = '/rowers/me/gdpr-optin-confirm/?next=/rowers/list-workouts/'
response = self.c.get(url)
response = self.c.get(url)
expected = '/rowers/list-workouts/'
self.assertRedirects(response,
expected_url=expected,
+12 -12
View File
@@ -181,7 +181,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -240,7 +240,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -304,7 +304,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -371,7 +371,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -411,7 +411,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='plan',
paymentprocessor='braintree',
@@ -505,7 +505,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -546,7 +546,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -568,7 +568,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -615,7 +615,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -661,7 +661,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -706,7 +706,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
@@ -757,7 +757,7 @@ description: ""
u = UserFactory()
r = Rower.objects.create(user=u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
paymentprocessor='braintree',
+27 -27
View File
@@ -24,7 +24,7 @@ class PlanningPermissionsCoach(TestCase):
self.rcoach = Rower.objects.create(
user=self.ucoach,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
clubsize=10,
@@ -37,7 +37,7 @@ class PlanningPermissionsCoach(TestCase):
self.rcoachee = Rower.objects.create(
user=self.ucoachee,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic'
)
@@ -62,7 +62,7 @@ class PlanningPermissionsCoach(TestCase):
self.rgroupmember = Rower.objects.create(
user=self.ugroupmember,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic'
)
@@ -107,7 +107,7 @@ class PermissionsFreeCoach(TestCase):
self.ufreecoach = UserFactory(username='coachuser')
self.rfreecoach = Rower.objects.create(user=self.ufreecoach,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='freecoach',clubsize=100)
self.coachinggroup = CoachingGroup.objects.create()
@@ -121,7 +121,7 @@ class PermissionsFreeCoach(TestCase):
self.uplan = UserFactory(username='planuser')
self.rplan = Rower.objects.create(user=self.uplan,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
@@ -133,7 +133,7 @@ class PermissionsFreeCoach(TestCase):
self.upro = UserFactory(username='prouser')
self.rpro = Rower.objects.create(user=self.upro,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
@@ -145,7 +145,7 @@ class PermissionsFreeCoach(TestCase):
self.uplan2 = UserFactory(username='planuser2')
self.rplan2 = Rower.objects.create(user=self.uplan2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
@@ -157,7 +157,7 @@ class PermissionsFreeCoach(TestCase):
self.upro2 = UserFactory(username='prouser2')
self.rpro2 = Rower.objects.create(user=self.upro2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
@@ -169,7 +169,7 @@ class PermissionsFreeCoach(TestCase):
self.ubasic = UserFactory(username='basicuser')
self.rbasic = Rower.objects.create(user=self.ubasic,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic')
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
@@ -285,7 +285,7 @@ class PermissionsBasicsTests(TestCase):
self.ucoach = UserFactory(username='coachuser')
self.rcoach = Rower.objects.create(user=self.ucoach,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='coach',clubsize=10)
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
@@ -300,7 +300,7 @@ class PermissionsBasicsTests(TestCase):
self.uplan = UserFactory(username='planuser')
self.rplan = Rower.objects.create(user=self.uplan,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
@@ -312,7 +312,7 @@ class PermissionsBasicsTests(TestCase):
self.upro = UserFactory(username='prouser')
self.rpro = Rower.objects.create(user=self.upro,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
@@ -324,7 +324,7 @@ class PermissionsBasicsTests(TestCase):
self.uplan2 = UserFactory(username='planuser2')
self.rplan2 = Rower.objects.create(user=self.uplan2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
@@ -336,7 +336,7 @@ class PermissionsBasicsTests(TestCase):
self.upro2 = UserFactory(username='prouser2')
self.rpro2 = Rower.objects.create(user=self.upro2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
@@ -348,7 +348,7 @@ class PermissionsBasicsTests(TestCase):
self.ubasic = UserFactory(username='basicuser')
self.rbasic = Rower.objects.create(user=self.ubasic,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic')
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
@@ -545,7 +545,7 @@ class PermissionsViewTests(TestCase):
self.ucoach = UserFactory(username='coachuser')
self.rcoach = Rower.objects.create(user=self.ucoach,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='coach',clubsize=10)
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
@@ -560,7 +560,7 @@ class PermissionsViewTests(TestCase):
self.uplan = UserFactory(username='planuser')
self.rplan = Rower.objects.create(user=self.uplan,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
@@ -572,7 +572,7 @@ class PermissionsViewTests(TestCase):
self.upro = UserFactory(username='prouser')
self.rpro = Rower.objects.create(user=self.upro,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
@@ -584,7 +584,7 @@ class PermissionsViewTests(TestCase):
self.uplan2 = UserFactory(username='planuser2')
self.rplan2 = Rower.objects.create(user=self.uplan2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
@@ -596,7 +596,7 @@ class PermissionsViewTests(TestCase):
self.upro2 = UserFactory(username='prouser2')
self.rpro2 = Rower.objects.create(user=self.upro2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
@@ -608,7 +608,7 @@ class PermissionsViewTests(TestCase):
self.ubasic = UserFactory(username='basicuser')
self.rbasic = Rower.objects.create(user=self.ubasic,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic')
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
@@ -1450,7 +1450,7 @@ class PermissionsCoachingTests(TestCase):
self.ucoach = UserFactory(username='coachuser')
self.rcoach = Rower.objects.create(user=self.ucoach,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='coach',clubsize=10)
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
@@ -1465,7 +1465,7 @@ class PermissionsCoachingTests(TestCase):
self.uplan = UserFactory(username='planuser')
self.rplan = Rower.objects.create(user=self.uplan,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
@@ -1477,7 +1477,7 @@ class PermissionsCoachingTests(TestCase):
self.upro = UserFactory(username='prouser')
self.rpro = Rower.objects.create(user=self.upro,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
@@ -1489,7 +1489,7 @@ class PermissionsCoachingTests(TestCase):
self.uplan2 = UserFactory(username='planuser2')
self.rplan2 = Rower.objects.create(user=self.uplan2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan')
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
@@ -1501,7 +1501,7 @@ class PermissionsCoachingTests(TestCase):
self.upro2 = UserFactory(username='prouser2')
self.rpro2 = Rower.objects.create(user=self.upro2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro')
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
@@ -1513,7 +1513,7 @@ class PermissionsCoachingTests(TestCase):
self.ubasic = UserFactory(username='basicuser')
self.rbasic = Rower.objects.create(user=self.ubasic,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic')
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
+6 -6
View File
@@ -60,7 +60,7 @@ class PermissionsViewTests(TestCase):
ucoach = UserFactory(username='coachuser')
rcoach = Rower.objects.create(user=ucoach,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='coach',clubsize=10)
ucoach_workouts = WorkoutFactory.create_batch(5, user=rcoach)
@@ -82,7 +82,7 @@ class PermissionsViewTests(TestCase):
uplan = UserFactory(username='planuser')
rplan = Rower.objects.create(user=uplan,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan',clubsize=10)
uplan_workouts = WorkoutFactory.create_batch(5, user=rplan)
@@ -102,7 +102,7 @@ class PermissionsViewTests(TestCase):
uplan2 = UserFactory(username='plan2user')
rplan2 = Rower.objects.create(user=uplan2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='plan',clubsize=10)
uplan2_workouts = WorkoutFactory.create_batch(5, user=rplan2)
@@ -122,7 +122,7 @@ class PermissionsViewTests(TestCase):
upro = UserFactory(username='prouser')
rpro = Rower.objects.create(user=upro,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='pro',clubsize=10)
upro_workouts = WorkoutFactory.create_batch(5, user=rpro)
@@ -142,7 +142,7 @@ class PermissionsViewTests(TestCase):
ubasic = UserFactory(username='basicuser')
rbasic = Rower.objects.create(user=ubasic,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic',clubsize=10)
ubasic_workouts = WorkoutFactory.create_batch(5, user=rbasic)
@@ -162,7 +162,7 @@ class PermissionsViewTests(TestCase):
ustrange = UserFactory(username='strangeuser')
rstrange = Rower.objects.create(user=ustrange,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,gdproptindate=timezone.now(),
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
rowerplan='basic',clubsize=10)
ustrange_workouts = WorkoutFactory.create_batch(5, user=rstrange)
+9 -9
View File
@@ -30,7 +30,7 @@ class TrainingPlanTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
defaulttimezone='US/Pacific',
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -198,7 +198,7 @@ class SessionTemplateTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -304,7 +304,7 @@ class SessionLinkTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -548,7 +548,7 @@ class SessionCompleteTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -805,7 +805,7 @@ class ChallengeCompleteTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -1029,7 +1029,7 @@ class MandatoryTestCompleteTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -1242,7 +1242,7 @@ class PlannedSessionsView(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
defaulttimezone='US/Pacific',
rowerplan='coach')
@@ -1252,7 +1252,7 @@ class PlannedSessionsView(TestCase):
self.u2 = UserFactory(username='testbasicuser')
self.r2 = Rower.objects.create(user=self.u2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic')
@@ -1263,7 +1263,7 @@ class PlannedSessionsView(TestCase):
self.u3 = UserFactory(username='testbasicuser2')
self.r3 = Rower.objects.create(user=self.u3,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic')
+4 -4
View File
@@ -58,21 +58,21 @@ class ChallengesTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=datetime.datetime.now()-datetime.timedelta(days=25*365),
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
self.u2 = UserFactory()
self.r2 = Rower.objects.create(user=self.u2,
birthdate=datetime.datetime.now()-datetime.timedelta(days=28*365),
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic')
self.u3 = UserFactory()
self.follower = Rower.objects.create(user=self.u3,
birthdate=datetime.datetime.now()-datetime.timedelta(days=28*365),
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic')
@@ -933,7 +933,7 @@ class IndoorChallengesTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=datetime.datetime.now()-datetime.timedelta(days=25*365),
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
+1 -1
View File
@@ -15,7 +15,7 @@ class TrialsTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic')
+1 -1
View File
@@ -14,7 +14,7 @@ class DataTest(TestCase):
u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,gdproptin=True,surveydone=True,
r = Rower.objects.create(user=u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now()
)
self.nu = datetime.datetime.now()
+1 -1
View File
@@ -39,7 +39,7 @@ class SimpleViewTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True, surveydone=True,
gdproptin=True, ftpset=True, surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
+1 -1
View File
@@ -18,7 +18,7 @@ class PlotTests(TestCase):
'sander@ds.ds',
'koeinsloot')
r = Rower.objects.create(user=u,
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic')
self.nu = datetime.datetime.now()
+2 -2
View File
@@ -41,7 +41,7 @@ class TeamTest(TestCase):
r = Rower.objects.create(
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
user=u,
@@ -400,7 +400,7 @@ class TeamTestLowLevel(TestCase):
r = Rower.objects.create(
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
user=u,
+5 -5
View File
@@ -30,7 +30,7 @@ class OtherUnitTests(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
defaulttimezone='US/Pacific',
rowerplan='coach')
@@ -166,7 +166,7 @@ class PlannedSessionTests(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -180,7 +180,7 @@ class PlannedSessionTests(TestCase):
self.u2 = UserFactory(username='testbasicuser')
self.r2 = Rower.objects.create(user=self.u2,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='basic')
@@ -423,7 +423,7 @@ class DataPrepTests(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
sex='male',
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -643,7 +643,7 @@ class InteractivePlotTests(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
+2 -2
View File
@@ -25,7 +25,7 @@ class ForceUnits(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -166,7 +166,7 @@ class TestForceUnit(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
+1 -1
View File
@@ -19,7 +19,7 @@ class ViewTest(TestCase):
self.u = User.objects.create_user('john',
'sander@ds.ds',
'koeinsloot')
self.r = Rower.objects.create(user=self.u,gdproptin=True,surveydone=True,
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach',
)
+1 -1
View File
@@ -24,7 +24,7 @@ class URLTests(TestCase):
'sander@ds.ds',
'koeinsloot',
)
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True,
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True, ftpset=True,
gdproptindate=timezone.now())
self.c = Client()
+2 -2
View File
@@ -80,7 +80,7 @@ class UserPreferencesTest(TestCase):
self.r = Rower.objects.create(user=self.u,
birthdate=faker.profile()['birthdate'],
gdproptin=True,surveydone=True,
gdproptin=True, ftpset=True,surveydone=True,
gdproptindate=timezone.now(),
rowerplan='coach')
@@ -234,7 +234,7 @@ class UserPreferencesTest(TestCase):
form_data = {
'hrftp': 160,
'ftp':230,
'otwslack':14
'otwftp':224
}
form = RowerPowerForm(form_data)
+4
View File
@@ -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<userid>\d+)/$',
views.rower_prefs_view, name='rower_prefs_view'),
re_path(r'^me/prefs/user/(?P<userid>\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'),
+2 -1
View File
@@ -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,
@@ -242,6 +242,7 @@ from rowers.rows import handle_uploaded_file, handle_uploaded_image
from rowers.plannedsessions import *
from rowers.tasks import handle_makeplot, handle_otwsetpower, handle_sendemailtcx, handle_sendemailcsv
from rowers.tasks import (
handle_sendemail_newftp,
instroke_static,
fetch_rojabo_session,
handle_sendemail_unrecognized, handle_sendemailnewcomment,
+42 -5
View File
@@ -551,6 +551,46 @@ 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')
if not r.ftpset:
r.ftpset = True
r.save()
nexturl = request.GET.get('next', '/rowers/list-workouts/')
return HttpResponseRedirect(nexturl)
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
@@ -610,14 +650,13 @@ def rower_prefs_view(request, userid=0, message=""):
successmessage = "Your Heart Rate data were changed"
messages.info(request, successmessage)
elif request.method == 'POST' and "ftp" in request.POST:
powerform = RowerPowerForm(request.POST)
powerform = RowerPowerForm(request.POST, instance=r)
if powerform.is_valid():
powerform.save(commit=True)
cd = powerform.cleaned_data
hrftp = cd['hrftp']
if hrftp == 0: # pragma: no cover
hrftp = int((r.an+r.tr)/2.)
ftp = cd['ftp']
otwslack = cd['otwslack']
cogganzones = cd['cogganzones']
powerfrac = 100*np.array([r.pw_ut2,
@@ -634,7 +673,6 @@ def rower_prefs_view(request, userid=0, message=""):
'Anaerobic']
r.powerzones = powerzones
r.ftp = max(min(ftp, 650), 50)
ut2, ut1, at, tr, an = (r.ftp*powerfrac/100.).astype(int)
r.pw_ut2 = ut2
r.pw_ut1 = ut1
@@ -642,7 +680,6 @@ def rower_prefs_view(request, userid=0, message=""):
r.pw_tr = tr
r.pw_an = an
r.hrftp = hrftp
r.otwslack = max(min(otwslack, 50), 0)
r.save()
powerzonesform = RowerPowerZonesForm(instance=r)
+1
View File
@@ -107,6 +107,7 @@ MIDDLEWARE = [
'rowers.middleware.GDPRMiddleWare',
# 'rowers.middleware.PowerTimeFitnessMetricMiddleWare',
'rowers.middleware.RowerPlanMiddleWare',
'rowers.middleware.FTPMiddleWare',
]
ROOT_URLCONF = 'rowsandall_app.urls'
+1 -1
View File
@@ -156,7 +156,7 @@
</li>
{% if user.is_authenticated %}
<li>
<a href="/rowers/me/preferences/" title="Profile">
<a href="/rowers/me/prefs/" title="Profile">
{% if user.rower.rowerplan == 'pro' %}
<i class="fas fa-user-ninja "></i>
{% elif 'coach' in user.rower.rowerplan %}