rules first attempt
This commit is contained in:
@@ -39,6 +39,9 @@ import pandas as pd
|
||||
from dateutil import parser
|
||||
import datetime
|
||||
|
||||
import rules
|
||||
from rules.contrib.models import RulesModel
|
||||
|
||||
from rowers.rows import validate_file_extension
|
||||
from collections import OrderedDict
|
||||
from timezonefinder import TimezoneFinder
|
||||
@@ -53,6 +56,37 @@ from rowsandall_app.settings import (
|
||||
TWEET_CONSUMER_SECRET,
|
||||
)
|
||||
|
||||
# PERMISSIONS
|
||||
|
||||
@rules.predicate
|
||||
def is_team_manager(user,team):
|
||||
print('aap')
|
||||
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)
|
||||
|
||||
# END PERMISSIONS
|
||||
|
||||
tweetapi = twitter.Api(consumer_key=TWEET_CONSUMER_KEY,
|
||||
consumer_secret=TWEET_CONSUMER_SECRET,
|
||||
access_token_key=TWEET_ACCESS_TOKEN_KEY,
|
||||
@@ -331,7 +365,7 @@ def is_not_basic(user):
|
||||
|
||||
# For future Team functionality
|
||||
@python_2_unicode_compatible
|
||||
class Team(models.Model):
|
||||
class Team(RulesModel):
|
||||
choices = (
|
||||
('private','private'),
|
||||
('open','open'),
|
||||
@@ -350,6 +384,13 @@ class Team(models.Model):
|
||||
|
||||
viewing = models.CharField(max_length=30,choices=viewchoices,default='allmembers',verbose_name='Sharing Behavior')
|
||||
|
||||
class Meta:
|
||||
rules_permissions = {
|
||||
"add": is_coach,
|
||||
"change": is_team_manager,
|
||||
"delete": is_team_manager,
|
||||
"view": can_view_team,
|
||||
}
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
Reference in New Issue
Block a user