forms.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from django.utils.translation import ugettext_lazy as _
  2. from misago.core import forms
  3. from misago.acl.models import Role
  4. from misago.acl.providers import providers
  5. class RoleForm(forms.ModelForm):
  6. name = forms.CharField(label=_("Role name"))
  7. class Meta:
  8. model = Role
  9. fields = ['name']
  10. def get_permissions_forms(role, data=None):
  11. """
  12. Utility function for building forms in admin
  13. """
  14. role_permissions = role.permissions
  15. forms = []
  16. for provider, module in providers.list():
  17. try:
  18. default_data = module.DEFAULT_PERMISSIONS
  19. except AttributeError:
  20. message = "'%s' object has no attribute '%s'"
  21. raise AttributeError(
  22. message % (provider, 'DEFAULT_PERMISSIONS'))
  23. try:
  24. module.change_permissions_form
  25. except AttributeError:
  26. message = "'%s' object has no attribute '%s'"
  27. raise AttributeError(
  28. message % (provider, 'change_permissions_form'))
  29. FormType = module.change_permissions_form(role)
  30. if FormType:
  31. if data:
  32. forms.append(FormType(data, prefix=provider))
  33. else:
  34. initial_data = role_permissions.get(provider, default_data)
  35. forms.append(FormType(initial=initial_data,
  36. prefix=provider))
  37. return forms