Projet

Général

Profil

0013-refactor-role-s-user-and-role-managers-views-fixes-9.patch

Benjamin Dauvergne, 29 janvier 2016 11:28

Télécharger (32,9 ko)

Voir les différences:

Subject: [PATCH 13/14] refactor role's user and role managers views (fixes
 #9731)

 src/authentic2/manager/role_views.py               | 123 ++++++++++++++++-----
 src/authentic2/manager/service_views.py            |  44 --------
 .../authentic2/manager/role_children.html          |  43 -------
 .../authentic2/manager/role_managers.html          |  34 ------
 .../authentic2/manager/role_managers_roles.html    |  36 ------
 .../authentic2/manager/role_managers_table.html    |   1 -
 .../templates/authentic2/manager/role_members.html |  49 +++++++-
 .../authentic2/manager/role_permissions.html       |   2 -
 .../authentic2/manager/role_remove_admin_role.html |  23 ++++
 .../authentic2/manager/role_remove_admin_user.html |  23 ++++
 .../authentic2/manager/service_role_children.html  |  34 ------
 .../authentic2/manager/service_role_managers.html  |  33 ------
 .../manager/service_role_managers_roles.html       |  32 ------
 .../authentic2/manager/service_role_members.html   |  36 ------
 .../authentic2/service_role_managers.html          |  38 -------
 .../templates/authentic2/service_role_members.html |  36 ------
 src/authentic2/manager/urls.py                     |  30 ++---
 17 files changed, 196 insertions(+), 421 deletions(-)
 delete mode 100644 src/authentic2/manager/templates/authentic2/manager/role_children.html
 delete mode 100644 src/authentic2/manager/templates/authentic2/manager/role_managers.html
 delete mode 100644 src/authentic2/manager/templates/authentic2/manager/role_managers_roles.html
 delete mode 100644 src/authentic2/manager/templates/authentic2/manager/role_managers_table.html
 create mode 100644 src/authentic2/manager/templates/authentic2/manager/role_remove_admin_role.html
 create mode 100644 src/authentic2/manager/templates/authentic2/manager/role_remove_admin_user.html
 delete mode 100644 src/authentic2/manager/templates/authentic2/manager/service_role_children.html
 delete mode 100644 src/authentic2/manager/templates/authentic2/manager/service_role_managers.html
 delete mode 100644 src/authentic2/manager/templates/authentic2/manager/service_role_managers_roles.html
 delete mode 100644 src/authentic2/manager/templates/authentic2/manager/service_role_members.html
 delete mode 100644 src/authentic2/manager/templates/authentic2/service_role_managers.html
 delete mode 100644 src/authentic2/manager/templates/authentic2/service_role_members.html
src/authentic2/manager/role_views.py
9 9
from django.db.models import Count
10 10
from django.core.urlresolvers import reverse
11 11
from django.http import Http404
12
from django.contrib.auth import get_user_model
12 13

  
13 14
from django_rbac.utils import get_role_model, get_permission_model, \
14 15
    get_role_parenting_model, get_ou_model
......
135 136
        ctx['parents'] = views.filter_view(self.request,
136 137
                                           self.object.parents(include_self=False,
137 138
                                           annotate=True))
139
        ctx['admin_roles'] = views.filter_view(self.request,
140
                                               self.object.get_admin_role().children(
141
                                                   include_self=False, annotate=True))
138 142
        return ctx
139 143

  
140 144
members = RoleMembersView.as_view()
......
226 230
members_export = RoleMembersExportView.as_view()
227 231

  
228 232

  
229
class RoleManagerViewMixin(RoleViewMixin):
230
    model = get_role_model()
231

  
232
    def get_object(self):
233
        self.role_object = super(RoleManagerViewMixin, self).get_object()
234
        if self.role_object.has_self_administration():
235
            raise Http404
236
        return self.role_object.get_admin_role()
237

  
238
    def get_context_data(self, **kwargs):
239
        ctx = super(RoleManagerViewMixin, self).get_context_data(**kwargs)
240
        ctx['role'] = self.role_object
241
        return ctx
242

  
243

  
244
class RoleManagersView(RoleManagerViewMixin, RoleMembersView):
245
    template_name = 'authentic2/manager/role_managers.html'
246

  
247
managers = RoleManagersView.as_view()
248

  
249

  
250
class RoleManagersRolesView(RoleManagerViewMixin, RoleChildrenView):
251
    template_name = 'authentic2/manager/role_managers_roles.html'
252

  
253
managers_roles = RoleManagersRolesView.as_view()
254

  
255

  
256 233
class RoleAddChildView(views.AjaxFormViewMixin, views.TitleMixin,
257 234
                       views.PermissionMixin, SingleObjectMixin, FormView):
258 235
    title = _('Add child role')
......
343 320
        return redirect(self.request, self.success_url)
344 321

  
345 322
remove_parent = RoleRemoveParentView.as_view()
323

  
324

  
325
class RoleAddAdminRoleView(views.AjaxFormViewMixin, views.TitleMixin,
326
                       views.PermissionMixin, SingleObjectMixin, FormView):
327
    title = _('Add admin role')
328
    model = get_role_model()
329
    form_class = forms.RolesForm
330
    success_url = '..'
331
    template_name = 'authentic2/manager/form.html'
332
    permissions = 'a2_rbac.change_role'
333

  
334
    def dispatch(self, request, *args, **kwargs):
335
        self.object = self.get_object()
336
        return super(RoleAddAdminRoleView, self).dispatch(request, *args, **kwargs)
337

  
338
    def form_valid(self, form):
339
        for role in form.cleaned_data['roles']:
340
            self.get_object().get_admin_role().add_child(role)
341
        return super(RoleAddAdminRoleView, self).form_valid(form)
342

  
343
add_admin_role = RoleAddAdminRoleView.as_view()
344

  
345

  
346
class RoleRemoveAdminRoleView(views.TitleMixin, views.AjaxFormViewMixin, SingleObjectMixin,
347
                          views.PermissionMixin, TemplateView):
348
    title = _('Remove admin role')
349
    model = get_role_model()
350
    success_url = '../..'
351
    template_name = 'authentic2/manager/role_remove_admin_role.html'
352
    permissions = 'a2_rbac.change_role'
353

  
354
    def dispatch(self, request, *args, **kwargs):
355
        self.object = self.get_object()
356
        self.child = self.get_queryset().get(pk=kwargs['role_pk'])
357
        return super(RoleRemoveAdminRoleView, self).dispatch(request, *args, **kwargs)
358

  
359
    def get_context_data(self, **kwargs):
360
        ctx = super(RoleRemoveAdminRoleView, self).get_context_data(**kwargs)
361
        ctx['child'] = self.child
362
        return ctx
363

  
364
    def post(self, request, *args, **kwargs):
365
        self.object.get_admin_role().remove_child(self.child)
366
        return redirect(self.request, self.success_url)
367

  
368
remove_admin_role = RoleRemoveAdminRoleView.as_view()
369

  
370

  
371
class RoleAddAdminUserView(views.AjaxFormViewMixin, views.TitleMixin,
372
                       views.PermissionMixin, SingleObjectMixin, FormView):
373
    title = _('Add admin user')
374
    model = get_role_model()
375
    form_class = forms.UsersForm
376
    success_url = '..'
377
    template_name = 'authentic2/manager/form.html'
378
    permissions = 'a2_rbac.change_role'
379

  
380
    def dispatch(self, request, *args, **kwargs):
381
        self.object = self.get_object()
382
        return super(RoleAddAdminUserView, self).dispatch(request, *args, **kwargs)
383

  
384
    def form_valid(self, form):
385
        for user in form.cleaned_data['users']:
386
            self.get_object().get_admin_role().members.add(user)
387
        return super(RoleAddAdminUserView, self).form_valid(form)
388

  
389
add_admin_user = RoleAddAdminUserView.as_view()
390

  
391

  
392
class RoleRemoveAdminUserView(views.TitleMixin, views.AjaxFormViewMixin, SingleObjectMixin,
393
                          views.PermissionMixin, TemplateView):
394
    title = _('Remove admin user')
395
    model = get_role_model()
396
    success_url = '../..'
397
    template_name = 'authentic2/manager/role_remove_admin_user.html'
398
    permissions = 'a2_rbac.change_role'
399

  
400
    def dispatch(self, request, *args, **kwargs):
401
        self.object = self.get_object()
402
        self.user = get_user_model().objects.get(pk=kwargs['user_pk'])
403
        return super(RoleRemoveAdminUserView, self).dispatch(request, *args, **kwargs)
404

  
405
    def get_context_data(self, **kwargs):
406
        ctx = super(RoleRemoveAdminUserView, self).get_context_data(**kwargs)
407
        ctx['user'] = self.user
408
        return ctx
409

  
410
    def post(self, request, *args, **kwargs):
411
        self.object.get_admin_role().members.remove(self.user)
412
        return redirect(self.request, self.success_url)
413

  
414
remove_admin_user = RoleRemoveAdminUserView.as_view()
src/authentic2/manager/service_views.py
45 45
    success_url = '..'
46 46

  
47 47
edit = ServiceEditView.as_view()
48

  
49

  
50
class ServiceRoleMixin(object):
51
    service_roles = True
52

  
53
    def dispatch(self, request, *args, **kwargs):
54
        self.service = get_object_or_404(Service, pk=kwargs['service_pk'])
55
        return super(ServiceRoleMixin, self).dispatch(request, *args, **kwargs)
56

  
57
    def get_queryset(self):
58
        return super(ServiceRoleMixin, self).get_queryset() \
59
            .filter(service_id=self.kwargs['service_pk'])
60

  
61

  
62
class ServiceRoleMembersView(ServiceRoleMixin,
63
                             role_views.RoleMembersView):
64
    template_name = 'authentic2/manager/service_role_members.html'
65
    permissions = ['authentic2.view_service']
66

  
67
role_members = ServiceRoleMembersView.as_view()
68

  
69

  
70
class ServiceRoleChildrenView(ServiceRoleMixin,
71
                              role_views.RoleChildrenView):
72
    template_name = 'authentic2/manager/service_role_children.html'
73
    permissions = ['authentic2.view_service']
74

  
75
role_children = ServiceRoleChildrenView.as_view()
76

  
77

  
78
class ServiceRoleManagersView(ServiceRoleMixin,
79
                              role_views.RoleManagersView):
80
    template_name = 'authentic2/manager/service_role_managers.html'
81
    permissions = ['authentic2.view_service']
82

  
83
role_managers = ServiceRoleManagersView.as_view()
84

  
85

  
86
class ServiceRoleManagerRolesView(ServiceRoleMixin,
87
                                  role_views.RoleManagersRolesView):
88
    template_name = 'authentic2/manager/service_role_managers_roles.html'
89
    permissions = ['authentic2.view_service']
90

  
91
role_managers_roles = ServiceRoleManagerRolesView.as_view()
src/authentic2/manager/templates/authentic2/manager/role_children.html
1
{% extends "authentic2/manager/role_common.html" %}
2
{% load i18n staticfiles django_tables2 %}
3

  
4
{% block breadcrumb %}
5
  {{ block.super }}
6
  <a href="..">{{ object }}</a>
7
  <a href="#">{% trans "Children roles" %}</a>
8
{% endblock %}
9

  
10
{% block appbar %}
11
  {{ block.super }}
12
  {% if not object.is_internal and view.can_delete %}
13
    <a rel="popup" href="{% url "a2-manager-role-delete" pk=object.pk %}">{% trans "Delete" %}</a>
14
  {% endif %}
15
  {% if view.can_change and not object.is_internal %}
16
    <a rel="popup" href="{% url "a2-manager-role-edit" pk=object.pk %}">{% trans "Edit" %}</a>
17
    {% if ROLES_SHOW_PERMISSIONS %}
18
      <a href="{% url "a2-manager-role-permissions" pk=object.pk %}">{% trans "Permissions" %}</a>
19
    {% endif %}
20
    <a href="{% url "a2-manager-role-managers" pk=object.pk %}">{% trans "Managers" %}</a>
21
  {% endif %}
22
  <a href="{% url "a2-manager-role-members" pk=object.pk %}">{% trans "Members" %}</a>
23
{% endblock %}
24

  
25

  
26
{% block extra_scripts %}
27
  {{ block.super }}
28
  {{ choose_user_form.media }}
29
{% endblock %}
30

  
31
{% block main %}
32
 {% with row_link=1 url_name="a2-manager-role-members" %}
33
   {% render_table table "authentic2/manager/role_children_table.html" %}
34
 {% endwith %}
35

  
36
 {% if view.can_change %}
37
   <form method="post" class="manager-m2m-add-form">
38
           {% csrf_token %}
39
           {{ form }}
40
           <button>{% trans "Add" %}</button>
41
   </form>
42
 {% endif %}
43
{% endblock %}
src/authentic2/manager/templates/authentic2/manager/role_managers.html
1
{% extends "authentic2/manager/role_common.html" %}
2
{% load i18n staticfiles django_tables2 %}
3

  
4
{% block breadcrumb %}
5
  {{ block.super }}
6
  <a href="{% url "a2-manager-role-members" pk=role.pk %}">{{ role }}</a>
7
  <a href="#">{% trans "Managers" %}</a>
8
{% endblock %}
9

  
10
{% block appbar %}
11
  {{ block.super }}
12
  <a href="{% url "a2-manager-role-manager-roles" pk=role.pk %}">{% trans "Manager roles" %}</a>
13
{% endblock %}
14

  
15

  
16
{% block extra_scripts %}
17
  {{ block.super }}
18
  {{ choose_user_form.media }}
19
{% endblock %}
20

  
21
{% block main %}
22
 {% with row_link=1 url_name="a2-manager-user-edit" %}
23
   {% render_table table "authentic2/manager/role_managers_table.html" %}
24
 {% endwith %}
25

  
26
 {% if view.can_change %}
27
   <form method="post" class="manager-m2m-add-form">
28
           {% csrf_token %}
29
           {{ form }}
30
           <button>{% trans "Add" %}</button>
31
   </form>
32
 {% endif %}
33
</div>
34
{% endblock %}
src/authentic2/manager/templates/authentic2/manager/role_managers_roles.html
1
{% extends "authentic2/manager/role_common.html" %}
2
{% load i18n staticfiles django_tables2 %}
3

  
4
{% block breadcrumb %}
5
  {{ block.super }}
6
  <a href="{% url "a2-manager-role-members" pk=role.pk %}">{{ role }}</a>
7
  <a href="#">{% trans "Manager roles" %}</a>
8
{% endblock %}
9

  
10
{% block appbar %}
11
  {{ block.super }}
12
  {% if view.can_view %}
13
    <a href="{% url "a2-manager-role-managers" pk=role.pk %}">{% trans "Managers" %}</a>
14
  {% endif %}
15
{% endblock %}
16

  
17

  
18
{% block extra_scripts %}
19
  {{ block.super }}
20
  {{ choose_user_form.media }}
21
{% endblock %}
22

  
23
{% block main %}
24
 {% with row_link=1 url_name="a2-manager-role-members" %}
25
   {% render_table table "authentic2/manager/role_children_table.html" %}
26
 {% endwith %}
27

  
28
 {% if view.can_change %}
29
   <form method="post" class="manager-m2m-add-form">
30
           {% csrf_token %}
31
           {{ form }}
32
           <button>{% trans "Add" %}</button>
33
   </form>
34
 {% endif %}
35
</div>
36
{% endblock %}
src/authentic2/manager/templates/authentic2/manager/role_managers_table.html
1
{% extends "authentic2/manager/role_members_table.html" %}
src/authentic2/manager/templates/authentic2/manager/role_members.html
6 6
  <a href="#">{{ object }}</a>
7 7
{% endblock %}
8 8

  
9
{% block page_title %}{% trans "Role" %}&nbsp;-&nbsp;{{ title }}{% endblock %}
10

  
11
{% block sidebar %}
12
<p>{{ object.description }}</p>
13
{% endblock %}
14

  
9 15
{% block appbar %}
10 16
  {{ block.super }}
11 17
  {% if not object.is_internal and view.can_delete %}
......
31 37
      {% endif %}
32 38
    {% endif %}
33 39
  {% endif %}
34
  {% if not object.has_self_administration %}
35
    <a href="{% url "a2-manager-role-managers" pk=object.pk %}">{% trans "Managers" %}</a>
36
  {% endif %}
37 40
{% endblock %}
38 41

  
39 42

  
......
56 59
           <button>{% trans "Add" %}</button>
57 60
   </form>
58 61
 {% endif %}
59
 <h2>{% trans "Inheritance" %}</h2>
60
 <div class=role-inheritance">
62
 <fieldset class="gadjo-foldable gadjo-folded" id="other-properties">
63
 <legend class="gadjo-foldable-widget">{% trans "Advanced parameters" %}</legend>
64
 <div class="role-inheritance gadjo-folding">
65
   {% trans "Is administered by users" %}
66
   {% for user in object.get_admin_role.all_members %}
67
     <a href="{% url "a2-manager-user-edit" pk=user.pk %}">{{ user.get_full_name }}</a>
68
     {% if user.direct %}
69
       <a rel="popup" href="{% url "a2-manager-role-remove-admin-user" pk=object.pk user_pk=user.pk %}" class="role-remove icon-minus-sign"></a>
70
     {% else %}
71
       <a title="{% trans "Indirect child role" %}" class="disabled role-remove icon-minus-sign"></a>
72
     {% endif %}
73
   {% endfor %}
74
  {% if view.can_change %}
75
    <a rel="popup" href="{% url "a2-manager-role-add-admin-user" pk=object.pk %}" class="role-add icon-add-sign"></a>
76
  {% else %}
77
    <a title="{% trans "Permission denied" %}" class="disabled role-add icon-add-sign"></a>
78
  {% endif %}
79
 </div>
80
 <div class="role-inheritance gadjo-folding">
81
   {% trans "Is administered by roles" %}
82
   {% for role in admin_roles %}
83
     <a href="{% url "a2-manager-role-members" pk=role.pk %}">{{ role }}</a>
84
     {% if role.direct %}
85
       <a rel="popup" href="{% url "a2-manager-role-remove-admin-role" pk=object.pk role_pk=role.pk %}" class="role-remove icon-minus-sign"></a>
86
     {% else %}
87
       <a title="{% trans "Indirect admin role" %}" class="disabled role-remove icon-minus-sign"></a>
88
     {% endif %}
89
   {% endfor %}
90
  {% if view.can_change %}
91
    <a rel="popup" href="{% url "a2-manager-role-add-admin-role" pk=object.pk %}" class="role-add icon-add-sign"></a>
92
  {% else %}
93
    <a title="{% trans "Permission denied" %}" class="disabled role-add icon-add-sign"></a>
94
  {% endif %}
95
 </div>
96
 <div class="role-inheritance gadjo-folding">
61 97
   {% trans "Child roles:" %}
62 98
   {% for child in children %}
63 99
     <a href="{% url "a2-manager-role-members" pk=child.pk %}">{{ child }}</a>
......
73 109
    <a title="{% trans "Permission denied" %}" class="disabled role-add icon-add-sign"></a>
74 110
  {% endif %}
75 111
 </div>
76
 <div class="role-inheritance">
112
 <div class="role-inheritance gadjo-folding">
77 113
   {% trans "Parent roles:" %}
78 114
   {% for parent in parents %}
79 115
     <a class="role" href="{% url "a2-manager-role-members" pk=parent.pk %}">{{ parent }}</a>
......
89 125
     <a title="{% trans "This role is technical, you cannot modify its permissions." %}" class="disabled role-add icon-add-sign"></a>
90 126
   {% endif %}
91 127
 </div>
128
 </fieldset>
92 129
</div>
93 130
{% endblock %}
src/authentic2/manager/templates/authentic2/manager/role_permissions.html
14 14
  {% endif %}
15 15
  {% if view.can_change and not object.is_internal %}
16 16
    <a rel="popup" href="{% url "a2-manager-role-edit" pk=object.pk %}">{% trans "Edit" %}</a>
17
    <a href="{% url "a2-manager-role-managers" pk=object.pk %}">{% trans "Managers" %}</a>
18 17
  {% endif %}
19
  <a href="{% url "a2-manager-role-children" pk=object.pk %}">{% trans "Children roles" %}</a>
20 18
  <a href="{% url "a2-manager-role-members" pk=object.pk %}">{% trans "Members" %}</a>
21 19
{% endblock %}
22 20

  
src/authentic2/manager/templates/authentic2/manager/role_remove_admin_role.html
1
{% extends "authentic2/manager/sidebar.html" %}
2
{% load i18n %}
3

  
4
{% block messages %}
5
{% endblock %}
6

  
7
{% block main %}
8
  {% if title %}
9
    <div id="appbar"><h2>{{ title }}</h2></div>
10
  {% endif %}
11
  <form method="post">
12
    {% csrf_token %}
13
    <div class="form-inner-container">
14
      {% block caption %}
15
      <p>{% blocktrans %}Do you want to remove admin role {{ child }} ?{% endblocktrans %}</p>
16
      {% endblock %}
17
      <div class="buttons">
18
        <button>{% trans "Remove" %}</button>
19
        <a class="cancel" href="..">{% trans "Cancel" %}</a>
20
      </div>
21
    </div>
22
  </form>
23
{% endblock %}
src/authentic2/manager/templates/authentic2/manager/role_remove_admin_user.html
1
{% extends "authentic2/manager/sidebar.html" %}
2
{% load i18n %}
3

  
4
{% block messages %}
5
{% endblock %}
6

  
7
{% block main %}
8
  {% if title %}
9
    <div id="appbar"><h2>{{ title }}</h2></div>
10
  {% endif %}
11
  <form method="post">
12
    {% csrf_token %}
13
    <div class="form-inner-container">
14
      {% block caption %}
15
      <p>{% blocktrans with user=user.get_full_name %}Do you want to remove admin user {{ user }} ?{% endblocktrans %}</p>
16
      {% endblock %}
17
      <div class="buttons">
18
        <button>{% trans "Remove" %}</button>
19
        <a class="cancel" href="..">{% trans "Cancel" %}</a>
20
      </div>
21
    </div>
22
  </form>
23
{% endblock %}
src/authentic2/manager/templates/authentic2/manager/service_role_children.html
1
{% extends "authentic2/manager/service.html" %}
2
{% load i18n staticfiles django_tables2 %}
3

  
4
{% block breadcrumb %}
5
  {{ block.super }}
6
  <a href="{% url 'a2-manager-service-role-members' service_pk=view.kwargs.service_pk pk=object.pk %}">{{ object.name }}</a>
7
  <a href="#">{% trans "Children roles" %}</a>
8
{% endblock %}
9

  
10
{% block appbar %}
11
  {{ block.super }}
12
  {% if view.can_change and not object.is_internal %}
13
    <a href="{% url "a2-manager-service-role-managers" service_pk=view.kwargs.service_pk pk=object.pk %}">{% trans "Managers" %}</a>
14
  {% endif %}
15
  <a href="{% url "a2-manager-service-role-members" service_pk=view.kwargs.service_pk pk=object.pk %}">{% trans "Members" %}</a>
16
{% endblock %}
17

  
18
{% block sidebar %}
19
   {% include "authentic2/manager/search_form.html" %}
20
{% endblock %}
21

  
22
{% block main %}
23
 {% with row_link=1 url_name="a2-manager-role-members" %}
24
   {% render_table table "authentic2/manager/role_children_table.html" %}
25
 {% endwith %}
26

  
27
 {% if view.can_change %}
28
   <form method="post" class="manager-m2m-add-form">
29
           {% csrf_token %}
30
           {{ form }}
31
           <button>{% trans "Add" %}</button>
32
   </form>
33
 {% endif %}
34
{% endblock %}
src/authentic2/manager/templates/authentic2/manager/service_role_managers.html
1
{% extends "authentic2/manager/service.html" %}
2
{% load i18n staticfiles django_tables2 %}
3

  
4
{% block breadcrumb %}
5
  {{ block.super }}
6
  <a href="{% url "a2-manager-service-role-members" service_pk=view.kwargs.service_pk pk=role.pk %}">{{ role }}</a>
7
  <a href="#">{% trans "Managers" %}</a>
8
{% endblock %}
9

  
10
{% block appbar %}
11
  {{ block.super }}
12
  <a href="{% url "a2-manager-service-role-managers-roles" service_pk=view.kwargs.service_pk pk=role.pk %}">{% trans "Manager roles" %}</a>
13
{% endblock %}
14

  
15

  
16
{% block sidebar %}
17
   {% include "authentic2/manager/search_form.html" %}
18
{% endblock %}
19

  
20
{% block main %}
21
 {% with row_link=1 url_name="a2-manager-user-edit" %}
22
   {% render_table table "authentic2/manager/role_managers_table.html" %}
23
 {% endwith %}
24

  
25
 {% if view.can_change %}
26
   <form method="post" class="manager-m2m-add-form">
27
           {% csrf_token %}
28
           {{ form }}
29
           <button>{% trans "Add" %}</button>
30
   </form>
31
 {% endif %}
32
</div>
33
{% endblock %}
src/authentic2/manager/templates/authentic2/manager/service_role_managers_roles.html
1
{% extends "authentic2/manager/service.html" %}
2
{% load i18n staticfiles django_tables2 %}
3

  
4
{% block breadcrumb %}
5
  {{ block.super }}
6
  <a href="{% url "a2-manager-service-role-members" service_pk=view.kwargs.service_pk pk=role.pk %}">{{ role }}</a>
7
  <a href="#">{% trans "Manager roles" %}</a>
8
{% endblock %}
9

  
10
{% block appbar %}
11
  {{ block.super }}
12
  <a href="{% url "a2-manager-role-managers" pk=role.pk %}">{% trans "Managers" %}</a>
13
{% endblock %}
14

  
15
{% block sidebar %}
16
   {% include "authentic2/manager/search_form.html" %}
17
{% endblock %}
18

  
19
{% block main %}
20
 {% with row_link=1 url_name="a2-manager-role-members" %}
21
   {% render_table table "authentic2/manager/role_children_table.html" %}
22
 {% endwith %}
23

  
24
 {% if view.can_change %}
25
   <form method="post" class="manager-m2m-add-form">
26
           {% csrf_token %}
27
           {{ form }}
28
           <button>{% trans "Add" %}</button>
29
   </form>
30
 {% endif %}
31
</div>
32
{% endblock %}
src/authentic2/manager/templates/authentic2/manager/service_role_members.html
1
{% extends "authentic2/manager/service.html" %}
2
{% load i18n staticfiles django_tables2 %}
3

  
4
{% block breadcrumb %}
5
  {{ block.super }}
6
  <a href="#">{{ object }}</a>
7
{% endblock %}
8

  
9
{% block appbar %}
10
  {{ block.super }}
11
  {% if view.can_change and not object.is_internal %}
12
    <a href="{% url "a2-manager-service-role-managers" service_pk=view.kwargs.service_pk pk=object.pk %}">{% trans "Managers" %}</a>
13
  {% endif %}
14
  <a href="{% url "a2-manager-service-role-children" service_pk=view.kwargs.service_pk pk=object.pk %}">{% trans "Children roles" %}</a>
15
{% endblock %}
16

  
17
{% block sidebar %}
18
   {% include "authentic2/manager/search_form.html" %}
19
{% endblock %}
20

  
21
{% block main %}
22
 {% with row_link=1 url_name="a2-manager-user-edit" %}
23
   {% render_table table "authentic2/manager/role_members_table.html" %}
24
 {% endwith %}
25

  
26
 {% include "authentic2/manager/export_include.html" with export_view_name="a2-manager-role-members-export" %}
27

  
28
 {% if view.can_change %}
29
   <form method="post" class="manager-m2m-add-form">
30
           {% csrf_token %}
31
           {{ form }}
32
           <button>{% trans "Add" %}</button>
33
   </form>
34
 {% endif %}
35
</div>
36
{% endblock %}
src/authentic2/manager/templates/authentic2/service_role_managers.html
1
{% extends "authentic2/manager/service.html" %}
2
{% load i18n staticfiles django_tables2 %}
3

  
4
{% block breadcrumb %}
5
  {{ block.super }}
6
  <a href="{% url 'a2-manager-service-role-members' service_pk=view.kwargs.service_pk pk=object.pk %}">{{ object.name }}</a>
7
  <a href="#">{% trans "Managers" %}</a>
8
{% endblock %}
9

  
10
{% block page_title %}
11
  {% trans "Managers" %}
12
{% endblock %}
13

  
14
{% block appbar %}
15
  {{ block.super }}
16
  <a href="{% url "a2-manager-role-manager-roles" pk=role.pk %}">{% trans "Manager roles" %}</a>
17
{% endblock %}
18

  
19

  
20
{% block extra_scripts %}
21
  {{ block.super }}
22
  {{ choose_user_form.media }}
23
{% endblock %}
24

  
25
{% block main %}
26
 {% with row_link=1 url_name="a2-manager-user-edit" %}
27
   {% render_table table "authentic2/manager/role_managers_table.html" %}
28
 {% endwith %}
29

  
30
 {% if view.can_change %}
31
   <form method="post" class="manager-m2m-add-form">
32
           {% csrf_token %}
33
           {{ form }}
34
           <button>{% trans "Add" %}</button>
35
   </form>
36
 {% endif %}
37
</div>
38
{% endblock %}
src/authentic2/manager/templates/authentic2/service_role_members.html
1
{% extends "authentic2/manager/service.html" %}
2
{% load i18n staticfiles django_tables2 %}
3

  
4
{% block breadcrumb %}
5
  {{ block.super }}
6
  <a href="{% url 'a2-manager-service-role-members' service_pk=view.kwargs.service_pk pk=object.pk %}">{{ object.name }}</a>
7
{% endblock %}
8

  
9
{% block appbar %}
10
  {% if view.can_change and not object.admin_scope_ct_id %}
11
    <a href="{% url "a2-manager-service-role-managers" pk=object.pk %}">{% trans "Managers" %}</a>
12
  {% endif %}
13
  <a href="{% url "a2-manager-service-role-children" pk=object.pk %}">{% trans "Children roles" %}</a>
14
{% endblock %}
15

  
16

  
17
{% block extra_scripts %}
18
  {{ block.super }}
19
  {{ choose_user_form.media }}
20
{% endblock %}
21

  
22
{% block main %}
23
 {% with row_link=1 url_name="a2-manager-user-edit" %}
24
   {% render_table table "authentic2/manager/role_members_table.html" %}
25
 {% endwith %}
26

  
27
 {% include "authentic2/manager/export_include.html" with export_view_name="a2-manager-role-members-export" %}
28

  
29
 {% if view.can_change %}
30
   <form method="post" class="manager-m2m-add-form">
31
           {% csrf_token %}
32
           {{ form }}
33
           <button>{% trans "Add" %}</button>
34
   </form>
35
 {% endif %}
36
{% endblock %}
src/authentic2/manager/urls.py
35 35
            role_views.export, name='a2-manager-roles-export'),
36 36
        url(r'^roles/(?P<pk>\d+)/$', role_views.members,
37 37
            name='a2-manager-role-members'),
38
        url(r'^roles/(?P<pk>\d+)/children/$', role_views.children,
39
            name='a2-manager-role-children'),
40 38
        url(r'^roles/(?P<pk>\d+)/add-child/$', role_views.add_child,
41 39
            name='a2-manager-role-add-child'),
42 40
        url(r'^roles/(?P<pk>\d+)/add-parent/$', role_views.add_parent,
......
45 43
            role_views.remove_child, name='a2-manager-role-remove-child'),
46 44
        url(r'^roles/(?P<pk>\d+)/remove-parent/(?P<parent_pk>\d+)/$',
47 45
            role_views.remove_parent, name='a2-manager-role-remove-parent'),
46

  
47
        url(r'^roles/(?P<pk>\d+)/add-admin-user/$', role_views.add_admin_user,
48
            name='a2-manager-role-add-admin-user'),
49
        url(r'^roles/(?P<pk>\d+)/remove-admin-user/(?P<user_pk>\d+)/$',
50
            role_views.remove_admin_user, name='a2-manager-role-remove-admin-user'),
51

  
52
        url(r'^roles/(?P<pk>\d+)/add-admin-role/$', role_views.add_admin_role,
53
            name='a2-manager-role-add-admin-role'),
54
        url(r'^roles/(?P<pk>\d+)/remove-admin-role/(?P<role_pk>\d+)/$',
55
            role_views.remove_admin_role, name='a2-manager-role-remove-admin-role'),
56

  
48 57
        url(r'^roles/(?P<pk>\d+)/export/(?P<format>csv|json|html|ods)/$',
49 58
            role_views.members_export,
50 59
            name='a2-manager-role-members-export'),
......
55 64
        url(r'^roles/(?P<pk>\d+)/permissions/$', role_views.permissions,
56 65
            name='a2-manager-role-permissions'),
57 66

  
58
        url(r'^roles/(?P<pk>\d+)/managers/roles/$', role_views.managers_roles,
59
            name='a2-manager-role-manager-roles'),
60
        url(r'^roles/(?P<pk>\d+)/managers/$', role_views.managers,
61
            name='a2-manager-role-managers'),
62

  
63 67

  
64 68
        # Authentic2 organizational units
65 69
        url(r'^organizational-units/$', ou_views.listing,
......
78 82
            name='a2-manager-service'),
79 83
        url(r'^services/(?P<service_pk>\d+)/edit/$', service_views.edit,
80 84
            name='a2-manager-service-edit'),
81
        url(r'^services/(?P<service_pk>\d+)/(?P<pk>\d+)/$',
82
            service_views.role_members,
83
            name='a2-manager-service-role-members'),
84
        url(r'^services/(?P<service_pk>\d+)/(?P<pk>\d+)/children/$',
85
            service_views.role_children,
86
            name='a2-manager-service-role-children'),
87
        url(r'^services/(?P<service_pk>\d+)/(?P<pk>\d+)/managers/$',
88
            service_views.role_managers,
89
            name='a2-manager-service-role-managers'),
90
        url(r'^services/(?P<service_pk>\d+)/(?P<pk>\d+)/managers/roles/$',
91
            service_views.role_managers_roles,
92
            name='a2-manager-service-role-managers-roles'),
93 85

  
94 86
        # backoffice menu as json
95 87
        url(r'^menu.json$', views.menu_json),
96
-