From 2239dee1361f06f88191fa5ce5b6b63a26e087bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 27 May 2015 18:16:07 +0200 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(+) diff --git a/src/authentic2/manager/urls.py b/src/authentic2/manager/urls.py index 7b6017e..679420f 100644 --- a/src/authentic2/manager/urls.py +++ b/src/authentic2/manager/urls.py @@ -63,6 +63,8 @@ urlpatterns = required( url(r'^organizational-units/(?P\d+)/delete/$', ou_views.delete, name='a2-manager-ou-delete'), + # backoffice menu as json + url(r'^menu.json$', views.menu_json), ) ) diff --git a/src/authentic2/manager/views.py b/src/authentic2/manager/views.py index 2645578..65d7be0 100644 --- a/src/authentic2/manager/views.py +++ b/src/authentic2/manager/views.py @@ -5,6 +5,7 @@ from django.views.generic import TemplateView, FormView, UpdateView, \ CreateView, DeleteView from django.views.generic.detail import SingleObjectMixin from django.http import HttpResponse, Http404 +from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ from django.utils.timezone import now from django.core.urlresolvers import reverse @@ -331,3 +332,33 @@ class HomepageView(PermissionMixin, ManagerMixin, TemplateView): 'auth.view_group', 'custom_user.view_user'] homepage = HomepageView.as_view() + + +def menu_json(request): + response = HttpResponse(content_type='application/json') + menu_entries = [] + if request.user.has_perm_any('a2_rbac.view_organizationalunit'): + menu_entries.append({ + 'label': force_text(_('Organizational units management')), + 'slug': 'organizational-units', + 'url': request.build_absolute_uri(reverse('a2-manager-ous')) + }) + if request.user.has_perm_any('custom_user.view_user'): + menu_entries.append({ + 'label': force_text(_('User management')), + 'slug': 'users', + 'url': request.build_absolute_uri(reverse('a2-manager-users')) + }) + if request.user.has_perm_any('a2_rbac.view_role'): + menu_entries.append({ + 'label': force_text(_('Roles management')), + 'slug': 'roles', + 'url': request.build_absolute_uri(reverse('a2-manager-roles')) + }) + json_str = json.dumps(menu_entries) + for variable in ('jsonpCallback', 'callback'): + if variable in request.GET: + json_str = '%s(%s);' % (request.GET[variable], json_str) + break + response.write(json_str) + return response -- 2.1.4