Updated permissions app to only return active permissions on the views and querysets
This commit is contained in:
@@ -17,12 +17,7 @@ from permissions import PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT, \
|
||||
PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE
|
||||
|
||||
from permissions.models import Permission
|
||||
|
||||
namespace_titles = {
|
||||
'permissions': _(u'Permissions')
|
||||
}
|
||||
|
||||
permission_titles = {}
|
||||
from permissions.runtime import namespace_titles, permission_titles
|
||||
|
||||
|
||||
def set_namespace_title(namespace, title):
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
from django.db import models
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from permissions.runtime import permission_titles
|
||||
|
||||
|
||||
class RoleMemberManager(models.Manager):
|
||||
def get_roles_for_member(self, member_obj):
|
||||
@@ -11,4 +13,16 @@ class RoleMemberManager(models.Manager):
|
||||
class PermissionManager(models.Manager):
|
||||
def get_for_holder(self, holder):
|
||||
ct = ContentType.objects.get_for_model(holder)
|
||||
return self.model.objects.filter(permissionholder__holder_type=ct).filter(permissionholder__holder_id=holder.pk)
|
||||
return self.model.objects.active_only().filter(permissionholder__holder_type=ct).filter(permissionholder__holder_id=holder.pk)
|
||||
|
||||
def active_only(self):
|
||||
namespaces = []
|
||||
names = []
|
||||
for key in permission_titles:
|
||||
namespace, name = key.split(u'.')
|
||||
if namespace:
|
||||
namespaces.append(namespace)
|
||||
if name:
|
||||
names.append(name)
|
||||
|
||||
return super(PermissionManager, self).get_query_set().filter(namespace__in=namespaces).filter(name__in=names).exclude(label=u'')
|
||||
|
||||
@@ -22,7 +22,7 @@ from permissions.forms import RoleForm, RoleForm_view
|
||||
from permissions import PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT, \
|
||||
PERMISSION_ROLE_CREATE, PERMISSION_ROLE_DELETE, PERMISSION_PERMISSION_GRANT, \
|
||||
PERMISSION_PERMISSION_REVOKE
|
||||
from permissions.api import check_permissions, namespace_titles
|
||||
from permissions.api import check_permissions, namespace_titles, get_permission_label, get_permission_namespace_label
|
||||
from permissions.widgets import role_permission_link
|
||||
|
||||
|
||||
@@ -52,10 +52,10 @@ def role_permissions(request, role_id):
|
||||
'name': u'generic_list_subtemplate.html',
|
||||
'context': {
|
||||
'title': _(u'permissions'),
|
||||
'object_list': Permission.objects.all(),
|
||||
'object_list': Permission.objects.active_only(),
|
||||
'extra_columns': [
|
||||
{'name': _(u'namespace'), 'attribute': encapsulate(lambda x: namespace_titles[x.namespace] if x.namespace in namespace_titles else x.namespace)},
|
||||
{'name': _(u'name'), 'attribute': u'label'},
|
||||
{'name': _(u'namespace'), 'attribute': encapsulate(lambda x: get_permission_namespace_label(x))},
|
||||
{'name': _(u'name'), 'attribute': encapsulate(lambda x: get_permission_label(x))},
|
||||
{
|
||||
'name':_(u'has permission'),
|
||||
'attribute': encapsulate(lambda x: two_state_template(x.has_permission(role))),
|
||||
|
||||
Reference in New Issue
Block a user