34 lines
890 B
Python
34 lines
890 B
Python
import rules
|
|
|
|
# PERMISSIONS
|
|
|
|
@rules.predicate
|
|
def is_team_manager(user,team):
|
|
return team.manager == user
|
|
|
|
@rules.predicate
|
|
def is_team_member(user,team):
|
|
members = team.rower.all()
|
|
return user in [member.user for member in members]
|
|
|
|
@rules.predicate
|
|
def is_coach(user):
|
|
return user.rower.rowerplan in ['coach','freecoach']
|
|
|
|
@rules.predicate
|
|
def can_view_team(user,team):
|
|
# user based
|
|
if user.rower.rowerplan == 'basic' and team.manager.rower.rowerplan != 'coach':
|
|
return False
|
|
# team is public
|
|
if team.private == 'open':
|
|
return True
|
|
# team is private
|
|
return is_team_member(user,team) | is_team_manager(user,team)
|
|
|
|
# For Team functionality
|
|
rules.add_perm('teams.view_team',can_view_team)
|
|
rules.add_perm('teams.add_team',is_coach)
|
|
rules.add_perm('teams.change_team',is_team_manager)
|
|
rules.add_perm('teams.delete_team',is_team_manager)
|