Improved group/role thing. Improved email sending (prepare for

OneClickAction).
This commit is contained in:
2018-01-26 16:58:47 +01:00
parent 5cf05666ab
commit 6f003aaf6a
7 changed files with 97 additions and 75 deletions

View File

@@ -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