12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- from importlib import import_module
- from django.conf import settings
- class PermissionProviders(object):
- def __init__(self):
- self._initialized = False
- self._providers = []
- self._providers_dict = {}
- def initialize_providers(self):
- if not self._initialized:
- self.import_providers()
- self._initialized = True
- def import_providers(self):
- for namespace in settings.MISAGO_PERMISSION_PROVIDERS:
- self._providers.append((namespace, import_module(namespace)))
- self._providers_dict[namespace] = import_module(namespace)
- def get_change_permissions_forms(self, role):
- self.initialize_providers()
- forms = []
- for provider, module in self._providers:
- try:
- module.change_permissions_form
- except AttributeError:
- message = "'%s' object has no attribute '%s'"
- raise AttributeError(
- message % (provider, 'change_permissions_form'))
- forms.append(module.change_permissions_form(role))
- return [f for f in forms if f]
- def build_acl_cache(self, roles):
- self.initialize_providers()
- def hydrate_acl_cache(self, acl):
- self.initialize_providers()
- def get_acl_by_token(self, token):
- pass
- def get_acl_by_roles(self, roles):
- pass
- providers = PermissionProviders()
|