Improved group/role thing. Improved email sending (prepare for
OneClickAction).
This commit is contained in:
@@ -14,6 +14,7 @@ from django.views import generic
|
||||
|
||||
from .. import forms
|
||||
from .. import models
|
||||
from ..utils import has_role
|
||||
|
||||
app_config = apps.get_containing_app_config(__package__)
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -26,14 +27,13 @@ class EventListView(generic.ListView):
|
||||
user = self.request.user
|
||||
if user.is_superuser:
|
||||
qs = self.model.objects.all()
|
||||
elif user.groups.filter(name=app_config.settings.manage_all_group).count():
|
||||
elif has_role(user, 'manage_all'):
|
||||
qs = self.model.objects.all()
|
||||
else:
|
||||
user_sports_list = list()
|
||||
for k in ('W', 'S', 'M', 'K', 'B'):
|
||||
group_name_var = 'manage_{}_group'.format(k.lower())
|
||||
group_name = getattr(app_config.settings, group_name_var, None)
|
||||
if group_name and user.groups.filter(name=group_name).count():
|
||||
role = 'manage_{}'.format(k.lower())
|
||||
if has_role(user, role):
|
||||
user_sports_list.append(k)
|
||||
qs = self.model.objects.filter(Q(owner=user) | Q(sport__in=user_sports_list))
|
||||
|
||||
@@ -56,18 +56,14 @@ class EventPermissionMixin(object):
|
||||
if permission == 'view':
|
||||
if obj.owner == user:
|
||||
return True
|
||||
if user.groups.filter(name=app_config.settings.manage_all_group).count():
|
||||
if has_role(user, 'manage_all'):
|
||||
return True
|
||||
group_name_var = 'manage_{}_group'.format(obj.sport.lower())
|
||||
group_name = getattr(app_config.settings, group_name_var, None)
|
||||
if group_name and user.groups.filter(name=group_name).count():
|
||||
if has_role(user, 'manage_{}'.format(obj.sport.lower())):
|
||||
return True
|
||||
elif permission in ('update', 'accept'):
|
||||
if user.groups.filter(name=app_config.settings.manage_all_group).count():
|
||||
if has_role(user, 'manage_all'):
|
||||
return True
|
||||
group_name_var = 'manage_{}_group'.format(obj.sport)
|
||||
group_name = getattr(app_config.settings, group_name_var, None)
|
||||
if group_name and user.groups.filter(name=group_name).count():
|
||||
if has_role(user, 'manage_{}'.format(obj.sport.lower())):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user