providers.py 905 B

1234567891011121314151617181920212223242526272829303132333435
  1. from importlib import import_module
  2. from django.conf import settings
  3. __ALL__ = ['providers']
  4. # Manager for permission providers
  5. class PermissionProviders(object):
  6. def __init__(self):
  7. self._initialized = False
  8. self._providers = []
  9. self._providers_dict = {}
  10. def _assert_providers_imported(self):
  11. if not self._initialized:
  12. self._import_providers()
  13. self._initialized = True
  14. def _import_providers(self):
  15. for namespace in settings.MISAGO_ACL_EXTENSIONS:
  16. self._providers.append((namespace, import_module(namespace)))
  17. self._providers_dict[namespace] = import_module(namespace)
  18. def list(self):
  19. self._assert_providers_imported()
  20. return self._providers
  21. def dict(self):
  22. self._assert_providers_imported()
  23. return self._providers_dict
  24. providers = PermissionProviders()