From f7d7a41586c068236bad9f6a6bcf4c7fd8dbf367 Mon Sep 17 00:00:00 2001 From: Hugo LEVY-FALK Date: Mon, 7 May 2018 19:33:06 +0200 Subject: [PATCH] Autorise plusieurs apps dans can_view_app --- re2o/acl.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/re2o/acl.py b/re2o/acl.py index bce941b5..0c20828f 100644 --- a/re2o/acl.py +++ b/re2o/acl.py @@ -248,10 +248,11 @@ def can_view_all(*targets): return acl_base_decorator('can_view_all', *targets, on_instance=False) -def can_view_app(app_name): - """Decorator to check if an user can view an application. +def can_view_app(*apps_name): + """Decorator to check if an user can view the applications. """ - assert app_name in sys.modules.keys() + for app_name in apps_name: + assert app_name in sys.modules.keys() def decorator(view): """The decorator to use on a specific view @@ -259,15 +260,16 @@ def can_view_app(app_name): def wrapper(request, *args, **kwargs): """The wrapper used for a specific request """ - app = sys.modules[app_name] - can, msg = app.can_view(request.user) - if can: - return view(request, *args, **kwargs) - messages.error(request, msg) - return redirect(reverse( - 'users:profil', - kwargs={'userid': str(request.user.id)} - )) + for app_name in apps_name: + app = sys.modules[app_name] + can, msg = app.can_view(request.user) + if not can: + messages.error(request, msg) + return redirect(reverse( + 'users:profil', + kwargs={'userid': str(request.user.id)} + )) + return view(request, *args, **kwargs) return wrapper return decorator