Projet

Général

Profil

0001-manager-display-parent-roles-OU-on-the-role-members-.patch

Nicolas Roche, 31 juillet 2020 17:20

Télécharger (4,21 ko)

Voir les différences:

Subject: [PATCH] manager: display parent roles OU on the role members page
 (#43269)

 src/authentic2/manager/role_views.py                      | 6 ++++--
 .../templates/authentic2/manager/role_members.html        | 8 +++++++-
 2 files changed, 11 insertions(+), 3 deletions(-)
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
-