forms.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from django import forms
  2. from django.utils.translation import ugettext_lazy as _
  3. from .models import Role
  4. from .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. perms_forms = []
  16. for extension, module in providers.list():
  17. try:
  18. module.change_permissions_form
  19. except AttributeError:
  20. message = "'%s' object has no attribute '%s'"
  21. raise AttributeError(
  22. message % (extension, 'change_permissions_form'))
  23. FormType = module.change_permissions_form(role)
  24. if FormType:
  25. if data:
  26. perms_forms.append(FormType(data, prefix=extension))
  27. else:
  28. perms_forms.append(FormType(
  29. initial=role_permissions.get(extension),
  30. prefix=extension
  31. ))
  32. return perms_forms