authentic/src/django_rbac/utils.py

83 lines
2.5 KiB
Python

import uuid
from django.apps import apps
from django.conf import settings
from . import constants
DEFAULT_MODELS = {
constants.RBAC_OU_MODEL_SETTING: 'django_rbac.OrganizationalUnit',
constants.RBAC_ROLE_PARENTING_MODEL_SETTING: 'django_rbac.RoleParenting',
constants.RBAC_ROLE_MODEL_SETTING: 'django_rbac.Role',
constants.RBAC_PERMISSION_MODEL_SETTING: 'django_rbac.Permission',
}
def get_hex_uuid():
return uuid.uuid4().hex
def get_swapped_model_name(setting):
"""Return a model qualified name given a setting name containing the
qualified name of the model, useful to retrieve swappable models
name.
"""
if not hasattr(settings, setting):
setattr(settings, setting, DEFAULT_MODELS[setting])
return getattr(settings, setting)
def get_swapped_model(setting):
"""Return a model given a setting name containing the qualified name
of the model, useful to retrieve swappable models.
"""
app, model_name = get_swapped_model_name(setting).rsplit('.', 1)
return apps.get_model(app, model_name)
def get_role_model_name():
'''Returns the currently configured role model'''
return get_swapped_model_name(constants.RBAC_ROLE_MODEL_SETTING)
def get_ou_model_name():
'''Returns the currently configured organizational unit model'''
return get_swapped_model_name(constants.RBAC_OU_MODEL_SETTING)
def get_role_parenting_model_name():
'''Returns the currently configured role parenting model'''
return get_swapped_model_name(constants.RBAC_ROLE_PARENTING_MODEL_SETTING)
def get_permission_model_name():
'''Returns the currently configured permission model'''
return get_swapped_model_name(constants.RBAC_PERMISSION_MODEL_SETTING)
def get_role_model():
'''Returns the currently configured role model'''
return get_swapped_model(constants.RBAC_ROLE_MODEL_SETTING)
def get_ou_model():
'''Returns the currently configured organizational unit model'''
return get_swapped_model(constants.RBAC_OU_MODEL_SETTING)
def get_role_parenting_model():
'''Returns the currently configured role parenting model'''
return get_swapped_model(constants.RBAC_ROLE_PARENTING_MODEL_SETTING)
def get_permission_model():
'''Returns the currently configured permission model'''
return get_swapped_model(constants.RBAC_PERMISSION_MODEL_SETTING)
def get_operation(operation_tpl):
from . import models
operation, created = models.Operation.objects.get_or_create(slug=operation_tpl.slug)
return operation