diff --git a/apps/permissions/api.py b/apps/permissions/api.py index c74cfe5e67..4b469d092d 100644 --- a/apps/permissions/api.py +++ b/apps/permissions/api.py @@ -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): diff --git a/apps/permissions/managers.py b/apps/permissions/managers.py index e4cfd1fdf5..919bb720bd 100644 --- a/apps/permissions/managers.py +++ b/apps/permissions/managers.py @@ -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'') diff --git a/apps/permissions/views.py b/apps/permissions/views.py index df7b8c847b..7199cc6e33 100644 --- a/apps/permissions/views.py +++ b/apps/permissions/views.py @@ -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))),