Update role group list view to AddRemoveView
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -164,6 +164,9 @@
|
|||||||
* Use the 'handler' prefix for all the signal handler functions.
|
* Use the 'handler' prefix for all the signal handler functions.
|
||||||
* Remove custom email widget and use Django's.
|
* Remove custom email widget and use Django's.
|
||||||
* Increase default maximum number of favorite documents to 400.
|
* Increase default maximum number of favorite documents to 400.
|
||||||
|
* Update the role group list view to use the new AddRemoveView.
|
||||||
|
* Commit the group event in conjunction with the role event
|
||||||
|
when a group is added or remove from role.
|
||||||
|
|
||||||
3.1.11 (2019-04-XX)
|
3.1.11 (2019-04-XX)
|
||||||
===================
|
===================
|
||||||
|
|||||||
@@ -196,6 +196,9 @@ Other changes
|
|||||||
* Use the 'handler' prefix for all the signal handler functions.
|
* Use the 'handler' prefix for all the signal handler functions.
|
||||||
* Remove custom email widget and use Django's.
|
* Remove custom email widget and use Django's.
|
||||||
* Increase default maximum number of favorite documents to 400.
|
* Increase default maximum number of favorite documents to 400.
|
||||||
|
* Update the role group list view to use the new AddRemoveView.
|
||||||
|
* Commit the group event in conjunction with the role event
|
||||||
|
when a group is added or remove from role.
|
||||||
|
|
||||||
Removals
|
Removals
|
||||||
--------
|
--------
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ from django.urls import reverse
|
|||||||
from django.utils.encoding import force_text, python_2_unicode_compatible
|
from django.utils.encoding import force_text, python_2_unicode_compatible
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from mayan.apps.user_management.events import event_group_edited
|
||||||
|
|
||||||
from .classes import Permission
|
from .classes import Permission
|
||||||
from .events import event_role_created, event_role_edited
|
from .events import event_role_created, event_role_edited
|
||||||
from .managers import RoleManager, StoredPermissionManager
|
from .managers import RoleManager, StoredPermissionManager
|
||||||
@@ -119,6 +121,28 @@ class Role(models.Model):
|
|||||||
def grant(self, permission):
|
def grant(self, permission):
|
||||||
self.permissions.add(permission.stored_permission)
|
self.permissions.add(permission.stored_permission)
|
||||||
|
|
||||||
|
def groups_add(self, queryset, _user=None):
|
||||||
|
with transaction.atomic():
|
||||||
|
event_role_edited.commit(
|
||||||
|
actor=_user, target=self
|
||||||
|
)
|
||||||
|
for obj in queryset:
|
||||||
|
self.groups.add(obj)
|
||||||
|
event_group_edited.commit(
|
||||||
|
actor=_user, action_object=self, target=obj
|
||||||
|
)
|
||||||
|
|
||||||
|
def groups_remove(self, queryset, _user=None):
|
||||||
|
with transaction.atomic():
|
||||||
|
event_role_edited.commit(
|
||||||
|
actor=_user, target=self
|
||||||
|
)
|
||||||
|
for obj in queryset:
|
||||||
|
self.groups.remove(obj)
|
||||||
|
event_group_edited.commit(
|
||||||
|
actor=_user, action_object=self, target=obj
|
||||||
|
)
|
||||||
|
|
||||||
def natural_key(self):
|
def natural_key(self):
|
||||||
return (self.label,)
|
return (self.label,)
|
||||||
natural_key.dependencies = ['auth.Group', 'permissions.StoredPermission']
|
natural_key.dependencies = ['auth.Group', 'permissions.StoredPermission']
|
||||||
|
|||||||
@@ -73,43 +73,31 @@ class RoleEditView(SingleObjectEditView):
|
|||||||
return {'_user': self.request.user}
|
return {'_user': self.request.user}
|
||||||
|
|
||||||
|
|
||||||
class SetupRoleMembersView(AssignRemoveView):
|
class SetupRoleMembersView(AddRemoveView):
|
||||||
grouped = False
|
action_add_method = 'groups_add'
|
||||||
left_list_title = _('Available groups')
|
action_remove_method = 'groups_remove'
|
||||||
right_list_title = _('Role groups')
|
main_object_model = Role
|
||||||
object_permission = permission_role_edit
|
main_object_permission = permission_role_edit
|
||||||
|
main_object_pk_url_kwarg = 'pk'
|
||||||
|
secondary_object_model = Group
|
||||||
|
secondary_object_permission = permission_group_edit
|
||||||
|
list_available_title = _('Available groups')
|
||||||
|
list_added_title = _('Role groups')
|
||||||
|
related_field = 'groups'
|
||||||
|
|
||||||
def add(self, item):
|
def get_actions_extra_kwargs(self):
|
||||||
group = get_object_or_404(klass=Group, pk=item)
|
return {'_user': self.request.user}
|
||||||
self.get_object().groups.add(group)
|
|
||||||
|
|
||||||
def get_extra_context(self):
|
def get_extra_context(self):
|
||||||
return {
|
return {
|
||||||
'object': self.get_object(),
|
'object': self.main_object,
|
||||||
'title': _('Groups of role: %s') % self.get_object(),
|
'title': _('Groups of role: %s') % self.main_object,
|
||||||
'subtitle': _(
|
'subtitle': _(
|
||||||
'Add groups to be part of a role. They will '
|
'Add groups to be part of a role. They will '
|
||||||
'inherit the role\'s permissions and access controls.'
|
'inherit the role\'s permissions and access controls.'
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_object(self):
|
|
||||||
return get_object_or_404(klass=Role, pk=self.kwargs['pk'])
|
|
||||||
|
|
||||||
def left_list(self):
|
|
||||||
return [
|
|
||||||
(force_text(group.pk), group.name) for group in set(Group.objects.all()) - set(self.get_object().groups.all())
|
|
||||||
]
|
|
||||||
|
|
||||||
def right_list(self):
|
|
||||||
return [
|
|
||||||
(force_text(group.pk), group.name) for group in self.get_object().groups.all()
|
|
||||||
]
|
|
||||||
|
|
||||||
def remove(self, item):
|
|
||||||
group = get_object_or_404(klass=Group, pk=item)
|
|
||||||
self.get_object().groups.remove(group)
|
|
||||||
|
|
||||||
|
|
||||||
class SetupRolePermissionsView(AssignRemoveView):
|
class SetupRolePermissionsView(AssignRemoveView):
|
||||||
grouped = True
|
grouped = True
|
||||||
|
|||||||
Reference in New Issue
Block a user