builder.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. self.team = False
  20. def build_acl(request, roles):
  21. acl = ACL(request.monitor['acl_version'])
  22. perms = []
  23. for role in roles:
  24. perms.append(role.get_permissions())
  25. for provider in settings.PERMISSION_PROVIDERS:
  26. app_module = import_module(provider)
  27. try:
  28. app_module.build(acl, perms)
  29. except AttributeError:
  30. pass
  31. return acl