Files
django-dav-events/dav_events/utils.py

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