rules now separately in rower_rules
This commit is contained in:
@@ -39,8 +39,9 @@ import pandas as pd
|
|||||||
from dateutil import parser
|
from dateutil import parser
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
import rules
|
#from rules.contrib.models import RulesModel
|
||||||
from rules.contrib.models import RulesModel
|
|
||||||
|
|
||||||
|
|
||||||
from rowers.rows import validate_file_extension
|
from rowers.rows import validate_file_extension
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
@@ -56,39 +57,7 @@ from rowsandall_app.settings import (
|
|||||||
TWEET_CONSUMER_SECRET,
|
TWEET_CONSUMER_SECRET,
|
||||||
)
|
)
|
||||||
|
|
||||||
# PERMISSIONS
|
|
||||||
|
|
||||||
@rules.predicate
|
|
||||||
def is_team_manager(user,team):
|
|
||||||
return team.manager == user
|
|
||||||
|
|
||||||
@rules.predicate
|
|
||||||
def is_team_member(user,team):
|
|
||||||
members = Rower.objects.filter(team__in=[team])
|
|
||||||
return user in [member.user for member in members]
|
|
||||||
|
|
||||||
@rules.predicate
|
|
||||||
def is_coach(user):
|
|
||||||
r = Rower.objects.get(user=user)
|
|
||||||
return r.rowerplan in ['coach','freecoach']
|
|
||||||
|
|
||||||
@rules.predicate
|
|
||||||
def can_view_team(user,team):
|
|
||||||
# user based
|
|
||||||
r = Rower.objects.get(user=user)
|
|
||||||
if r.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)
|
|
||||||
|
|
||||||
# END PERMISSIONS
|
# END PERMISSIONS
|
||||||
|
|
||||||
@@ -368,11 +337,8 @@ def is_not_basic(user):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
class Team(RulesModel):
|
class Team(models.Model):
|
||||||
choices = (
|
choices = (
|
||||||
('private','private'),
|
('private','private'),
|
||||||
('open','open'),
|
('open','open'),
|
||||||
|
|||||||
33
rowers/rower_rules.py
Normal file
33
rowers/rower_rules.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
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)
|
||||||
@@ -23,9 +23,11 @@ queuehigh = django_rq.get_queue('low')
|
|||||||
|
|
||||||
from rowers.models import (
|
from rowers.models import (
|
||||||
Rower, Workout, Team, TeamInvite,User,TeamRequest, CoachRequest, CoachOffer,
|
Rower, Workout, Team, TeamInvite,User,TeamRequest, CoachRequest, CoachOffer,
|
||||||
CoachingGroup,is_team_manager,is_team_member,is_coach
|
CoachingGroup
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from rowers.rower_rules import is_team_manager,is_team_member,is_coach
|
||||||
|
|
||||||
from rowers.tasks import (
|
from rowers.tasks import (
|
||||||
handle_sendemail_invite,
|
handle_sendemail_invite,
|
||||||
handle_sendemail_request,
|
handle_sendemail_request,
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from rowers.views.statements import *
|
from rowers.views.statements import *
|
||||||
|
|
||||||
|
from rowers.rower_rules import *
|
||||||
|
|
||||||
def get_team_by_pk(request,team_id):
|
def get_team_by_pk(request,team_id):
|
||||||
return get_object_or_404(Team,pk=team_id)
|
return get_object_or_404(Team,pk=team_id)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user