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