38 lines
974 B
Python
38 lines
974 B
Python
import logging
|
|
from django.apps import apps
|
|
from django.contrib.auth.models import Group
|
|
|
|
app_config = apps.get_containing_app_config(__package__)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def get_group_members(group_name, ignore_missing=False):
|
|
users = []
|
|
try:
|
|
group = Group.objects.get(name=group_name)
|
|
users.extend(group.user_set.all())
|
|
except Group.DoesNotExist:
|
|
if not ignore_missing:
|
|
raise
|
|
return users
|
|
|
|
|
|
def get_group_name_by_role(role):
|
|
group_name_var = 'group_{}'.format(role)
|
|
return getattr(app_config.settings, group_name_var, None)
|
|
|
|
|
|
def get_users_by_role(role):
|
|
users = []
|
|
group_name = get_group_name_by_role(role)
|
|
if group_name:
|
|
users = get_group_members(group_name, ignore_missing=True)
|
|
return users
|
|
|
|
|
|
def has_role(user, role):
|
|
group_name = get_group_name_by_role(role)
|
|
if group_name and user.groups.filter(name=group_name).count():
|
|
return True
|
|
return False
|