Projet

Général

Profil

0001-manager-add-menu.json-entry-point-7366.patch

Frédéric Péters, 27 mai 2015 19:00

Télécharger (2,79 ko)

Voir les différences:

Subject: [PATCH] manager: add menu.json entry point (#7366)

 src/authentic2/manager/urls.py  |  2 ++
 src/authentic2/manager/views.py | 31 +++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)
src/authentic2/manager/urls.py
63 63
        url(r'^organizational-units/(?P<pk>\d+)/delete/$', ou_views.delete,
64 64
            name='a2-manager-ou-delete'),
65 65

  
66
        # backoffice menu as json
67
        url(r'^menu.json$', views.menu_json),
66 68
    )
67 69
)
68 70

  
src/authentic2/manager/views.py
5 5
    CreateView, DeleteView
6 6
from django.views.generic.detail import SingleObjectMixin
7 7
from django.http import HttpResponse, Http404
8
from django.utils.encoding import force_text
8 9
from django.utils.translation import ugettext_lazy as _
9 10
from django.utils.timezone import now
10 11
from django.core.urlresolvers import reverse
......
331 332
                   'auth.view_group', 'custom_user.view_user']
332 333

  
333 334
homepage = HomepageView.as_view()
335

  
336

  
337
def menu_json(request):
338
    response = HttpResponse(content_type='application/json')
339
    menu_entries = []
340
    if request.user.has_perm_any('a2_rbac.view_organizationalunit'):
341
        menu_entries.append({
342
            'label': force_text(_('Organizational units management')),
343
            'slug': 'organizational-units',
344
            'url': request.build_absolute_uri(reverse('a2-manager-ous'))
345
            })
346
    if request.user.has_perm_any('custom_user.view_user'):
347
        menu_entries.append({
348
            'label': force_text(_('User management')),
349
            'slug': 'users',
350
            'url': request.build_absolute_uri(reverse('a2-manager-users'))
351
            })
352
    if request.user.has_perm_any('a2_rbac.view_role'):
353
        menu_entries.append({
354
            'label': force_text(_('Roles management')),
355
            'slug': 'roles',
356
            'url': request.build_absolute_uri(reverse('a2-manager-roles'))
357
            })
358
    json_str = json.dumps(menu_entries)
359
    for variable in ('jsonpCallback', 'callback'):
360
        if variable in request.GET:
361
            json_str = '%s(%s);' % (request.GET[variable], json_str)
362
            break
363
    response.write(json_str)
364
    return response
334
-