Sort permission namespaces and permissions in the role permission views.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -27,20 +27,19 @@ class StoredPermission(models.Model):
|
||||
verbose_name = _('Permission')
|
||||
verbose_name_plural = _('Permissions')
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(StoredPermission, self).__init__(*args, **kwargs)
|
||||
try:
|
||||
self.volatile_permission = Permission.get(
|
||||
pk='{}.{}'.format(self.namespace, self.name),
|
||||
proxy_only=True
|
||||
)
|
||||
except KeyError:
|
||||
# Must be a deprecated permission in the database that is no
|
||||
# longer used in the current code
|
||||
pass
|
||||
|
||||
def __str__(self):
|
||||
return force_text(getattr(self, 'volatile_permission', self.name))
|
||||
try:
|
||||
return force_text(self.get_volatile_permission())
|
||||
except KeyError:
|
||||
return self.name
|
||||
|
||||
def get_volatile_permission_id(self):
|
||||
return '{}.{}'.format(self.namespace, self.name)
|
||||
|
||||
def get_volatile_permission(self):
|
||||
return Permission.get(
|
||||
pk=self.get_volatile_permission_id(), proxy_only=True
|
||||
)
|
||||
|
||||
def natural_key(self):
|
||||
return (self.namespace, self.name)
|
||||
|
||||
@@ -136,7 +136,16 @@ class SetupRolePermissionsView(AssignRemoveView):
|
||||
Permission.refresh()
|
||||
results = []
|
||||
|
||||
for namespace, permissions in itertools.groupby(StoredPermission.objects.exclude(id__in=self.get_object().permissions.values_list('pk', flat=True)), lambda entry: entry.namespace):
|
||||
available_permission = sorted(
|
||||
StoredPermission.objects.exclude(
|
||||
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
|
||||
]
|
||||
@@ -148,7 +157,15 @@ class SetupRolePermissionsView(AssignRemoveView):
|
||||
|
||||
def right_list(self):
|
||||
results = []
|
||||
for namespace, permissions in itertools.groupby(self.get_object().permissions.all(), lambda entry: entry.namespace):
|
||||
|
||||
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
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user