adding coach trial functionality
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user