Private
Public Access
1
0

adding coach trial functionality

This commit is contained in:
Sander Roosendaal
2022-08-24 13:32:53 +02:00
parent 85612b2a47
commit 936a524804
10 changed files with 140 additions and 15 deletions

View File

@@ -84,6 +84,13 @@ def user_is_not_basic(user):
if user.rower.protrialexpires >= timezone.now().date():
return True # pragma: no cover
if user.rower.plantrialexpires >= timezone.now().date():
return True # pragma: no cover
if user.rower.coachtrialexpires >= timezone.now().date():
return True # pragma: no cover
return False
@rules.predicate
@@ -116,6 +123,13 @@ def can_start_plantrial(user):
return user.rower.plantrialexpires == datetime.date(1970, 1, 1)
@rules.predicate
def can_start_coachtrial(user):
if user.is_anonymous: # pragma: no cover
return False
return user.rower.coachtrialexpires == datetime.date(1970, 1, 1)
@rules.predicate
def is_staff(user): # pragma: no cover
@@ -171,11 +185,23 @@ def is_protrial(user):
return False # pragma: no cover
@rules.predicate
def is_coachtrial(user):
try:
r = user.rower
except AttributeError:
return False
if r.rowerplan == 'basic':
return r.coachtrialexpires >= timezone.now().date()
return False # pragma: no cover
ispromember = is_promember | is_protrial
can_have_teams = ispromember | is_coach
can_have_teams = ispromember | is_coach | is_coachtrial
@rules.predicate
@@ -188,6 +214,9 @@ def can_add_team(user):
if otherteams.count() == 0:
return True
if is_coachtrial(user):
return True
return False
@@ -222,10 +251,12 @@ def is_plantrial(user):
isplanmember = is_planmember | is_plantrial
iscoachmember = is_coach | is_coachtrial
@rules.predicate
def can_add_session(user):
return isplanmember(user) or is_coach(user)
return isplanmember(user) or is_coach(user) or is_coachtrial(user)
# User / Coach relationships (Rower object)
@@ -237,7 +268,7 @@ def can_plan(user):
if user.rower.rowerplan in ['plan', 'coach']:
return True
if user.rower.rowerplan in ['basic', 'pro']:
return user.rower.plantrialexpires >= timezone.now().date()
return user.rower.plantrialexpires >= timezone.now().date() or user.rower.coachtrialexpires >= timezone.now().date()
if user.rower.rowerplan == 'freecoach': # pragma: no cover
if user.rower.mycoachgroup is not None:
return len(user.rower.mycoachgroup) >= 4
@@ -620,7 +651,7 @@ def can_view_session(user, session):
return True
# coach users can view sessions created by their team members
# below untested
if is_coach(user): # pragma: no cover
if is_coach(user) or is_coachtrial(user): # pragma: no cover
teams = user.rower.get_managed_teams()
for t in teams:
teamusers = [member.u for member in t.rower.all()]
@@ -711,7 +742,7 @@ def is_team_member(user, team): # pragma: no cover
def can_view_team(user, team):
# user based - below untested
if user.rower.rowerplan == 'basic' and team.manager.rower.rowerplan != 'coach': # pragma: no cover
return is_plantrial(user) or is_protrial(user)
return is_plantrial(user) or is_protrial(user) or is_coachtrial(user)
# team is public
if team.private == 'open':
return True