47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import logging
|
|
from django.apps import apps
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.models import Group
|
|
|
|
app_config = apps.get_containing_app_config(__package__)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def get_system_user():
|
|
return get_user_model().objects.get_or_create(username='-system-')[0]
|
|
|
|
|
|
def get_ghost_user():
|
|
return get_user_model().objects.get_or_create(username='-deleted-')[0]
|
|
|
|
|
|
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
|