Add support for getting the list of all permissions as a choice

list.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2017-08-26 02:00:59 -04:00
parent 7fdd816a1a
commit f20810b2ae

View File

@@ -1,5 +1,6 @@
from __future__ import unicode_literals
import itertools
import logging
from django.apps import apps
@@ -52,11 +53,28 @@ class Permission(object):
_stored_permissions_cache = {}
@classmethod
def all(cls):
# Return sorted permisions by namespace.name
return sorted(
cls._permissions.values(), key=lambda x: x.namespace.name
)
def all(cls, as_choices=False):
if as_choices:
StoredPermission = apps.get_model(
app_label='permissions', model_name='StoredPermission'
)
results = []
for namespace, permissions in itertools.groupby(StoredPermission.objects.all(), lambda entry: entry.namespace):
permission_options = [
(force_text(permission.pk), permission) for permission in permissions
]
results.append(
(PermissionNamespace.get(namespace), permission_options)
)
return results
else:
# Return sorted permisions by namespace.name
return sorted(
cls._permissions.values(), key=lambda x: x.namespace.name
)
@classmethod
def check_permissions(cls, requester, permissions):