Update group roles view to the new AddRemoveView
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -148,6 +148,7 @@
|
||||
default submit and cancel.
|
||||
* Update ChoiceForm to be full height.
|
||||
* Add AddRemoveView to replace AssignRemoveView
|
||||
* Update the group roles view to use the new AddRemoveView.
|
||||
|
||||
3.1.11 (2019-04-XX)
|
||||
===================
|
||||
|
||||
@@ -180,6 +180,7 @@ Other changes
|
||||
default submit and cancel.
|
||||
* Update ChoiceForm to be full height.
|
||||
* Add AddRemoveView to replace AssignRemoveView
|
||||
* Update the group roles view to use the new AddRemoveView.
|
||||
|
||||
Removals
|
||||
--------
|
||||
|
||||
@@ -18,6 +18,7 @@ from .links import (
|
||||
link_group_roles, link_role_create, link_role_delete, link_role_edit,
|
||||
link_role_groups, link_role_list, link_role_permissions
|
||||
)
|
||||
from .methods import method_group_roles_add, method_group_roles_remove
|
||||
from .permissions import (
|
||||
permission_role_delete, permission_role_edit, permission_role_view
|
||||
)
|
||||
@@ -38,6 +39,9 @@ class PermissionsApp(MayanAppConfig):
|
||||
Role = self.get_model('Role')
|
||||
Group = apps.get_model(app_label='auth', model_name='Group')
|
||||
|
||||
Group.add_to_class(name='roles_add', value=method_group_roles_add)
|
||||
Group.add_to_class(name='roles_remove', value=method_group_roles_remove)
|
||||
|
||||
ModelPermission.register(
|
||||
model=Role, permissions=(
|
||||
permission_acl_edit, permission_acl_view,
|
||||
|
||||
23
mayan/apps/permissions/methods.py
Normal file
23
mayan/apps/permissions/methods.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import transaction
|
||||
|
||||
from mayan.apps.user_management.events import event_group_edited
|
||||
|
||||
|
||||
def method_group_roles_add(self, queryset, _user):
|
||||
with transaction.atomic():
|
||||
event_group_edited.commit(
|
||||
actor=_user, target=self
|
||||
)
|
||||
for role in queryset:
|
||||
self.roles.add(role)
|
||||
|
||||
|
||||
def method_group_roles_remove(self, queryset, _user):
|
||||
with transaction.atomic():
|
||||
event_group_edited.commit(
|
||||
actor=_user, target=self
|
||||
)
|
||||
for role in queryset:
|
||||
self.roles.remove(role)
|
||||
@@ -4,14 +4,14 @@ from django.conf.urls import url
|
||||
|
||||
from .api_views import APIPermissionList, APIRoleListView, APIRoleView
|
||||
from .views import (
|
||||
GroupRoleMembersView, RoleCreateView, RoleDeleteView, RoleEditView,
|
||||
GroupRolesView, RoleCreateView, RoleDeleteView, RoleEditView,
|
||||
RoleListView, SetupRoleMembersView, SetupRolePermissionsView
|
||||
)
|
||||
|
||||
urlpatterns = [
|
||||
url(
|
||||
regex=r'^group/(?P<pk>\d+)/roles/$',
|
||||
view=GroupRoleMembersView.as_view(), name='group_roles'
|
||||
view=GroupRolesView.as_view(), name='group_roles'
|
||||
),
|
||||
url(regex=r'^role/list/$', view=RoleListView.as_view(), name='role_list'),
|
||||
url(
|
||||
|
||||
@@ -10,6 +10,7 @@ from django.utils.encoding import force_text
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.acls.models import AccessControlList
|
||||
from mayan.apps.common.generics import AddRemoveView
|
||||
from mayan.apps.common.views import (
|
||||
AssignRemoveView, SingleObjectCreateView, SingleObjectDeleteView,
|
||||
SingleObjectEditView, SingleObjectListView
|
||||
@@ -26,39 +27,27 @@ from .permissions import (
|
||||
)
|
||||
|
||||
|
||||
class GroupRoleMembersView(AssignRemoveView):
|
||||
grouped = False
|
||||
left_list_title = _('Available roles')
|
||||
right_list_title = _('Group roles')
|
||||
object_permission = permission_group_edit
|
||||
class GroupRolesView(AddRemoveView):
|
||||
action_add_method = 'roles_add'
|
||||
action_remove_method = 'roles_remove'
|
||||
main_object_model = Group
|
||||
main_object_permission = permission_group_edit
|
||||
main_object_pk_url_kwarg = 'pk'
|
||||
secondary_object_model = Role
|
||||
secondary_object_permission = permission_role_edit
|
||||
list_available_title = _('Available roles')
|
||||
list_added_title = _('Group roles')
|
||||
related_field = 'roles'
|
||||
|
||||
def add(self, item):
|
||||
role = get_object_or_404(klass=Role, pk=item)
|
||||
self.get_object().roles.add(role)
|
||||
def get_actions_extra_kwargs(self):
|
||||
return {'_user': self.request.user}
|
||||
|
||||
def get_extra_context(self):
|
||||
return {
|
||||
'object': self.get_object(),
|
||||
'title': _('Roles of group: %s') % self.get_object()
|
||||
'object': self.main_object,
|
||||
'title': _('Roles of group: %s') % self.main_object,
|
||||
}
|
||||
|
||||
def get_object(self):
|
||||
return get_object_or_404(klass=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(klass=Role, pk=item)
|
||||
self.get_object().roles.remove(role)
|
||||
|
||||
|
||||
class RoleCreateView(SingleObjectCreateView):
|
||||
fields = ('label',)
|
||||
|
||||
Reference in New Issue
Block a user