1234567891011121314151617181920212223242526272829303132333435363738 |
- from django import forms
- from django.utils.translation import gettext_lazy as _
- from .models import Role
- from .providers import providers
- class RoleForm(forms.ModelForm):
- name = forms.CharField(label=_("Role name"))
- class Meta:
- model = Role
- fields = ["name"]
- def get_permissions_forms(role, data=None):
- """utility function for building forms in admin"""
- role_permissions = role.permissions
- perms_forms = []
- for extension, module in providers.list():
- try:
- module.change_permissions_form
- except AttributeError:
- message = "'%s' object has no attribute '%s'"
- raise AttributeError(message % (extension, "change_permissions_form"))
- FormType = module.change_permissions_form(role)
- if FormType:
- if data:
- perms_forms.append(FormType(data, prefix=extension))
- else:
- perms_forms.append(
- FormType(initial=role_permissions.get(extension), prefix=extension)
- )
- return perms_forms
|