Add method to modify a group's role membership from the group's

view.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2017-09-17 02:05:49 -04:00
parent 2dff4c14f9
commit 72fc940cd7
6 changed files with 61 additions and 8 deletions

View File

@@ -12,6 +12,7 @@ from common.views import (
AssignRemoveView, SingleObjectCreateView, SingleObjectDeleteView,
SingleObjectEditView, SingleObjectListView
)
from user_management.permissions import permission_group_edit
from .classes import Permission, PermissionNamespace
from .models import Role, StoredPermission
@@ -22,6 +23,40 @@ from .permissions import (
)
class GroupRoleMembersView(AssignRemoveView):
grouped = False
left_list_title = _('Available roles')
right_list_title = _('Group roles')
view_permission = permission_group_edit
def add(self, item):
role = get_object_or_404(Role, pk=item)
self.get_object().roles.add(role)
def get_extra_context(self):
return {
'object': self.get_object(),
'title': _('Roles of group: %s') % self.get_object()
}
def get_object(self):
return get_object_or_404(Group, pk=self.kwargs['pk'])
def left_list(self):
return [
(force_text(role.pk), role.label) for role in set(Role.objects.all()) - set(self.get_object().roles.all())
]
def right_list(self):
return [
(force_text(role.pk), role.label) for role in self.get_object().roles.all()
]
def remove(self, item):
role = get_object_or_404(Role, pk=item)
self.get_object().roles.remove(role)
class RoleCreateView(SingleObjectCreateView):
fields = ('label',)
model = Role