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:
@@ -1,5 +1,6 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import itertools
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
@@ -52,11 +53,28 @@ class Permission(object):
|
|||||||
_stored_permissions_cache = {}
|
_stored_permissions_cache = {}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def all(cls):
|
def all(cls, as_choices=False):
|
||||||
# Return sorted permisions by namespace.name
|
if as_choices:
|
||||||
return sorted(
|
StoredPermission = apps.get_model(
|
||||||
cls._permissions.values(), key=lambda x: x.namespace.name
|
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
|
@classmethod
|
||||||
def check_permissions(cls, requester, permissions):
|
def check_permissions(cls, requester, permissions):
|
||||||
|
|||||||
Reference in New Issue
Block a user