going through the tests
This commit is contained in:
@@ -1 +0,0 @@
|
|||||||
sander@rowsandall-2.17364:1733469196
|
|
||||||
@@ -86,7 +86,6 @@ class Command(BaseCommand):
|
|||||||
rowers = Rower.objects.filter(c2_auto_import=True)
|
rowers = Rower.objects.filter(c2_auto_import=True)
|
||||||
for r in rowers: # pragma: no cover
|
for r in rowers: # pragma: no cover
|
||||||
try:
|
try:
|
||||||
if user_is_not_basic(r.user) or user_is_coachee(r.user):
|
|
||||||
c2integration = C2Integration(r.user)
|
c2integration = C2Integration(r.user)
|
||||||
_ = c2integration.get_workouts()
|
_ = c2integration.get_workouts()
|
||||||
except: # pragma: no cover
|
except: # pragma: no cover
|
||||||
@@ -97,7 +96,6 @@ class Command(BaseCommand):
|
|||||||
rowers = Rower.objects.filter(rp3_auto_import=True)
|
rowers = Rower.objects.filter(rp3_auto_import=True)
|
||||||
for r in rowers: # pragma: no cover
|
for r in rowers: # pragma: no cover
|
||||||
try:
|
try:
|
||||||
if user_is_not_basic(r.user) or user_is_coachee(r.user):
|
|
||||||
rp3_integration = RP3Integration(r.user)
|
rp3_integration = RP3Integration(r.user)
|
||||||
_ = rp3_integration.get_workouts()
|
_ = rp3_integration.get_workouts()
|
||||||
except: # pragma: no cover
|
except: # pragma: no cover
|
||||||
@@ -108,7 +106,6 @@ class Command(BaseCommand):
|
|||||||
rowers = Rower.objects.filter(nk_auto_import=True)
|
rowers = Rower.objects.filter(nk_auto_import=True)
|
||||||
for r in rowers: # pragma: no cover
|
for r in rowers: # pragma: no cover
|
||||||
try:
|
try:
|
||||||
if user_is_not_basic(r.user) or user_is_coachee(r.user):
|
|
||||||
dologging("nklog.log","NK Auto import set for rower {id}".format(id=r.user.id))
|
dologging("nklog.log","NK Auto import set for rower {id}".format(id=r.user.id))
|
||||||
nk_integration = NKIntegration(r.user)
|
nk_integration = NKIntegration(r.user)
|
||||||
_ = nk_integration.get_workouts()
|
_ = nk_integration.get_workouts()
|
||||||
@@ -117,16 +114,6 @@ class Command(BaseCommand):
|
|||||||
lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
|
lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
|
||||||
dologging('processemail.log', ''.join('!! ' + line for line in lines))
|
dologging('processemail.log', ''.join('!! ' + line for line in lines))
|
||||||
|
|
||||||
#rowers = Rower.objects.filter(intervals_auto_import=True)
|
|
||||||
#for r in rowers:
|
|
||||||
# try:
|
|
||||||
# if user_is_not_basic(r.user) or user_is_coachee(r.user):
|
|
||||||
# intervals_integration = IntervalsIntegration(r.user)
|
|
||||||
# _ = intervals_integration.get_workouts()
|
|
||||||
# except:
|
|
||||||
# exc_type, exc_value, exc_traceback = sys.exc_info()
|
|
||||||
# lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
|
|
||||||
# dologging('processemail.log', ''.join('!! ' + line for line in lines))
|
|
||||||
|
|
||||||
self.stdout.write(self.style.SUCCESS(
|
self.stdout.write(self.style.SUCCESS(
|
||||||
'Successfully processed email attachments'))
|
'Successfully processed email attachments'))
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ class RowerPlanMiddleWare(object):
|
|||||||
self.get_response = get_response
|
self.get_response = get_response
|
||||||
|
|
||||||
def __call__(self, request):
|
def __call__(self, request):
|
||||||
if request.user.is_authenticated and request.user.rower.rowerplan not in ['basic', 'freecoach']:
|
if request.user.is_authenticated and request.user.rower.rowerplan != 'basic':
|
||||||
if request.user.rower.paymenttype == 'single':
|
if request.user.rower.paymenttype == 'single':
|
||||||
if request.user.rower.planexpires < timezone.now().date(): # pragma: no cover
|
if request.user.rower.planexpires < timezone.now().date(): # pragma: no cover
|
||||||
messg = 'Your paid plan has expired. We have reset you to a free basic plan.'
|
messg = 'Your paid plan has expired. We have reset you to a free basic plan.'
|
||||||
|
|||||||
+1
-3
@@ -1326,8 +1326,6 @@ class Rower(models.Model):
|
|||||||
for group in self.coachinggroups.all():
|
for group in self.coachinggroups.all():
|
||||||
try:
|
try:
|
||||||
coach = Rower.objects.get(mycoachgroup=group)
|
coach = Rower.objects.get(mycoachgroup=group)
|
||||||
if coach.rowerplan == 'freecoach': # pragma: no cover
|
|
||||||
self.coachinggroups.remove(group)
|
|
||||||
except Rower.DoesNotExist: # pragma: no cover
|
except Rower.DoesNotExist: # pragma: no cover
|
||||||
pass
|
pass
|
||||||
except ValueError:
|
except ValueError:
|
||||||
@@ -1350,7 +1348,7 @@ class Rower(models.Model):
|
|||||||
return coaches
|
return coaches
|
||||||
|
|
||||||
def can_coach(self):
|
def can_coach(self):
|
||||||
if self.rowerplan not in ['coach', 'freecoach']:
|
if self.rowerplan != 'pro':
|
||||||
return False
|
return False
|
||||||
|
|
||||||
rs = Rower.objects.filter(coachinggroups__in=[self.mycoachgroup])
|
rs = Rower.objects.filter(coachinggroups__in=[self.mycoachgroup])
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class IsRowerOrNot(permissions.BasePermission):
|
|||||||
class IsPlanOrHigher(permissions.BasePermission):
|
class IsPlanOrHigher(permissions.BasePermission):
|
||||||
def has_object_permission(self, request, view, obj): # pragma: no cover
|
def has_object_permission(self, request, view, obj): # pragma: no cover
|
||||||
r = Rower.objects.get(user=request.user)
|
r = Rower.objects.get(user=request.user)
|
||||||
return r not in ['basic', 'pro', 'freecoach']
|
return r.rowerplan == 'pro'
|
||||||
|
|
||||||
|
|
||||||
class IsCompetitorOrNot(permissions.BasePermission):
|
class IsCompetitorOrNot(permissions.BasePermission):
|
||||||
|
|||||||
@@ -831,12 +831,12 @@ def add_team_session(t, ps):
|
|||||||
def add_rower_session(r, ps):
|
def add_rower_session(r, ps):
|
||||||
teams = Team.objects.filter(manager=ps.manager)
|
teams = Team.objects.filter(manager=ps.manager)
|
||||||
members = Rower.objects.filter(team__in=teams).distinct()
|
members = Rower.objects.filter(team__in=teams).distinct()
|
||||||
if r in members and r.rowerplan != 'freecoach':
|
if r in members:
|
||||||
ps.rower.add(r)
|
ps.rower.add(r)
|
||||||
ps.save()
|
ps.save()
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
elif ps.manager.rower == r and r.rowerplan != 'freecoach':
|
elif ps.manager.rower == r:
|
||||||
ps.rower.add(r)
|
ps.rower.add(r)
|
||||||
ps.save()
|
ps.save()
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from django.utils import timezone
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
USER permissions
|
USER permissions
|
||||||
- There are 5 types of user: basic, pro, plan, coach, freecoach
|
- There are 2 types of user: basic, pro
|
||||||
- These methods exist on user
|
- These methods exist on user
|
||||||
- user.rower
|
- user.rower
|
||||||
- user.is_anonymous
|
- user.is_anonymous
|
||||||
|
|||||||
+2
-2
@@ -418,10 +418,10 @@ def create_sessions_from_json_async(plansteps, rower, startdate, manager, planby
|
|||||||
|
|
||||||
teams = Team.objects.filter(manager=ps.manager)
|
teams = Team.objects.filter(manager=ps.manager)
|
||||||
members = Rower.objects.filter(team__in=teams).distinct()
|
members = Rower.objects.filter(team__in=teams).distinct()
|
||||||
if rower in members and rower.rowerplan != 'freecoach':
|
if rower in members:
|
||||||
ps.rower.add(rower)
|
ps.rower.add(rower)
|
||||||
ps.save()
|
ps.save()
|
||||||
elif ps.manager.rower == rower and rower.rowerplan != 'freecoach':
|
elif ps.manager.rower == rower:
|
||||||
ps.rower.add(rower)
|
ps.rower.add(rower)
|
||||||
ps.save()
|
ps.save()
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -245,7 +245,7 @@ def create_coaching_request(coach, user): # pragma: no cover
|
|||||||
while code in codes: # pragma: no cover
|
while code in codes: # pragma: no cover
|
||||||
code = uuid.uuid4().hex[:10].upper()
|
code = uuid.uuid4().hex[:10].upper()
|
||||||
|
|
||||||
if 'coach' in coach.rowerplan:
|
if coach.rowerplan == 'pro':
|
||||||
rekwest = CoachRequest(coach=coach, user=user, code=code)
|
rekwest = CoachRequest(coach=coach, user=user, code=code)
|
||||||
rekwest.save()
|
rekwest.save()
|
||||||
|
|
||||||
|
|||||||
@@ -59,13 +59,13 @@
|
|||||||
<td>✔</td>
|
<td>✔</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>All other rowing metrics (Work per Stroke, Average and Peak Force, Drive Length, Catch and Finish Angle, Slip and Wash, Peak Force Angle, and more)</td>
|
<td>Advanced Analysis (Critical Power, Stats, Box Chart, Trend Flex)</td>
|
||||||
<td> </td>
|
<td>✔</td>
|
||||||
<td>✔</td>
|
<td>✔</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Advanced Analysis (Critical Power, Stats, Box Chart, Trend Flex)</td>
|
<td>All other rowing metrics (Work per Stroke, Average and Peak Force, Drive Length, Catch and Finish Angle, Slip and Wash, Peak Force Angle, and more)</td>
|
||||||
<td> </td>
|
<td>partly</td>
|
||||||
<td>✔</td>
|
<td>✔</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class VirtualEventViewTest(MyTestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
|
||||||
gdproptin=True, ftpset=True, surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True, surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class StravaPrivacy(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',subscription_id=1)
|
rowerplan='pro',subscription_id=1)
|
||||||
|
|
||||||
self.r.stravatoken = '12'
|
self.r.stravatoken = '12'
|
||||||
self.r.stravarefreshtoken = '123'
|
self.r.stravarefreshtoken = '123'
|
||||||
@@ -77,7 +77,7 @@ class StravaPrivacy(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',clubsize=3)
|
rowerplan='pro',clubsize=3)
|
||||||
|
|
||||||
self.r3 = Rower.objects.create(user=self.u3,
|
self.r3 = Rower.objects.create(user=self.u3,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class AsyncTaskTests(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class ListWorkoutTest(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
@@ -144,7 +144,7 @@ class WorkoutViewTest(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.c2 = Client() # for anonymous
|
self.c2 = Client() # for anonymous
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ class BraintreeUnits(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',subscription_id=1)
|
rowerplan='pro',subscription_id=1)
|
||||||
|
|
||||||
|
|
||||||
self.pp = PaidPlan.objects.create(price=0,paymentprocessor='braintree')
|
self.pp = PaidPlan.objects.create(price=0,paymentprocessor='braintree')
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class CourseUnitTest(TestCase):
|
|||||||
'koeinsloot')
|
'koeinsloot')
|
||||||
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
|
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',
|
rowerplan='pro',
|
||||||
)
|
)
|
||||||
self.nu = datetime.datetime.now()
|
self.nu = datetime.datetime.now()
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ class CoursesTest(TestCase):
|
|||||||
'koeinsloot')
|
'koeinsloot')
|
||||||
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
|
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',
|
rowerplan='pro',
|
||||||
)
|
)
|
||||||
self.nu = datetime.datetime.now()
|
self.nu = datetime.datetime.now()
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class CPChartTest(TestCase):
|
|||||||
gdproptin=True, ftpset=True,surveydone=True,sex='male',
|
gdproptin=True, ftpset=True,surveydone=True,sex='male',
|
||||||
weightcategory='hwt',
|
weightcategory='hwt',
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
r = self.u.rower
|
r = self.u.rower
|
||||||
age = calculate_age(r.birthdate)
|
age = calculate_age(r.birthdate)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class EmailUpload(TestCase):
|
|||||||
birthdate = faker.profile()['birthdate'],
|
birthdate = faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
nu = datetime.datetime.now()
|
nu = datetime.datetime.now()
|
||||||
|
|
||||||
@@ -208,7 +208,7 @@ class EmailTests(TestCase):
|
|||||||
birthdate = faker.profile()['birthdate'],
|
birthdate = faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
nu = datetime.datetime.now()
|
nu = datetime.datetime.now()
|
||||||
a2 = 'media/mailbox_attachments/colin3.csv'
|
a2 = 'media/mailbox_attachments/colin3.csv'
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class EmpowerTest(TestCase):
|
|||||||
'sander@ds.ds',
|
'sander@ds.ds',
|
||||||
'koeinsloot',
|
'koeinsloot',
|
||||||
)
|
)
|
||||||
r = Rower.objects.create(user=u,rowerplan='coach',gdproptin=True, ftpset=True,surveydone=True,
|
r = Rower.objects.create(user=u,rowerplan='pro',gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now())
|
gdproptindate=timezone.now())
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class WorkoutViewTest(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',
|
rowerplan='pro',
|
||||||
showfavoritechartnotes=True)
|
showfavoritechartnotes=True)
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class RojaboObjects(DjangoTestCase):
|
|||||||
self.r.rojabo_refreshtoken = 'ab'
|
self.r.rojabo_refreshtoken = 'ab'
|
||||||
self.r.rojabo_tokenexpirydate = arrow.get(datetime.datetime.now()+datetime.timedelta(days=1)).datetime
|
self.r.rojabo_tokenexpirydate = arrow.get(datetime.datetime.now()+datetime.timedelta(days=1)).datetime
|
||||||
self.r.defaulttimezone = 'Europe/Prague'
|
self.r.defaulttimezone = 'Europe/Prague'
|
||||||
self.r.rowerplan = 'plan'
|
self.r.rowerplan = 'pro'
|
||||||
self.r.save()
|
self.r.save()
|
||||||
|
|
||||||
self.u2 = User.objects.create_user('john2',
|
self.u2 = User.objects.create_user('john2',
|
||||||
@@ -134,7 +134,7 @@ class GarminObjects(DjangoTestCase):
|
|||||||
)
|
)
|
||||||
self.r.garmintoken = 'dfdzf'
|
self.r.garmintoken = 'dfdzf'
|
||||||
self.r.garminrefreshtoken = 'fsls'
|
self.r.garminrefreshtoken = 'fsls'
|
||||||
self.r.rowerplan = 'plan'
|
self.r.rowerplan = 'pro'
|
||||||
self.r.save()
|
self.r.save()
|
||||||
self.c.login(username='john',password='koeinsloot')
|
self.c.login(username='john',password='koeinsloot')
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class MiscTests(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',subscription_id=1)
|
rowerplan='pro',subscription_id=1)
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class PlanningPermissionsCoach(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',
|
rowerplan='pro',
|
||||||
clubsize=10,
|
clubsize=10,
|
||||||
)
|
)
|
||||||
self.ucoachpassword = faker.word()
|
self.ucoachpassword = faker.word()
|
||||||
@@ -98,183 +98,7 @@ class PlanningPermissionsCoach(TestCase):
|
|||||||
self.assertTrue(user_is_coachee(self.ucoachee))
|
self.assertTrue(user_is_coachee(self.ucoachee))
|
||||||
|
|
||||||
|
|
||||||
@override_settings(TESTING=True)
|
|
||||||
class PermissionsFreeCoach(TestCase):
|
|
||||||
def setUp(self):
|
|
||||||
self.c = Client()
|
|
||||||
## Users - Pro, Basic, Free Coach & Self Coach
|
|
||||||
|
|
||||||
self.ufreecoach = UserFactory(username='coachuser')
|
|
||||||
self.rfreecoach = Rower.objects.create(user=self.ufreecoach,
|
|
||||||
birthdate=faker.profile()['birthdate'],
|
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
|
||||||
rowerplan='freecoach',clubsize=100)
|
|
||||||
|
|
||||||
self.coachinggroup = CoachingGroup.objects.create()
|
|
||||||
self.rfreecoach.mycoachgroup = self.coachinggroup
|
|
||||||
self.rfreecoach.save()
|
|
||||||
self.factory = RequestFactory()
|
|
||||||
self.password = faker.word()
|
|
||||||
self.ufreecoach.set_password(self.password)
|
|
||||||
self.ufreecoach.save()
|
|
||||||
|
|
||||||
self.uplan = UserFactory(username='planuser')
|
|
||||||
self.rplan = Rower.objects.create(user=self.uplan,
|
|
||||||
birthdate=faker.profile()['birthdate'],
|
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
|
||||||
rowerplan='plan')
|
|
||||||
|
|
||||||
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
|
||||||
self.factory = RequestFactory()
|
|
||||||
self.password = faker.word()
|
|
||||||
self.uplan.set_password(self.password)
|
|
||||||
self.uplan.save()
|
|
||||||
|
|
||||||
self.upro = UserFactory(username='prouser')
|
|
||||||
self.rpro = Rower.objects.create(user=self.upro,
|
|
||||||
birthdate=faker.profile()['birthdate'],
|
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
|
||||||
rowerplan='pro')
|
|
||||||
|
|
||||||
self.upro_workouts = WorkoutFactory.create_batch(5, user=self.rpro)
|
|
||||||
self.factory = RequestFactory()
|
|
||||||
self.password = faker.word()
|
|
||||||
self.upro.set_password(self.password)
|
|
||||||
self.upro.save()
|
|
||||||
|
|
||||||
self.uplan2 = UserFactory(username='planuser2')
|
|
||||||
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
|
||||||
birthdate=faker.profile()['birthdate'],
|
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
|
||||||
rowerplan='plan')
|
|
||||||
|
|
||||||
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
|
||||||
self.factory = RequestFactory()
|
|
||||||
self.password = faker.word()
|
|
||||||
self.uplan2.set_password(self.password)
|
|
||||||
self.uplan2.save()
|
|
||||||
|
|
||||||
self.upro2 = UserFactory(username='prouser2')
|
|
||||||
self.rpro2 = Rower.objects.create(user=self.upro2,
|
|
||||||
birthdate=faker.profile()['birthdate'],
|
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
|
||||||
rowerplan='pro')
|
|
||||||
|
|
||||||
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
|
|
||||||
self.factory = RequestFactory()
|
|
||||||
self.password = faker.word()
|
|
||||||
self.upro2.set_password(self.password)
|
|
||||||
self.upro2.save()
|
|
||||||
|
|
||||||
self.ubasic = UserFactory(username='basicuser')
|
|
||||||
self.rbasic = Rower.objects.create(user=self.ubasic,
|
|
||||||
birthdate=faker.profile()['birthdate'],
|
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
|
||||||
rowerplan='basic')
|
|
||||||
|
|
||||||
self.ubasic_workouts = WorkoutFactory.create_batch(5, user=self.rbasic)
|
|
||||||
self.factory = RequestFactory()
|
|
||||||
self.ubasicpassword = faker.word()
|
|
||||||
self.ubasic.set_password(self.ubasicpassword)
|
|
||||||
self.ubasic.save()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## TeamFreeCoach
|
|
||||||
|
|
||||||
self.teamfreecoach = Team.objects.create(
|
|
||||||
name=faker.word()+'3',
|
|
||||||
notes=faker.text(),
|
|
||||||
manager=self.ufreecoach)
|
|
||||||
|
|
||||||
## Coach can have any number of groups
|
|
||||||
def test_coach_groupmanager(self):
|
|
||||||
team1 = Team.objects.create(
|
|
||||||
name = 'FirstTeam',
|
|
||||||
notes = faker.text(),
|
|
||||||
manager = self.ufreecoach,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(team1.manager,self.ufreecoach)
|
|
||||||
|
|
||||||
team2 = Team.objects.create(
|
|
||||||
name = 'SecondTeam',
|
|
||||||
notes = faker.text(),
|
|
||||||
manager = self.ufreecoach,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(team2.manager,self.ufreecoach)
|
|
||||||
|
|
||||||
|
|
||||||
team3 = Team.objects.create(
|
|
||||||
name = 'ThirdTeam',
|
|
||||||
notes = faker.text(),
|
|
||||||
manager = self.ufreecoach,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(team3.manager,self.ufreecoach)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Free coach can create more than one group
|
|
||||||
def test_plan_groupmanager(self):
|
|
||||||
team1 = Team.objects.create(
|
|
||||||
name = 'FirstTeam',
|
|
||||||
notes = faker.text(),
|
|
||||||
manager = self.ufreecoach,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(team1.manager,self.ufreecoach)
|
|
||||||
|
|
||||||
team2 = Team.objects.create(
|
|
||||||
name = 'SecondTeam',
|
|
||||||
notes = faker.text(),
|
|
||||||
manager = self.ufreecoach,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(team2.manager,self.ufreecoach)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Free Coach can create planned sessions and team planned sessions
|
|
||||||
## Self Coach and higher can create planned sessions and team planned sessions
|
|
||||||
def test_plan_create_session(self):
|
|
||||||
ps = PlannedSession.objects.create(
|
|
||||||
manager=self.ufreecoach,
|
|
||||||
name=faker.word(),
|
|
||||||
comment=faker.text()
|
|
||||||
)
|
|
||||||
self.assertEqual(ps.manager,self.ufreecoach)
|
|
||||||
|
|
||||||
def test_coach_create_session(self):
|
|
||||||
ps = PlannedSession.objects.create(
|
|
||||||
manager=self.ufreecoach,
|
|
||||||
name=faker.word(),
|
|
||||||
comment=faker.text()
|
|
||||||
)
|
|
||||||
self.assertEqual(ps.manager,self.ufreecoach)
|
|
||||||
|
|
||||||
|
|
||||||
## Basic cannot join groups led by Free Coach
|
|
||||||
def test_add_basic_pro_or_plan(self):
|
|
||||||
with transaction.atomic():
|
|
||||||
with self.assertRaises(ValidationError):
|
|
||||||
self.rbasic.team.add(self.teamfreecoach)
|
|
||||||
|
|
||||||
|
|
||||||
## Free Coach user cannot have workouts
|
|
||||||
def test_add_workout_freecoach(self):
|
|
||||||
result = get_random_file(filename='rowers/tests/testdata/erg1.csv')
|
|
||||||
with transaction.atomic():
|
|
||||||
with self.assertRaises(ValidationError):
|
|
||||||
self.werg1 = WorkoutFactory(user=self.rfreecoach,
|
|
||||||
csvfilename=result['filename'],
|
|
||||||
starttime=result['starttime'],
|
|
||||||
startdatetime=result['startdatetime'],
|
|
||||||
duration=result['duration'],
|
|
||||||
distance=result['totaldist'],
|
|
||||||
workouttype = 'rower',
|
|
||||||
)
|
|
||||||
|
|
||||||
@override_settings(TESTING=True)
|
@override_settings(TESTING=True)
|
||||||
class PermissionsBasicsTests(TestCase):
|
class PermissionsBasicsTests(TestCase):
|
||||||
@@ -286,7 +110,7 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
self.rcoach = Rower.objects.create(user=self.ucoach,
|
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',clubsize=10)
|
rowerplan='pro',clubsize=10)
|
||||||
|
|
||||||
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||||
self.coachinggroup = CoachingGroup.objects.create()
|
self.coachinggroup = CoachingGroup.objects.create()
|
||||||
@@ -301,7 +125,7 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
self.rplan = Rower.objects.create(user=self.uplan,
|
self.rplan = Rower.objects.create(user=self.uplan,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='plan')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
||||||
self.factory = RequestFactory()
|
self.factory = RequestFactory()
|
||||||
@@ -325,7 +149,7 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='plan')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
||||||
self.factory = RequestFactory()
|
self.factory = RequestFactory()
|
||||||
@@ -341,7 +165,7 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
|
|
||||||
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
|
self.upro2_workouts = WorkoutFactory.create_batch(5, user=self.rpro2)
|
||||||
self.factory = RequestFactory()
|
self.factory = RequestFactory()
|
||||||
self.password = faker.word()
|
self.upro2password = faker.word()
|
||||||
self.upro2.set_password(self.password)
|
self.upro2.set_password(self.password)
|
||||||
self.upro2.save()
|
self.upro2.save()
|
||||||
|
|
||||||
@@ -366,15 +190,6 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
notes=faker.text(),
|
notes=faker.text(),
|
||||||
manager=self.upro2)
|
manager=self.upro2)
|
||||||
|
|
||||||
self.teamplan = Team.objects.create(
|
|
||||||
name=faker.word()+'2',
|
|
||||||
notes=faker.text(),
|
|
||||||
manager=self.uplan2)
|
|
||||||
|
|
||||||
self.teamcoach = Team.objects.create(
|
|
||||||
name=faker.word()+'3',
|
|
||||||
notes=faker.text(),
|
|
||||||
manager=self.ucoach)
|
|
||||||
|
|
||||||
# Requirements
|
# Requirements
|
||||||
|
|
||||||
@@ -411,12 +226,11 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
|
|
||||||
## Basic athletes can be member of Coach led group
|
## Basic athletes can be member of Coach led group
|
||||||
def test_add_coach(self):
|
def test_add_coach(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
self.assertIn(self.teamcoach,self.rbasic.team.all())
|
self.assertIn(self.teampro,self.rbasic.team.all())
|
||||||
|
|
||||||
|
|
||||||
## Self coach can create one group
|
## Pro member can create more than one group
|
||||||
## Self coach cannot create more than one group
|
|
||||||
def test_plan_groupmanager(self):
|
def test_plan_groupmanager(self):
|
||||||
team1 = Team.objects.create(
|
team1 = Team.objects.create(
|
||||||
name = 'FirstTeam',
|
name = 'FirstTeam',
|
||||||
@@ -426,32 +240,24 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
|
|
||||||
self.assertEqual(team1.manager,self.uplan)
|
self.assertEqual(team1.manager,self.uplan)
|
||||||
|
|
||||||
with self.assertRaises(ValidationError):
|
|
||||||
team2 = Team.objects.create(
|
team2 = Team.objects.create(
|
||||||
name = 'SecondTeam',
|
name = 'SecondTeam',
|
||||||
notes = faker.text(),
|
notes = faker.text(),
|
||||||
manager = self.uplan,
|
manager = self.uplan,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.assertEqual(team2.manager,self.uplan)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Pro users (and higher) can join group led by other Pro (or higher) user
|
## Pro users (and higher) can join group led by other Pro (or higher) user
|
||||||
def test_add_proplan_pro_or_plan(self):
|
def test_add_proplan_pro_or_plan(self):
|
||||||
self.rpro.team.add(self.teamplan)
|
|
||||||
self.assertIn(self.teamplan,self.rpro.team.all())
|
|
||||||
|
|
||||||
self.rpro.team.add(self.teampro)
|
self.rpro.team.add(self.teampro)
|
||||||
self.assertIn(self.teampro,self.rpro.team.all())
|
self.assertIn(self.teampro,self.rpro.team.all())
|
||||||
|
|
||||||
self.rplan.team.add(self.teamplan)
|
|
||||||
self.assertIn(self.teamplan,self.rplan.team.all())
|
|
||||||
|
|
||||||
self.rplan.team.add(self.teampro)
|
self.rplan.team.add(self.teampro)
|
||||||
self.assertIn(self.teampro,self.rplan.team.all())
|
self.assertIn(self.teampro,self.rplan.team.all())
|
||||||
|
|
||||||
self.rcoach.team.add(self.teamplan)
|
|
||||||
self.assertIn(self.teamplan,self.rcoach.team.all())
|
|
||||||
|
|
||||||
self.rcoach.team.add(self.teampro)
|
self.rcoach.team.add(self.teampro)
|
||||||
self.assertIn(self.teampro,self.rcoach.team.all())
|
self.assertIn(self.teampro,self.rcoach.team.all())
|
||||||
|
|
||||||
@@ -476,8 +282,7 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(ps.manager,self.ucoach)
|
self.assertEqual(ps.manager,self.ucoach)
|
||||||
|
|
||||||
## Pro can have one group
|
## Pro can have more than one group
|
||||||
## Pro cannot create more than one group
|
|
||||||
def test_pro_groupmanager(self):
|
def test_pro_groupmanager(self):
|
||||||
team1 = Team.objects.create(
|
team1 = Team.objects.create(
|
||||||
name = 'FirstTeam',
|
name = 'FirstTeam',
|
||||||
@@ -487,23 +292,24 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
|
|
||||||
self.assertEqual(team1.manager,self.upro)
|
self.assertEqual(team1.manager,self.upro)
|
||||||
|
|
||||||
with self.assertRaises(ValidationError):
|
|
||||||
team2 = Team.objects.create(
|
team2 = Team.objects.create(
|
||||||
name = 'SecondTeam',
|
name = 'SecondTeam',
|
||||||
notes = faker.text(),
|
notes = faker.text(),
|
||||||
manager = self.upro,
|
manager = self.upro,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.assertEqual(team2.manager,self.upro)
|
||||||
|
|
||||||
## Pro or Basic cannot create planned sessions or team planned sessions
|
## Basic cannot create planned sessions or team planned sessions
|
||||||
def test_pro_create_plannedsession(self):
|
def test_pro_create_plannedsession(self):
|
||||||
with self.assertRaises(ValidationError):
|
|
||||||
ps = PlannedSession.objects.create(
|
ps = PlannedSession.objects.create(
|
||||||
manager=self.upro,
|
manager=self.upro,
|
||||||
name = faker.word(),
|
name = faker.word(),
|
||||||
comment = faker.text()
|
comment = faker.text()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.assertEqual(ps.manager,self.upro)
|
||||||
|
|
||||||
def test_basic_create_plannedsession(self):
|
def test_basic_create_plannedsession(self):
|
||||||
with self.assertRaises(ValidationError):
|
with self.assertRaises(ValidationError):
|
||||||
ps = PlannedSession.objects.create(
|
ps = PlannedSession.objects.create(
|
||||||
@@ -512,15 +318,6 @@ class PermissionsBasicsTests(TestCase):
|
|||||||
comment = faker.text()
|
comment = faker.text()
|
||||||
)
|
)
|
||||||
|
|
||||||
## Basic cannot join groups led by Pro or Self Coach
|
|
||||||
def test_add_basic_pro_or_plan(self):
|
|
||||||
with transaction.atomic():
|
|
||||||
with self.assertRaises(ValidationError):
|
|
||||||
self.rbasic.team.add(self.teamplan)
|
|
||||||
|
|
||||||
with transaction.atomic():
|
|
||||||
with self.assertRaises(ValidationError):
|
|
||||||
self.rbasic.team.add(self.teampro)
|
|
||||||
|
|
||||||
|
|
||||||
## Basic cannot manage a group
|
## Basic cannot manage a group
|
||||||
@@ -546,7 +343,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
self.rcoach = Rower.objects.create(user=self.ucoach,
|
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',clubsize=10)
|
rowerplan='pro',clubsize=10)
|
||||||
|
|
||||||
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||||
self.coachinggroup = CoachingGroup.objects.create()
|
self.coachinggroup = CoachingGroup.objects.create()
|
||||||
@@ -561,7 +358,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
self.rplan = Rower.objects.create(user=self.uplan,
|
self.rplan = Rower.objects.create(user=self.uplan,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='plan')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
||||||
self.factory = RequestFactory()
|
self.factory = RequestFactory()
|
||||||
@@ -585,7 +382,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='plan')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
||||||
self.factory = RequestFactory()
|
self.factory = RequestFactory()
|
||||||
@@ -628,17 +425,12 @@ class PermissionsViewTests(TestCase):
|
|||||||
notes=faker.text(),
|
notes=faker.text(),
|
||||||
manager=self.upro2)
|
manager=self.upro2)
|
||||||
|
|
||||||
self.teamplan = Team.objects.create(
|
|
||||||
name=faker.word()+'2',
|
|
||||||
notes=faker.text(),
|
|
||||||
manager=self.uplan2)
|
|
||||||
|
|
||||||
self.teamcoach = Team.objects.create(
|
self.teamcoach = Team.objects.create(
|
||||||
name=faker.word()+'3',
|
name=faker.word()+'3',
|
||||||
notes=faker.text(),
|
notes=faker.text(),
|
||||||
manager=self.ucoach)
|
manager=self.ucoach)
|
||||||
|
|
||||||
|
|
||||||
## only ubasic can view ubasic_workouts[0] which is private
|
## only ubasic can view ubasic_workouts[0] which is private
|
||||||
def test_view_workout(self):
|
def test_view_workout(self):
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
@@ -756,7 +548,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
## Coach can edit on behalf of athlete if permitted
|
## Coach can edit on behalf of athlete if permitted
|
||||||
# 1, Preferences
|
# 1, Preferences
|
||||||
def test_coach_edit_athlete_prefs(self):
|
def test_coach_edit_athlete_prefs(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
self.rbasic.coachinggroups.add(self.coachinggroup)
|
self.rbasic.coachinggroups.add(self.coachinggroup)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
@@ -768,7 +560,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
def test_coach_edit_athlete_prefs_not(self):
|
def test_coach_edit_athlete_prefs_not(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -780,7 +572,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
# 2, Favorite Charts
|
# 2, Favorite Charts
|
||||||
def test_coach_edit_athlete_settings(self):
|
def test_coach_edit_athlete_settings(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
self.rbasic.coachinggroups.add(self.coachinggroup)
|
self.rbasic.coachinggroups.add(self.coachinggroup)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
@@ -792,7 +584,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
def test_coach_edit_athlete_settings_not(self):
|
def test_coach_edit_athlete_settings_not(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -804,7 +596,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
# 3, Export Settings
|
# 3, Export Settings
|
||||||
def test_coach_edit_athlete_exportsettings(self):
|
def test_coach_edit_athlete_exportsettings(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
self.rbasic.coachinggroups.add(self.coachinggroup)
|
self.rbasic.coachinggroups.add(self.coachinggroup)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
@@ -816,7 +608,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
def test_coach_edit_athlete_exportsettings_not(self):
|
def test_coach_edit_athlete_exportsettings_not(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -828,7 +620,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
# 4, Account settings
|
# 4, Account settings
|
||||||
def test_coach_edit_athlete_account(self):
|
def test_coach_edit_athlete_account(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
self.rbasic.coachinggroups.add(self.coachinggroup)
|
self.rbasic.coachinggroups.add(self.coachinggroup)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
@@ -840,7 +632,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
def test_coach_edit_athlete_account_not(self):
|
def test_coach_edit_athlete_account_not(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -853,7 +645,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
## Coach can run analytics for athlete
|
## Coach can run analytics for athlete
|
||||||
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
|
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
|
||||||
def test_coach_edit_athlete_analysis(self,mocked_df):
|
def test_coach_edit_athlete_analysis(self,mocked_df):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
self.rbasic.coachinggroups.add(self.coachinggroup)
|
self.rbasic.coachinggroups.add(self.coachinggroup)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
@@ -874,7 +666,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
|
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
|
||||||
def test_coach_edit_athlete_analysis_not(self,mocked_df):
|
def test_coach_edit_athlete_analysis_not(self,mocked_df):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -892,7 +684,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
|
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
|
||||||
def test_coach_edit_athlete_analysis_not2(self,mocked_df):
|
def test_coach_edit_athlete_analysis_not2(self,mocked_df):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -961,7 +753,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
def test_coach_edit_athlete_uploadnot(self,mocked_sqlalchemy,mocked_read_data):
|
def test_coach_edit_athlete_uploadnot(self,mocked_sqlalchemy,mocked_read_data):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teamcoach)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.upro2.username, password=self.upro2password)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
|
|
||||||
url = reverse('team_workout_upload_view')
|
url = reverse('team_workout_upload_view')
|
||||||
@@ -1001,9 +793,9 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
## Coach can edit athlete's workout
|
## Coach can edit athlete's workout
|
||||||
def test_coach_edit_athlete_workout(self):
|
def test_coach_edit_athlete_workout(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.upro2.username, password=self.upro2password)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
|
|
||||||
url = reverse('workout_edit_view',
|
url = reverse('workout_edit_view',
|
||||||
@@ -1015,9 +807,11 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
## Coach can see list of workouts of athlete
|
## Coach can see list of workouts of athlete
|
||||||
def test_coach_athlete_workout_list(self):
|
def test_coach_athlete_workout_list(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
|
# check if rbasic is in teampro
|
||||||
|
self.assertIn(self.teampro,self.rbasic.team.all())
|
||||||
|
|
||||||
login = self.c.login(username=self.ucoach.username, password=self.ucoachpassword)
|
login = self.c.login(username=self.upro2.username, password=self.upro2password)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
|
|
||||||
url = reverse('workouts_view',
|
url = reverse('workouts_view',
|
||||||
@@ -1137,7 +931,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
## Self Coach cannot edit on behalf of athlete
|
## Self Coach cannot edit on behalf of athlete
|
||||||
def test_plan_edit_athlete_settings(self):
|
def test_plan_edit_athlete_settings(self):
|
||||||
self.rpro.team.add(self.teamplan)
|
self.rpro.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -1145,12 +939,12 @@ class PermissionsViewTests(TestCase):
|
|||||||
url = reverse('rower_prefs_view',kwargs={'userid':self.ubasic.id})
|
url = reverse('rower_prefs_view',kwargs={'userid':self.ubasic.id})
|
||||||
|
|
||||||
response = self.c.get(url)
|
response = self.c.get(url)
|
||||||
self.assertEqual(response.status_code,403)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
## Self Coach cannot run analytics on behalf of athlete
|
## Self Coach cannot run analytics on behalf of athlete
|
||||||
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
|
@patch('rowers.dataprep.read_cols_df_sql', side_effect = mocked_read_df_cols_sql_multistats)
|
||||||
def test_plan_edit_athlete_analysis(self,mocked_df):
|
def test_plan_edit_athlete_analysis(self,mocked_df):
|
||||||
self.rpro.team.add(self.teamplan)
|
self.rpro.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -1164,13 +958,13 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
response = self.c.get(url)
|
response = self.c.get(url)
|
||||||
|
|
||||||
self.assertEqual(response.status_code,403)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
## Self Coach cannot upload on behalf of athlete
|
## Self Coach cannot upload on behalf of athlete
|
||||||
@patch('rowers.dataprep.create_engine')
|
@patch('rowers.dataprep.create_engine')
|
||||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
||||||
def test_plan_edit_athlete_upload(self,mocked_sqlalchemy,mocked_read_data):
|
def test_plan_edit_athlete_upload(self,mocked_sqlalchemy,mocked_read_data):
|
||||||
self.rpro.team.add(self.teamplan)
|
self.rpro.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -1178,11 +972,10 @@ class PermissionsViewTests(TestCase):
|
|||||||
url = reverse('team_workout_upload_view')
|
url = reverse('team_workout_upload_view')
|
||||||
|
|
||||||
response = self.c.get(url)
|
response = self.c.get(url)
|
||||||
self.assertEqual(response.status_code,403)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
|
||||||
## Pro can have one group
|
## Pro can have more than one group
|
||||||
## Pro cannot create more than one group
|
|
||||||
def test_pro_groups_create(self):
|
def test_pro_groups_create(self):
|
||||||
login = self.c.login(username=self.upro.username, password=self.upropassword)
|
login = self.c.login(username=self.upro.username, password=self.upropassword)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -1228,7 +1021,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
self.assertTrue(form.is_valid())
|
self.assertTrue(form.is_valid())
|
||||||
|
|
||||||
expected_url = reverse('paidplans_view')
|
expected_url = reverse('rower_teams_view')
|
||||||
|
|
||||||
response = self.c.post(url,form_data,follow=True)
|
response = self.c.post(url,form_data,follow=True)
|
||||||
self.assertRedirects(response,
|
self.assertRedirects(response,
|
||||||
@@ -1289,75 +1082,11 @@ class PermissionsViewTests(TestCase):
|
|||||||
|
|
||||||
self.assertEqual(response.status_code,403)
|
self.assertEqual(response.status_code,403)
|
||||||
|
|
||||||
## Self Coach cannot upload on behalf of athlete
|
|
||||||
@patch('rowers.dataprep.create_engine')
|
|
||||||
@patch('rowers.dataprep.read_data',side_effect=mocked_read_data)
|
|
||||||
def test_plan_edit_athlete_upload(self,mocked_sqlalchemy,mocked_read_data):
|
|
||||||
self.rpro.team.add(self.teamplan)
|
|
||||||
|
|
||||||
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
|
||||||
self.assertTrue(login)
|
|
||||||
|
|
||||||
url = reverse('team_workout_upload_view')
|
|
||||||
|
|
||||||
response = self.c.get(url,follow=True)
|
|
||||||
self.assertEqual(response.status_code,200)
|
|
||||||
|
|
||||||
expected_url = reverse('paidplans_view')
|
|
||||||
self.assertRedirects(response,
|
|
||||||
expected_url = expected_url,
|
|
||||||
status_code=302,target_status_code=200)
|
|
||||||
|
|
||||||
|
|
||||||
## Pro users can see team members' workout, but not edit
|
|
||||||
def test_pro_edit_athlete_workout(self):
|
|
||||||
self.rpro.team.add(self.teampro)
|
|
||||||
self.rpro2.team.add(self.teampro)
|
|
||||||
|
|
||||||
login = self.c.login(username=self.upro2.username, password=self.upro2password)
|
|
||||||
self.assertTrue(login)
|
|
||||||
|
|
||||||
url = reverse('workout_edit_view',
|
|
||||||
kwargs={'id':encoder.encode_hex(self.upro_workouts[0].id)}
|
|
||||||
)
|
|
||||||
|
|
||||||
response = self.c.get(url)
|
|
||||||
self.assertEqual(response.status_code,403)
|
|
||||||
|
|
||||||
url = reverse('workout_view',
|
|
||||||
kwargs={'id':encoder.encode_hex(self.upro_workouts[0].id)}
|
|
||||||
)
|
|
||||||
|
|
||||||
response = self.c.get(url)
|
|
||||||
self.assertEqual(response.status_code,200)
|
|
||||||
|
|
||||||
|
|
||||||
## Self Coach users can see team members' workout, but not edit
|
|
||||||
def test_plan_edit_athlete_workout(self):
|
|
||||||
self.rpro.team.add(self.teamplan)
|
|
||||||
|
|
||||||
login = self.c.login(username=self.uplan2.username, password=self.uplan2password)
|
|
||||||
self.assertTrue(login)
|
|
||||||
|
|
||||||
url = reverse('workout_edit_view',
|
|
||||||
kwargs={'id':encoder.encode_hex(self.ubasic_workouts[0].id)}
|
|
||||||
)
|
|
||||||
|
|
||||||
response = self.c.get(url)
|
|
||||||
self.assertEqual(response.status_code,403)
|
|
||||||
|
|
||||||
url = reverse('workout_view',
|
|
||||||
kwargs={'id':encoder.encode_hex(self.ubasic_workouts[0].id)}
|
|
||||||
)
|
|
||||||
|
|
||||||
response = self.c.get(url)
|
|
||||||
self.assertEqual(response.status_code,200)
|
|
||||||
|
|
||||||
|
|
||||||
## Basic users can see team members' workout, but not edit
|
## Basic users can see team members' workout, but not edit
|
||||||
def test_basic_edit_athlete_workout(self):
|
def test_basic_edit_athlete_workout(self):
|
||||||
self.rbasic.team.add(self.teamcoach)
|
self.rbasic.team.add(self.teampro)
|
||||||
self.rplan2.team.add(self.teamcoach)
|
self.rplan2.team.add(self.teampro)
|
||||||
|
|
||||||
login = self.c.login(username=self.ubasic.username, password=self.ubasicpassword)
|
login = self.c.login(username=self.ubasic.username, password=self.ubasicpassword)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -1421,7 +1150,7 @@ class PermissionsViewTests(TestCase):
|
|||||||
expected_url = expected_url,
|
expected_url = expected_url,
|
||||||
status_code=302,target_status_code=200)
|
status_code=302,target_status_code=200)
|
||||||
|
|
||||||
## Basic cannot join groups from Pro or Self Coach users (redirects to paid plans)
|
## Basic can join groups from Pro
|
||||||
def test_team_member_request_basic_pro(self):
|
def test_team_member_request_basic_pro(self):
|
||||||
login = self.c.login(username=self.ubasic.username,password=self.ubasicpassword)
|
login = self.c.login(username=self.ubasic.username,password=self.ubasicpassword)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -1435,12 +1164,12 @@ class PermissionsViewTests(TestCase):
|
|||||||
response = self.c.get(url,follow=True)
|
response = self.c.get(url,follow=True)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
expected_url = reverse('paidplans_view')
|
expected_url = reverse('team_view',kwargs={'team_id':self.teampro.id})
|
||||||
|
|
||||||
self.assertRedirects(response,
|
self.assertRedirects(response,
|
||||||
expected_url = expected_url,
|
expected_url = expected_url,
|
||||||
status_code=302,target_status_code=200)
|
status_code=302,target_status_code=200)
|
||||||
|
|
||||||
|
|
||||||
@override_settings(TESTING=True)
|
@override_settings(TESTING=True)
|
||||||
class PermissionsCoachingTests(TestCase):
|
class PermissionsCoachingTests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@@ -1451,7 +1180,7 @@ class PermissionsCoachingTests(TestCase):
|
|||||||
self.rcoach = Rower.objects.create(user=self.ucoach,
|
self.rcoach = Rower.objects.create(user=self.ucoach,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',clubsize=10)
|
rowerplan='pro',clubsize=10)
|
||||||
|
|
||||||
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
self.ucoach_workouts = WorkoutFactory.create_batch(5, user=self.rcoach)
|
||||||
self.coachinggroup = CoachingGroup.objects.create()
|
self.coachinggroup = CoachingGroup.objects.create()
|
||||||
@@ -1466,7 +1195,7 @@ class PermissionsCoachingTests(TestCase):
|
|||||||
self.rplan = Rower.objects.create(user=self.uplan,
|
self.rplan = Rower.objects.create(user=self.uplan,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='plan')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
self.uplan_workouts = WorkoutFactory.create_batch(5, user=self.rplan)
|
||||||
self.factory = RequestFactory()
|
self.factory = RequestFactory()
|
||||||
@@ -1490,7 +1219,7 @@ class PermissionsCoachingTests(TestCase):
|
|||||||
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
self.rplan2 = Rower.objects.create(user=self.uplan2,
|
||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
gdproptin=True, ftpset=True,surveydone=True,gdproptindate=timezone.now(),
|
||||||
rowerplan='plan')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
self.uplan2_workouts = WorkoutFactory.create_batch(5, user=self.rplan2)
|
||||||
self.factory = RequestFactory()
|
self.factory = RequestFactory()
|
||||||
@@ -1524,22 +1253,13 @@ class PermissionsCoachingTests(TestCase):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
## TeamPro, TeamCoach, TeamSelfCoach
|
## TeamPro, Teampro, TeamSelfCoach
|
||||||
|
|
||||||
self.teampro = Team.objects.create(
|
self.teampro = Team.objects.create(
|
||||||
name=faker.word()+'1',
|
name=faker.word()+'1',
|
||||||
notes=faker.text(),
|
notes=faker.text(),
|
||||||
manager=self.upro2)
|
manager=self.upro2)
|
||||||
|
|
||||||
self.teamplan = Team.objects.create(
|
|
||||||
name=faker.word()+'2',
|
|
||||||
notes=faker.text(),
|
|
||||||
manager=self.uplan2)
|
|
||||||
|
|
||||||
self.teamcoach = Team.objects.create(
|
|
||||||
name=faker.word()+'3',
|
|
||||||
notes=faker.text(),
|
|
||||||
manager=self.ucoach)
|
|
||||||
|
|
||||||
def test_athlete_request_athlete_revoke(self):
|
def test_athlete_request_athlete_revoke(self):
|
||||||
login = self.c.login(username=self.ubasic.username,password=self.ubasicpassword)
|
login = self.c.login(username=self.ubasic.username,password=self.ubasicpassword)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ class ChallengesTest(TestCase):
|
|||||||
birthdate=datetime.datetime.now()-datetime.timedelta(days=25*365),
|
birthdate=datetime.datetime.now()-datetime.timedelta(days=25*365),
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.u2 = UserFactory()
|
self.u2 = UserFactory()
|
||||||
self.r2 = Rower.objects.create(user=self.u2,
|
self.r2 = Rower.objects.create(user=self.u2,
|
||||||
@@ -1089,7 +1089,7 @@ class IndoorChallengesTest(TestCase):
|
|||||||
birthdate=datetime.datetime.now()-datetime.timedelta(days=25*365),
|
birthdate=datetime.datetime.now()-datetime.timedelta(days=25*365),
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class SimpleViewTest(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True, surveydone=True,
|
gdproptin=True, ftpset=True, surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class TeamTest(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',
|
rowerplan='pro',
|
||||||
user=u,
|
user=u,
|
||||||
clubsize=3
|
clubsize=3
|
||||||
)
|
)
|
||||||
@@ -402,7 +402,7 @@ class TeamTestLowLevel(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',
|
rowerplan='pro',
|
||||||
user=u,
|
user=u,
|
||||||
clubsize=3
|
clubsize=3
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class OtherUnitTests(TestCase):
|
|||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
defaulttimezone='US/Pacific',
|
defaulttimezone='US/Pacific',
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
|
|
||||||
# Test get_dates_timeperiod
|
# Test get_dates_timeperiod
|
||||||
@@ -172,7 +172,7 @@ class PlannedSessionTests(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
@@ -430,7 +430,7 @@ class DataPrepTests(TestCase):
|
|||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
sex='male',
|
sex='male',
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.r.birthdate = timezone.now()-datetime.timedelta(days=25*365)
|
self.r.birthdate = timezone.now()-datetime.timedelta(days=25*365)
|
||||||
self.r.defaulttimezone = 'Europe/Amsterdam'
|
self.r.defaulttimezone = 'Europe/Amsterdam'
|
||||||
@@ -649,7 +649,7 @@ class InteractivePlotTests(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class ForceUnits(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
|
|
||||||
self.user_workouts = WorkoutFactory.create_batch(12, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(12, user=self.r)
|
||||||
@@ -171,7 +171,7 @@ class TestForceUnit(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.user_workouts = WorkoutFactory.create_batch(14, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(14, user=self.r)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class ViewTest(TestCase):
|
|||||||
'koeinsloot')
|
'koeinsloot')
|
||||||
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
|
self.r = Rower.objects.create(user=self.u,gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach',
|
rowerplan='pro',
|
||||||
)
|
)
|
||||||
|
|
||||||
add_defaultfavorites(self.r)
|
add_defaultfavorites(self.r)
|
||||||
|
|||||||
@@ -119,7 +119,6 @@ class URLTests(TestCase):
|
|||||||
'/rowers/me/workflowdefault/',
|
'/rowers/me/workflowdefault/',
|
||||||
'/rowers/partners/',
|
'/rowers/partners/',
|
||||||
'/rowers/physics/',
|
'/rowers/physics/',
|
||||||
'/rowers/planrequired/',
|
|
||||||
'/rowers/register/',
|
'/rowers/register/',
|
||||||
'/rowers/register/thankyou/',
|
'/rowers/register/thankyou/',
|
||||||
'/rowers/sessions/',
|
'/rowers/sessions/',
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ class UserPreferencesTest(TestCase):
|
|||||||
birthdate=faker.profile()['birthdate'],
|
birthdate=faker.profile()['birthdate'],
|
||||||
gdproptin=True, ftpset=True,surveydone=True,
|
gdproptin=True, ftpset=True,surveydone=True,
|
||||||
gdproptindate=timezone.now(),
|
gdproptindate=timezone.now(),
|
||||||
rowerplan='coach')
|
rowerplan='pro')
|
||||||
|
|
||||||
self.c = Client()
|
self.c = Client()
|
||||||
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
self.user_workouts = WorkoutFactory.create_batch(5, user=self.r)
|
||||||
|
|||||||
BIN
Binary file not shown.
+2
-4
@@ -845,8 +845,6 @@ urlpatterns = [
|
|||||||
name='downgrade_checkouts'),
|
name='downgrade_checkouts'),
|
||||||
re_path(r'^purchasecheckouts/$', views.purchase_checkouts_view,
|
re_path(r'^purchasecheckouts/$', views.purchase_checkouts_view,
|
||||||
name='purchase_checkouts_view'),
|
name='purchase_checkouts_view'),
|
||||||
re_path(r'^planrequired/', views.planrequired_view,
|
|
||||||
name='planrequired_view'),
|
|
||||||
re_path(r'^starttrial/$', views.start_trial_view, name='start_trial_view'),
|
re_path(r'^starttrial/$', views.start_trial_view, name='start_trial_view'),
|
||||||
re_path(r'^startplantrial/$', views.start_plantrial_view,
|
re_path(r'^startplantrial/$', views.start_plantrial_view,
|
||||||
name='start_plantrial_view'),
|
name='start_plantrial_view'),
|
||||||
@@ -856,8 +854,8 @@ urlpatterns = [
|
|||||||
template_name='legal.html'), name='legal'),
|
template_name='legal.html'), name='legal'),
|
||||||
re_path(r'^register/$', views.rower_register_view,
|
re_path(r'^register/$', views.rower_register_view,
|
||||||
name='rower_register_view'),
|
name='rower_register_view'),
|
||||||
re_path(r'^coachregister/$', views.freecoach_register_view,
|
re_path(r'^coachregister/$', views.coach_register_view,
|
||||||
name='freecoach_register_view'),
|
name='coach_register_view'),
|
||||||
path('activate/<uidb64>/<token>/', views.useractivate, name='useractivate'),
|
path('activate/<uidb64>/<token>/', views.useractivate, name='useractivate'),
|
||||||
re_path(r'^register/thankyou/$', TemplateView.as_view(
|
re_path(r'^register/thankyou/$', TemplateView.as_view(
|
||||||
template_name='registerthankyou.html'), name='registerthankyou'),
|
template_name='registerthankyou.html'), name='registerthankyou'),
|
||||||
|
|||||||
@@ -27,11 +27,6 @@ defaultoptions = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(ispromember, login_url="/rowers/paidplans",
|
|
||||||
message="This functionality requires a Pro plan or higher."
|
|
||||||
" If you are already a Pro user,"
|
|
||||||
" please log in to access this functionality",
|
|
||||||
redirect_field_name=None)
|
|
||||||
@permission_required('rower.is_coach',
|
@permission_required('rower.is_coach',
|
||||||
fn=get_user_by_userid,
|
fn=get_user_by_userid,
|
||||||
raise_exception=True)
|
raise_exception=True)
|
||||||
@@ -897,11 +892,6 @@ def statsdata(workouts, options):
|
|||||||
|
|
||||||
|
|
||||||
def comparisondata(workouts, options):
|
def comparisondata(workouts, options):
|
||||||
#try:
|
|
||||||
# workouts = workouts.exclude(workoutsource='strava')
|
|
||||||
#except AttributeError: # pragma: no cover
|
|
||||||
# workouts = [w for w in workouts if w.workoutsource != 'strava']
|
|
||||||
|
|
||||||
includereststrokes = options['includereststrokes']
|
includereststrokes = options['includereststrokes']
|
||||||
xparam = options['xaxis']
|
xparam = options['xaxis']
|
||||||
yparam1 = options['yaxis1']
|
yparam1 = options['yaxis1']
|
||||||
@@ -1013,10 +1003,6 @@ def boxplotdata(workouts, options):
|
|||||||
return(script, div)
|
return(script, div)
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(ispromember, login_url="/rowers/paidplans",
|
|
||||||
message="This functionality requires a Pro plan or higher."
|
|
||||||
" If you are already a Pro user, please log in to access this functionality",
|
|
||||||
redirect_field_name=None)
|
|
||||||
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||||
def analysis_view_data(request, userid=0):
|
def analysis_view_data(request, userid=0):
|
||||||
is_ajax = request_is_ajax(request)
|
is_ajax = request_is_ajax(request)
|
||||||
@@ -1087,17 +1073,10 @@ def analysis_view_data(request, userid=0):
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
def planrequired_view(request):
|
|
||||||
messages.info(
|
|
||||||
request, "This functionality requires Coach or Self-Coach membership")
|
|
||||||
|
|
||||||
return HttpResponseRedirect(reverse('paidplans_view'))
|
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(ispromember, login_url="/rowers/paidplans",
|
@login_required()
|
||||||
message="This functionality requires a Pro plan or higher."
|
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||||
" If you are already a Pro user, please log in to access this functionality",
|
|
||||||
redirect_field_name=None)
|
|
||||||
def create_marker_workouts_view(request, userid=0,
|
def create_marker_workouts_view(request, userid=0,
|
||||||
startdate=timezone.now()-timezone.timedelta(days=42),
|
startdate=timezone.now()-timezone.timedelta(days=42),
|
||||||
enddate=timezone.now()):
|
enddate=timezone.now()):
|
||||||
@@ -1119,10 +1098,8 @@ def create_marker_workouts_view(request, userid=0,
|
|||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(ispromember, login_url="/rowers/paidplans",
|
@login_required()
|
||||||
message="This functionality requires a Pro plan or higher."
|
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||||
" If you are already a Pro user, please log in to access this functionality",
|
|
||||||
redirect_field_name=None)
|
|
||||||
def goldmedalscores_view(request, userid=0,
|
def goldmedalscores_view(request, userid=0,
|
||||||
startdate=timezone.now()-timezone.timedelta(days=365),
|
startdate=timezone.now()-timezone.timedelta(days=365),
|
||||||
enddate=timezone.now()):
|
enddate=timezone.now()):
|
||||||
@@ -1184,10 +1161,6 @@ def goldmedalscores_view(request, userid=0,
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(ispromember, login_url="/rowers/paidplans",
|
|
||||||
message="This functionality requires a Pro plan or higher."
|
|
||||||
" If you are already a Pro user, please log in to access this functionality",
|
|
||||||
redirect_field_name=None)
|
|
||||||
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||||
def trainingzones_view(request, userid=0):
|
def trainingzones_view(request, userid=0):
|
||||||
r = getrequestrower(request, userid=userid)
|
r = getrequestrower(request, userid=userid)
|
||||||
@@ -1255,6 +1228,7 @@ def trainingzones_view(request, userid=0):
|
|||||||
|
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
|
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||||
def trainingzones_view_data(request, userid=0):
|
def trainingzones_view_data(request, userid=0):
|
||||||
r = getrequestrower(request, userid=userid)
|
r = getrequestrower(request, userid=userid)
|
||||||
|
|
||||||
@@ -1296,10 +1270,6 @@ def trainingzones_view_data(request, userid=0):
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(ispromember, login_url="/rowers/paidplans",
|
|
||||||
message="This functionality requires a Pro plan or higher."
|
|
||||||
" If you are already a Pro user, please log in to access this functionality",
|
|
||||||
redirect_field_name=None)
|
|
||||||
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||||
def performancemanager_view(request, userid=0, mode='rower',
|
def performancemanager_view(request, userid=0, mode='rower',
|
||||||
startdate=timezone.now()-timezone.timedelta(days=365),
|
startdate=timezone.now()-timezone.timedelta(days=365),
|
||||||
@@ -2060,10 +2030,6 @@ class AlertDelete(DeleteView):
|
|||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
||||||
@user_passes_test(ispromember, login_url="/rowers/paidplans",
|
|
||||||
message="This functionality requires a Pro plan or higher."
|
|
||||||
" If you are already a Pro user, please log in to access this functionality",
|
|
||||||
redirect_field_name=None)
|
|
||||||
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
@permission_required('rower.is_coach', fn=get_user_by_userid, raise_exception=True)
|
||||||
def history_view(request, userid=0):
|
def history_view(request, userid=0):
|
||||||
r = getrequestrower(request, userid=userid)
|
r = getrequestrower(request, userid=userid)
|
||||||
|
|||||||
@@ -101,7 +101,6 @@ def javascript_log(request):
|
|||||||
return JSONResponse(status=200, data = {'status': 'true', 'message': message})
|
return JSONResponse(status=200, data = {'status': 'true', 'message': message})
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
|
|
||||||
def strokedataform(request, id=0):
|
def strokedataform(request, id=0):
|
||||||
|
|
||||||
id = encoder.decode_hex(id)
|
id = encoder.decode_hex(id)
|
||||||
@@ -265,7 +264,6 @@ def api_get_dataframe(startdatetime, df):
|
|||||||
|
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
|
|
||||||
def strokedataform_v2(request, id=0):
|
def strokedataform_v2(request, id=0):
|
||||||
|
|
||||||
id = encoder.decode_hex(id)
|
id = encoder.decode_hex(id)
|
||||||
@@ -496,7 +494,6 @@ def strokedata_rowingdata(request):
|
|||||||
|
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@api_view(["POST"])
|
@api_view(["POST"])
|
||||||
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
|
|
||||||
@permission_classes([IsAuthenticated])
|
@permission_classes([IsAuthenticated])
|
||||||
def strokedata_rowingdata_apikey(request):
|
def strokedata_rowingdata_apikey(request):
|
||||||
"""
|
"""
|
||||||
@@ -547,7 +544,6 @@ def strokedata_rowingdata_apikey(request):
|
|||||||
|
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@api_view(["POST"])
|
@api_view(["POST"])
|
||||||
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
|
|
||||||
@permission_classes([IsAuthenticated])
|
@permission_classes([IsAuthenticated])
|
||||||
@parser_classes([FITParser])
|
@parser_classes([FITParser])
|
||||||
def strokedata_fit(request):
|
def strokedata_fit(request):
|
||||||
@@ -647,7 +643,6 @@ def strokedata_fit(request):
|
|||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
#@login_required()
|
#@login_required()
|
||||||
@api_view(["POST"])
|
@api_view(["POST"])
|
||||||
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
|
|
||||||
@permission_classes([IsAuthenticated])
|
@permission_classes([IsAuthenticated])
|
||||||
@parser_classes([XMLParser])
|
@parser_classes([XMLParser])
|
||||||
def strokedata_tcx(request):
|
def strokedata_tcx(request):
|
||||||
@@ -768,7 +763,6 @@ def strokedata_tcx(request):
|
|||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
@api_view(["POST"])
|
@api_view(["POST"])
|
||||||
#@login_required()
|
#@login_required()
|
||||||
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
|
|
||||||
@permission_classes([IsAuthenticated])
|
@permission_classes([IsAuthenticated])
|
||||||
def strokedatajson_v3(request):
|
def strokedatajson_v3(request):
|
||||||
"""
|
"""
|
||||||
@@ -913,7 +907,6 @@ def strokedatajson_v3(request):
|
|||||||
# Return the GET stroke data according to the API definition
|
# Return the GET stroke data according to the API definition
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
#@login_required()
|
#@login_required()
|
||||||
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
|
|
||||||
@api_view(["GET", "POST"])
|
@api_view(["GET", "POST"])
|
||||||
@permission_classes([IsAuthenticated])
|
@permission_classes([IsAuthenticated])
|
||||||
def strokedatajson_v2(request, id):
|
def strokedatajson_v2(request, id):
|
||||||
@@ -1073,7 +1066,6 @@ def strokedatajson_v2(request, id):
|
|||||||
|
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
#@login_required()
|
#@login_required()
|
||||||
@permission_required('rower.is_not_freecoach', fn=get_user_by_userid, raise_exception=True)
|
|
||||||
@api_view(['GET', 'POST'])
|
@api_view(['GET', 'POST'])
|
||||||
@permission_classes([IsAuthenticated])
|
@permission_classes([IsAuthenticated])
|
||||||
def strokedatajson(request, id=0):
|
def strokedatajson(request, id=0):
|
||||||
|
|||||||
@@ -980,7 +980,7 @@ def rower_register_view(request):
|
|||||||
# User registration
|
# User registration
|
||||||
|
|
||||||
|
|
||||||
def freecoach_register_view(request): # pragma: no cover
|
def coach_register_view(request): # pragma: no cover
|
||||||
|
|
||||||
nextpage = request.GET.get('next', '/rowers/me/teams/')
|
nextpage = request.GET.get('next', '/rowers/me/teams/')
|
||||||
if nextpage == '': # pragma: no cover
|
if nextpage == '': # pragma: no cover
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ def plannedsession_multiclone_view(
|
|||||||
add_rower_session(rower, ps)
|
add_rower_session(rower, ps)
|
||||||
for team in teams:
|
for team in teams:
|
||||||
add_team_session(team, ps)
|
add_team_session(team, ps)
|
||||||
for rower in team.rower.all().exclude(rowerplan='freecoach'):
|
for rower in team.rower.all():
|
||||||
add_rower_session(rower, ps)
|
add_rower_session(rower, ps)
|
||||||
|
|
||||||
startdatestring = shiftstartdate.strftime('%Y-%m-%d')
|
startdatestring = shiftstartdate.strftime('%Y-%m-%d')
|
||||||
@@ -974,7 +974,7 @@ def plannedsession_teamcreate_view(request,
|
|||||||
for team in teams:
|
for team in teams:
|
||||||
add_team_session(team, ps)
|
add_team_session(team, ps)
|
||||||
rs = Rower.objects.filter(
|
rs = Rower.objects.filter(
|
||||||
team__in=[team]).exclude(rowerplan='freecoach')
|
team__in=[team])
|
||||||
for r in rs:
|
for r in rs:
|
||||||
add_rower_session(r, ps)
|
add_rower_session(r, ps)
|
||||||
|
|
||||||
@@ -1297,17 +1297,14 @@ def plannedsessions_coach_view(request,
|
|||||||
rteams = therower.team.filter(viewing='allmembers')
|
rteams = therower.team.filter(viewing='allmembers')
|
||||||
sps = get_sessions(therower, startdate=startdate, enddate=enddate)
|
sps = get_sessions(therower, startdate=startdate, enddate=enddate)
|
||||||
|
|
||||||
if therower.rowerplan != 'freecoach':
|
|
||||||
rowers = [therower]
|
rowers = [therower]
|
||||||
else: # pragma: no cover
|
|
||||||
rowers = []
|
|
||||||
|
|
||||||
for ps in sps:
|
for ps in sps:
|
||||||
if is_coach(request.user) or is_coachtrial(request.user):
|
if is_coach(request.user) or is_coachtrial(request.user):
|
||||||
rowers += ps.rower.all().exclude(rowerplan='freecoach')
|
rowers += ps.rower.all()
|
||||||
else: # pragma: no cover
|
else: # pragma: no cover
|
||||||
rowers += ps.rower.filter(
|
rowers += ps.rower.filter(
|
||||||
team__in=rteams).exclude(rowerplan='freecoach')
|
team__in=rteams)
|
||||||
|
|
||||||
rowers = list(set(rowers))
|
rowers = list(set(rowers))
|
||||||
|
|
||||||
@@ -1861,7 +1858,7 @@ def plannedsession_clone_view(request, id=0, userid=0):
|
|||||||
add_rower_session(r, ps)
|
add_rower_session(r, ps)
|
||||||
for team in teams:
|
for team in teams:
|
||||||
add_team_session(team, ps)
|
add_team_session(team, ps)
|
||||||
for rower in team.rower.all().exclude(rowerplan='freecoach'):
|
for rower in team.rower.all():
|
||||||
add_rower_session(rower, ps)
|
add_rower_session(rower, ps)
|
||||||
|
|
||||||
url = reverse(plannedsession_edit_view,
|
url = reverse(plannedsession_edit_view,
|
||||||
|
|||||||
@@ -240,16 +240,6 @@ def rower_teams_view(request): # pragma: no cover
|
|||||||
user__in=invitedathletes).exclude(
|
user__in=invitedathletes).exclude(
|
||||||
user=request.user
|
user=request.user
|
||||||
).exclude(coachinggroups__in=[request.user.rower.mycoachgroup])
|
).exclude(coachinggroups__in=[request.user.rower.mycoachgroup])
|
||||||
elif request.user.rower.rowerplan == 'freecoach': # pragma: no cover
|
|
||||||
potentialathletes = Rower.objects.filter(
|
|
||||||
team__in=myteams).exclude(
|
|
||||||
user__in=invitedathletes).exclude(
|
|
||||||
user=request.user
|
|
||||||
).exclude(
|
|
||||||
coachinggroups__in=[request.user.rower.mycoachgroup]
|
|
||||||
).exclude(
|
|
||||||
rowerplan__in=['basic', 'freecoach']
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
potentialathletes = []
|
potentialathletes = []
|
||||||
|
|
||||||
|
|||||||
@@ -2101,7 +2101,7 @@ def workouts_bulk_actions(request):
|
|||||||
teams = Team.objects.filter(manager=request.user)
|
teams = Team.objects.filter(manager=request.user)
|
||||||
assignchoices.fields["rowers"].queryset = Rower.objects.filter(
|
assignchoices.fields["rowers"].queryset = Rower.objects.filter(
|
||||||
team__in=teams
|
team__in=teams
|
||||||
).distinct().order_by("user__last_name", "user__first_name").exclude(rowerplan='freecoach')
|
).distinct().order_by("user__last_name", "user__first_name")
|
||||||
assignchoices.fields["rowers"].initial = []
|
assignchoices.fields["rowers"].initial = []
|
||||||
form = WorkoutMultipleCompareForm()
|
form = WorkoutMultipleCompareForm()
|
||||||
form.fields["workouts"].queryset = Workout.objects.filter(id__in=[w.id for w in workouts])
|
form.fields["workouts"].queryset = Workout.objects.filter(id__in=[w.id for w in workouts])
|
||||||
@@ -5191,9 +5191,6 @@ def workout_upload_view(request,
|
|||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
if r.imports_are_private:
|
if r.imports_are_private:
|
||||||
uploadoptions['makeprivate'] = True
|
uploadoptions['makeprivate'] = True
|
||||||
if r.rowerplan == 'freecoach': # pragma: no cover
|
|
||||||
url = reverse('team_workout_upload_view')
|
|
||||||
return HttpResponseRedirect(url)
|
|
||||||
|
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
@@ -5622,7 +5619,7 @@ def workout_upload_view(request,
|
|||||||
|
|
||||||
|
|
||||||
# This is the main view for processing uploaded files
|
# This is the main view for processing uploaded files
|
||||||
@user_passes_test(iscoachmember, login_url="/rowers/paidplans", redirect_field_name=None,
|
@user_passes_test(ispromember, login_url="/rowers/paidplans", redirect_field_name=None,
|
||||||
message="This functionality requires a Coach plan or higher")
|
message="This functionality requires a Coach plan or higher")
|
||||||
def team_workout_upload_view(request, userid=0, message="",
|
def team_workout_upload_view(request, userid=0, message="",
|
||||||
successmessage="",
|
successmessage="",
|
||||||
@@ -5659,11 +5656,7 @@ def team_workout_upload_view(request, userid=0, message="",
|
|||||||
rowerform.fields.pop('email')
|
rowerform.fields.pop('email')
|
||||||
rowers = Rower.objects.filter(
|
rowers = Rower.objects.filter(
|
||||||
coachinggroups__in=[r.mycoachgroup]
|
coachinggroups__in=[r.mycoachgroup]
|
||||||
).exclude(
|
|
||||||
rowerplan='freecoach'
|
|
||||||
).distinct()
|
).distinct()
|
||||||
if r.rowerplan == 'freecoach': # pragma: no cover
|
|
||||||
rowers = rowers.exclude(rowerplan='basic')
|
|
||||||
|
|
||||||
rowerform.fields['user'].queryset = User.objects.filter(
|
rowerform.fields['user'].queryset = User.objects.filter(
|
||||||
rower__in=rowers).distinct()
|
rower__in=rowers).distinct()
|
||||||
@@ -5803,11 +5796,7 @@ def team_workout_upload_view(request, userid=0, message="",
|
|||||||
|
|
||||||
rowers = Rower.objects.filter(
|
rowers = Rower.objects.filter(
|
||||||
coachinggroups__in=[r.mycoachgroup]
|
coachinggroups__in=[r.mycoachgroup]
|
||||||
).exclude(
|
|
||||||
rowerplan='freecoach'
|
|
||||||
).distinct()
|
).distinct()
|
||||||
if r.rowerplan == 'freecoach': # pragma: no cover
|
|
||||||
rowers = rowers.exclude(rowerplan='basic')
|
|
||||||
|
|
||||||
rowerform.fields['user'].queryset = User.objects.filter(
|
rowerform.fields['user'].queryset = User.objects.filter(
|
||||||
rower__in=rowers).distinct()
|
rower__in=rowers).distinct()
|
||||||
|
|||||||
Reference in New Issue
Block a user