Private
Public Access
1
0

first changes

This commit is contained in:
2024-12-30 12:44:24 +01:00
parent e059ce9340
commit 165b8e35e0
6 changed files with 61 additions and 91 deletions

View File

@@ -17,31 +17,31 @@ USER permissions
- These methods exist on rower
- rower.rowerplan
- rower.protrialexpires
- rower.plantrialexpires
- rower.protrialexpires
- rower.mycoachgroup
- rower.coachinggroups
- rower.team
- These Rules apply to Rowers
- Coach can have any number of groups
- Pro can have any number of groups
- test_permissions.PermissionFreeCoach.test_coach_groupmanager
- test_permissions.PermissionsBasicsTests.test_coach_groupmanager
- test_permissions.PermissionsViewTests.test_coach_groups_create
- Pro and Plan users can have one group and not more
- (REMOVE) Pro and Plan users can have one group and not more
- test_permissions.PermissionsFreeCoach.test_pro_groupmanager
- test_permissions.PermissionsViewTests.test_pro_groups_create
- Free Coach user cannot have workouts
- (REMOVE) Free Coach user cannot have workouts
- test_permissions.PermissionFreeCoach.test_add_workout_freecoach
- Free coach can create more than one group
- (REMOVE) Free coach can create more than one group
- test_permissions.PermissionsFreeCoach.test_plan_groupmanager
- Free Coach & Plan (Self Coach) can create planned sessions and team planned sessions
- (ADJUST) Free Coach & Plan (Self Coach) can create planned sessions and team planned sessions
- test_permissions.PermissionsFreeCoach.test_plan_create_session
- test_permissions.PermissionsFreeCoach.test_coach_create_session
- Pro cannot create planned sessions or team planned sessions
- (REMOVE) Pro cannot create planned sessions or team planned sessions
- test_permissions.PermissionsViewTests.test_pro_create_session
- Basic cannot join groups led by Free Coach
- (REMOVE) Basic cannot join groups led by Free Coach
- test_permissions.PermissionFreeCoach.test_add_basic_pro_or_plan
- Coach can edit athlete settings (if in coachinggroup)
- (ADJUST) Coach can edit athlete settings (if in coachinggroup)
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_prefs
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_prefs_not
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_settings
@@ -50,25 +50,25 @@ USER permissions
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_account_not
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_exportsettings
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_exportsettings_not
- Coach can upload a workout on behalf of athlete
- (ADJUST) Coach can upload a workout on behalf of athlete
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_upload
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_upload_not
- Pro and Plan cannot upload a workout on behalf of athlete
- (REMOVE) Pro and Plan cannot upload a workout on behalf of athlete
- test_permissions.PermissionsViewTests.test_plan_edit_athlete_upload
- Coach can run analytics for athlete
- (ADJUST) Coach can run analytics for athlete
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_analysis
- test_permissions.PermissionsViewTests.test_coach_edit_athlete_analysis_not
- test_permissions.PermissionsViewTests.test_pro_edit_athlete_analysis
- Pro and Plan user cannot run analysis for members of their groups
- (ADJUST) Pro and Plan user cannot run analysis for members of their groups
- test_permissions.PermissionsViewTests.test_plan_edit_athlete_analysis
- Pro and Plan user cannot edit athlete sessings
- (ADJUST) Pro and Plan user cannot edit athlete sessings
- test_permissions.PermissionsViewTests.test_plan_edit_athlete_settings
- test_permissions.PermissionsViewTests.test_pro_edit_athlete_settings
- Self-Coach and Pro cannot create more than one group
- (REMOVE) Self-Coach and Pro cannot create more than one group
- test_permissions.PermissionsFreeCoach.test_plan_groupmanager
- Pro users and higher can join group led by other Pro or higher user
- test_permissions.PermissionsFreeCoach.test_add_proplan_pro_or_plan
- Pro or basic cannot create planned sessions or team planned sessions
- (ADJSUT) Pro or basic cannot create planned sessions or team planned sessions
- test_permissions.PermissionsFreeCoach.test_pro_create_plannedsession
"""
@@ -84,7 +84,7 @@ 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():
if user.rower.protrialexpires >= timezone.now().date():
return True # pragma: no cover
if user.rower.coachtrialexpires >= timezone.now().date():
@@ -97,9 +97,9 @@ def user_is_not_basic(user):
def user_is_coachee(user):
coaches = user.rower.get_coaches()
for coach in coaches:
if coach.rowerplan == 'coach':
if coach.rowerplan == 'pro':
return True
if coach.coachtrialexpires >= timezone.now().date():
if coach.protrialexpires >= timezone.now().date():
return True
return False
@@ -123,14 +123,14 @@ def can_start_plantrial(user):
if user.is_anonymous: # pragma: no cover
return False
return user.rower.plantrialexpires == datetime.date(1970, 1, 1)
return user.rower.protrialexpires == 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)
return user.rower.protrialexpires == datetime.date(1970, 1, 1)
@rules.predicate
@@ -144,20 +144,16 @@ def is_coach(user):
return False
if user.is_anonymous:
return False
if user.rower.coachtrialexpires >= timezone.now().date():
if user.rower.protrialexpires >= timezone.now().date():
return True
return user.rower.rowerplan in ['coach', 'freecoach']
return user.rower.rowerplan == 'pro'
@rules.predicate
def is_not_freecoach(user):
return user.rower.rowerplan != 'freecoach'
def is_paid_coach(user):
if user.rower.coachtrialexpires >= timezone.now().date():
if user.rower.protrialexpires >= timezone.now().date():
return True
return user.rower.rowerplan == 'coach'
return user.rower.rowerplan == 'pro'
@rules.predicate
@@ -167,10 +163,10 @@ def is_planmember(user):
except AttributeError: # pragma: no cover
return False
if user.rower.coachtrialexpires >= timezone.now().date():
if user.rower.protrialexpires >= timezone.now().date():
return True
return r.rowerplan in ['coach', 'plan'] # freecoach?
return r.rowerplan == 'pro'
@rules.predicate
@@ -180,7 +176,7 @@ def is_promember(user):
except AttributeError:
return False
return r.rowerplan in ['pro', 'coach', 'plan'] # freecoach?
return r.rowerplan == 'pro'
@rules.predicate
@@ -192,9 +188,6 @@ def is_protrial(user):
if r.rowerplan == 'basic':
return r.protrialexpires >= timezone.now().date()
if r.rowerplan == 'freecoach':
if r.mycoachgroup is not None:
return len(r.mycoachgroup) >= 4
return False # pragma: no cover
@@ -206,7 +199,7 @@ def is_coachtrial(user):
return False
if r.rowerplan == 'basic':
return r.coachtrialexpires >= timezone.now().date()
return r.protrialexpires >= timezone.now().date()
return False # pragma: no cover
@@ -235,7 +228,7 @@ def can_add_team(user):
@rules.predicate
def can_add_plan(user):
return isplanmember(user) or is_coach(user)
return ispromember(user)
@rules.predicate
@@ -243,7 +236,7 @@ def can_add_workout(user):
if user.is_anonymous: # pragma: no cover
return False
return user.rower.rowerplan != 'freecoach'
return True
@rules.predicate
@@ -253,11 +246,8 @@ def is_plantrial(user):
except AttributeError: # pragma: no cover
return False
if r.rowerplan in ['basic', 'pro']:
return r.plantrialexpires >= timezone.now().date()
if r.rowerplan == 'freecoach':
if r.mycoachgroup is not None:
return len(r.mycoachgroup) >= 4
if r.rowerplan == 'basic':
return r.protrialexpires >= timezone.now().date()
return False # pragma: no cover
@@ -278,13 +268,10 @@ def can_add_session(user):
def can_plan(user):
if user.is_anonymous: # pragma: no cover
return False
if user.rower.rowerplan in ['plan', 'coach']:
if user.rower.rowerplan == 'pro':
return True
if user.rower.rowerplan in ['basic', 'pro']:
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
if user.rower.rowerplan == 'basic':
return user.rower.protrialexpires >= timezone.now().date() or user.rower.protrialexpires >= timezone.now().date()
# checks if rower is coach of user (or is user himself)
@@ -408,7 +395,7 @@ rules.add_perm('rower.add_plan', can_plan_user) # replaces checkaccessplanuser
rules.add_perm('rower.is_coach', is_coach_user) # replaces checkaccessuser
rules.add_perm('rower.is_pro', ispromember)
rules.add_perm('rower.is_staff', is_staff)
rules.add_perm('rower.is_not_freecoach', is_not_freecoach)
# WORKOUT permissions
@@ -781,9 +768,9 @@ def is_team_member(user, team): # pragma: no cover
@rules.predicate
def can_view_team(user, team):
# user based - below untested
if team.manager.rower.coachtrialexpires >= timezone.now().date():
if team.manager.rower.protrialexpires >= timezone.now().date():
return True
if user.rower.rowerplan == 'basic' and team.manager.rower.rowerplan != 'coach': # pragma: no cover
if user.rower.rowerplan == 'basic' and team.manager.rower.rowerplan != 'pro': # pragma: no cover
return is_plantrial(user) or is_protrial(user) or is_coachtrial(user)
# team is public
if team.private == 'open':