builder.py 1005 B

12345678910111213141516171819202122232425262728293031323334353637
  1. from django.conf import settings
  2. from django.utils.importlib import import_module
  3. from misago.forms import Form
  4. def build_form(request, role):
  5. form_type = type('ACLForm', (Form,), dict(layout=[]))
  6. for provider in settings.PERMISSION_PROVIDERS:
  7. app_module = import_module(provider)
  8. try:
  9. app_module.make_form(request, role, form_type)
  10. except AttributeError:
  11. pass
  12. return form_type
  13. class BaseACL(object):
  14. def __init__(self):
  15. self.acl = {}
  16. class ACL(object):
  17. def __init__(self, version):
  18. self.version = version
  19. def build_acl(request, roles):
  20. acl = ACL(request.monitor['acl_version'])
  21. perms = []
  22. for role in roles:
  23. perms.append(role.get_permissions())
  24. for provider in settings.PERMISSION_PROVIDERS:
  25. app_module = import_module(provider)
  26. try:
  27. app_module.build(acl, perms)
  28. except AttributeError:
  29. pass
  30. return acl