Sort permissions in the ACL edit view and copy solution to improve the role permission sorting.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -155,6 +155,13 @@ class ACLPermissionsView(AssignRemoveView):
|
|||||||
def generate_choices(entries):
|
def generate_choices(entries):
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
|
entries = sorted(
|
||||||
|
entries, key=lambda x: (
|
||||||
|
x.get_volatile_permission().namespace.label,
|
||||||
|
x.get_volatile_permission().label
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
for namespace, permissions in itertools.groupby(entries, lambda entry: entry.namespace):
|
for namespace, permissions in itertools.groupby(entries, lambda entry: entry.namespace):
|
||||||
permission_options = [
|
permission_options = [
|
||||||
(force_text(permission.pk), permission) for permission in permissions
|
(force_text(permission.pk), permission) for permission in permissions
|
||||||
|
|||||||
@@ -116,6 +116,27 @@ class SetupRolePermissionsView(AssignRemoveView):
|
|||||||
left_list_title = _('Available permissions')
|
left_list_title = _('Available permissions')
|
||||||
right_list_title = _('Granted permissions')
|
right_list_title = _('Granted permissions')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def generate_choices(entries):
|
||||||
|
results = []
|
||||||
|
|
||||||
|
entries = sorted(
|
||||||
|
entries, key=lambda x: (
|
||||||
|
x.get_volatile_permission().namespace.label,
|
||||||
|
x.get_volatile_permission().label
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
for namespace, permissions in itertools.groupby(entries, lambda entry: entry.namespace):
|
||||||
|
permission_options = [
|
||||||
|
(force_text(permission.pk), permission) for permission in permissions
|
||||||
|
]
|
||||||
|
results.append(
|
||||||
|
(PermissionNamespace.get(namespace), permission_options)
|
||||||
|
)
|
||||||
|
|
||||||
|
return results
|
||||||
|
|
||||||
def add(self, item):
|
def add(self, item):
|
||||||
Permission.check_permissions(
|
Permission.check_permissions(
|
||||||
self.request.user, permissions=(permission_permission_grant,)
|
self.request.user, permissions=(permission_permission_grant,)
|
||||||
@@ -141,47 +162,18 @@ class SetupRolePermissionsView(AssignRemoveView):
|
|||||||
|
|
||||||
def left_list(self):
|
def left_list(self):
|
||||||
Permission.refresh()
|
Permission.refresh()
|
||||||
results = []
|
|
||||||
|
|
||||||
available_permission = sorted(
|
return SetupRolePermissionsView.generate_choices(
|
||||||
StoredPermission.objects.exclude(
|
entries=StoredPermission.objects.exclude(
|
||||||
id__in=self.get_object().permissions.values_list('pk', flat=True)
|
id__in=self.get_object().permissions.values_list('pk', flat=True)
|
||||||
), key=lambda x: (
|
|
||||||
x.get_volatile_permission().namespace.label,
|
|
||||||
x.get_volatile_permission().label
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
for namespace, permissions in itertools.groupby(available_permission, lambda entry: entry.namespace):
|
|
||||||
permission_options = [
|
|
||||||
(force_text(permission.pk), permission) for permission in permissions
|
|
||||||
]
|
|
||||||
results.append(
|
|
||||||
(PermissionNamespace.get(namespace), permission_options)
|
|
||||||
)
|
|
||||||
|
|
||||||
return results
|
|
||||||
|
|
||||||
def right_list(self):
|
def right_list(self):
|
||||||
results = []
|
return SetupRolePermissionsView.generate_choices(
|
||||||
|
entries=self.get_object().permissions.all()
|
||||||
granted_permissions = sorted(
|
|
||||||
self.get_object().permissions.all(), key=lambda x: (
|
|
||||||
x.get_volatile_permission().namespace.label,
|
|
||||||
x.get_volatile_permission().label
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
for namespace, permissions in itertools.groupby(granted_permissions, lambda entry: entry.namespace):
|
|
||||||
permission_options = [
|
|
||||||
(force_text(permission.pk), permission) for permission in permissions
|
|
||||||
]
|
|
||||||
results.append(
|
|
||||||
(PermissionNamespace.get(namespace), permission_options)
|
|
||||||
)
|
|
||||||
|
|
||||||
return results
|
|
||||||
|
|
||||||
def remove(self, item):
|
def remove(self, item):
|
||||||
Permission.check_permissions(
|
Permission.check_permissions(
|
||||||
self.request.user, permissions=(permission_permission_revoke,)
|
self.request.user, permissions=(permission_permission_revoke,)
|
||||||
|
|||||||
Reference in New Issue
Block a user