From 36c9bf3b03e27afed838fd45c17cb058a0276427 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 11 Jun 2015 12:48:59 +0200 Subject: [PATCH] manager/service_views: add flag to allow service roles in role views (fixes #7530) Default is to filter out service role in the general role view. But in service role views they are precisely the role we want. --- src/authentic2/manager/role_views.py | 13 ++++++++++--- src/authentic2/manager/service_views.py | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/authentic2/manager/role_views.py b/src/authentic2/manager/role_views.py index d17a107..eca0f85 100644 --- a/src/authentic2/manager/role_views.py +++ b/src/authentic2/manager/role_views.py @@ -15,6 +15,9 @@ from . import tables, views, resources, forms class RolesMixin(object): + service_roles = False + admin_roles = False + def get_queryset(self): qs = super(RolesMixin, self).get_queryset() qs = qs.select_related('ou') @@ -26,9 +29,13 @@ class RolesMixin(object): .values_list('id', flat=True) # only non role-admin roles, they are accessed through the # RoleManager views - return qs.filter(Q(admin_scope_ct__isnull=True) | - Q(admin_scope_ct=permission_ct, - admin_scope_id__in=permission_qs), service__isnull=True) + if not self.admin_roles: + qs = qs.filter(Q(admin_scope_ct__isnull=True) | + Q(admin_scope_ct=permission_ct, + admin_scope_id__in=permission_qs)) + if not self.service_roles: + qs = qs.filter(service__isnull=True) + return qs class RolesView(RolesMixin, views.BaseTableView): diff --git a/src/authentic2/manager/service_views.py b/src/authentic2/manager/service_views.py index b2d6cb7..e33d628 100644 --- a/src/authentic2/manager/service_views.py +++ b/src/authentic2/manager/service_views.py @@ -46,6 +46,8 @@ edit = ServiceEditView.as_view() class ServiceRoleMixin(object): + service_roles = True + def dispatch(self, request, *args, **kwargs): self.service = get_object_or_404(Service, pk=kwargs['service_pk']) return super(ServiceRoleMixin, self).dispatch(request, *args, **kwargs) -- 2.1.4