0001-manager-display-parent-roles-OU-on-the-role-members-.patch
src/authentic2/manager/role_views.py | ||
---|---|---|
19 | 19 |
from django.core.exceptions import PermissionDenied |
20 | 20 |
from django.utils.translation import ugettext_lazy as _ |
21 | 21 |
from django.urls import reverse |
22 | 22 |
from django.views.generic import FormView, TemplateView |
23 | 23 |
from django.views.generic.detail import SingleObjectMixin |
24 | 24 |
from django.contrib import messages |
25 | 25 |
from django.contrib.contenttypes.models import ContentType |
26 | 26 |
from django.db.models.query import Q, Prefetch |
27 |
from django.db.models import Count |
|
27 |
from django.db.models import Count, F
|
|
28 | 28 |
from django.contrib.auth import get_user_model |
29 | 29 | |
30 | 30 |
from django_rbac.utils import get_role_model, get_permission_model, get_ou_model |
31 | 31 | |
32 | 32 |
from authentic2.utils import redirect |
33 | 33 |
from authentic2 import hooks, data_transfer |
34 | 34 | |
35 | 35 |
from . import tables, views, resources, forms, app_settings |
... | ... | |
190 | 190 |
if app_settings.ROLE_MEMBERS_FROM_OU: |
191 | 191 |
kwargs['ou'] = self.object.ou |
192 | 192 |
return kwargs |
193 | 193 | |
194 | 194 |
def get_context_data(self, **kwargs): |
195 | 195 |
ctx = super(RoleMembersView, self).get_context_data(**kwargs) |
196 | 196 |
ctx['children'] = views.filter_view(self.request, |
197 | 197 |
self.object.children(include_self=False, annotate=True)) |
198 |
ctx['parents'] = views.filter_view(self.request, self.object.parents(include_self=False, annotate=True)) |
|
198 |
ctx['parents'] = views.filter_view(self.request, self.object.parents( |
|
199 |
include_self=False, annotate=True).order_by(F('ou').desc(nulls_first=True))) |
|
200 |
ctx['is_several_parent_ous'] = len(set(x.ou for x in self.object.parents(include_self=False))) |
|
199 | 201 |
ctx['admin_roles'] = views.filter_view(self.request, |
200 | 202 |
self.object.get_admin_role().children(include_self=False, |
201 | 203 |
annotate=True)) |
202 | 204 |
ctx['from_ldap'] = self._can_manage_members and not self.can_manage_members |
203 | 205 |
return ctx |
204 | 206 | |
205 | 207 |
members = RoleMembersView.as_view() |
206 | 208 |
src/authentic2/manager/templates/authentic2/manager/role_members.html | ||
---|---|---|
112 | 112 |
<a rel="popup" href="{% url "a2-manager-role-add-child" pk=object.pk %}" class="role-add icon-add-sign"></a> |
113 | 113 |
{% else %} |
114 | 114 |
<a title="{% trans "Permission denied" %}" class="disabled role-add icon-add-sign"></a> |
115 | 115 |
{% endif %} |
116 | 116 |
</div> |
117 | 117 |
<div class="role-inheritance gadjo-folding"> |
118 | 118 |
{% trans "Parent roles:" %} |
119 | 119 |
{% for parent in parents %} |
120 |
<a class="role" href="{% url "a2-manager-role-members" pk=parent.pk %}">{{ parent }}</a> |
|
120 |
<a class="role" href="{% url "a2-manager-role-members" pk=parent.pk %}"> |
|
121 |
{% if parent.ou and is_several_parent_ous %} |
|
122 |
{{ parent.ou }} - {{ parent }} |
|
123 |
{% else %} |
|
124 |
{{ parent }} |
|
125 |
{% endif %} |
|
126 |
</a> |
|
121 | 127 |
{% if parent.direct %} |
122 | 128 |
{% if not object.is_internal %} |
123 | 129 |
<a rel="popup" href="{% url "a2-manager-role-remove-parent" pk=object.pk parent_pk=parent.pk %}" class="role-remove icon-minus-sign"></a> |
124 | 130 |
{% else %} |
125 | 131 |
<a title="{% trans "This role is technical, you cannot modify its permissions." %}" class="disabled role-add icon-minus-sign"></a> |
126 | 132 |
{% endif %} |
127 | 133 |
{% else %} |
128 | 134 |
<a title="{% trans "Indirect parent role" %}" class="disabled role-remove icon-minus-sign"></a> |
129 |
- |