From 22516a91b5c880571424cd497bccb346c1d210d7 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 4 May 2011 00:22:51 -0400 Subject: [PATCH] Updated tools view to limit the tools a user can access by means of permission checking --- apps/main/views.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/apps/main/views.py b/apps/main/views.py index 2320d99197..cb2ed77479 100644 --- a/apps/main/views.py +++ b/apps/main/views.py @@ -1,6 +1,7 @@ from django.shortcuts import render_to_response from django.template import RequestContext from django.utils.translation import ugettext_lazy as _ +from django.core.exceptions import PermissionDenied from common.utils import exists_with_famfam, return_type from common.conf import settings as common_settings @@ -11,6 +12,7 @@ from ocr.conf import settings as ocr_settings from ocr.statistics import get_statistics as ocr_statistics from filesystem_serving.conf import settings as filesystem_serving_settings from dynamic_search.conf import settings as search_settings +from permissions.api import check_permissions from main.conf import settings as main_settings from main.api import diagnostics, tools @@ -116,13 +118,30 @@ def check_settings(request): return render_to_response('generic_list.html', context, context_instance=RequestContext(request)) + def tools_menu(request): + user_tools = {} + for namespace, values in tools.items(): + for link in values['links']: + try: + namespace = link.get('permissions', {}).get('namespace', None) + permissions = link.get('permissions', {}).get('permissions', []) + check_permissions(request.user, namespace, permissions) + user_tools[namespace] = { + 'title': values['title'] + } + user_links = user_tools[namespace].setdefault('links', []) + user_tools[namespace]['links'].append(link) + except PermissionDenied: + pass + return render_to_response('tools.html', { - 'blocks': tools, + 'blocks': user_tools, 'title': _(u'tools menu') }, context_instance=RequestContext(request)) + def statistics(request): blocks = [] blocks.append(documents_statistics())