From 018c8eafd8ad4b6e6769c73bac2acd41adeb9388 Mon Sep 17 00:00:00 2001 From: Davin Baragiotta Date: Wed, 30 May 2012 17:26:46 -0400 Subject: [PATCH] rh.decorators au niveau project --- project/decorators.py | 27 +++++++++++++++++++++++++++ project/menu.py | 3 ++- project/rh/admin.py | 2 +- project/rh/decorators.py | 33 --------------------------------- project/rh/views.py | 3 ++- 5 files changed, 32 insertions(+), 36 deletions(-) delete mode 100644 project/rh/decorators.py diff --git a/project/decorators.py b/project/decorators.py index 41c00dc..74c51f4 100644 --- a/project/decorators.py +++ b/project/decorators.py @@ -10,6 +10,8 @@ from django.contrib.auth.decorators import user_passes_test from django.core.urlresolvers import reverse from django.utils.http import urlquote +from project.groups import grp_drh, grp_drh2 + def redirect_interdiction(request, msg=u"Vous n'avez pas accès à cette page"): """ Redirection du la page de login avec un message d'erreur. @@ -19,5 +21,30 @@ def redirect_interdiction(request, msg=u"Vous n'avez pas accès à cette page"): tup = login_url, REDIRECT_FIELD_NAME, path messages.add_message(request, messages.ERROR, "Votre compte ne permet pas d'accéder à cette partie de l'application.") return HttpResponseRedirect('%s?%s=%s' % tup) + +def in_drh_or_admin(user): + """ + Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin + """ + groups = user.groups.all() + if user.is_superuser or \ + grp_drh in groups or \ + grp_drh2 in groups: + return True + else: + return False + +def drh_or_admin_required(fn): + """ + Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin + """ + def inner(request, *args, **kwargs): + user = request.user + if in_drh_or_admin(user): + return fn(request, *args, **kwargs) + msg = u"Votre compte ne permet pas d'accéder à " \ + u"cette partie de l'application." + return redirect_interdiction(request, msg) + return inner diff --git a/project/menu.py b/project/menu.py index be01a27..a5b26a9 100644 --- a/project/menu.py +++ b/project/menu.py @@ -12,7 +12,8 @@ from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ from admin_tools.menu import items, Menu -from project.rh.decorators import in_drh_or_admin + +from project.decorators import in_drh_or_admin class CustomMenu(Menu): """ diff --git a/project/rh/admin.py b/project/rh/admin.py index e94d91e..de0cb63 100644 --- a/project/rh/admin.py +++ b/project/rh/admin.py @@ -15,6 +15,7 @@ from auf.django.metadata.admin import \ AUF_METADATA_READONLY_FIELDS import auf.django.references.models as ref +from project.decorators import in_drh_or_admin from project.groups import grp_correspondants_rh from project.dae.utils import get_employe_from_user @@ -22,7 +23,6 @@ import project.rh.models as rh from project.rh.forms import \ ContratForm, AyantDroitForm, EmployeAdminForm, AjaxSelect, DossierForm from project.rh.change_list import ChangeList -from project.rh.decorators import in_drh_or_admin class ArchiveMixin(object): diff --git a/project/rh/decorators.py b/project/rh/decorators.py deleted file mode 100644 index 673b1c8..0000000 --- a/project/rh/decorators.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- encoding: utf-8 -*- - -from project.groups import grp_drh, grp_drh2 -from project.decorators import redirect_interdiction - - -def in_drh_or_admin(user): - """ - Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin - """ - groups = user.groups.all() - if user.is_superuser or \ - grp_drh in groups or \ - grp_drh2 in groups: - return True - else: - return False - - -def drh_or_admin_required(fn): - """ - Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin - """ - def inner(request, *args, **kwargs): - user = request.user - if in_drh_or_admin(user): - return fn(request, *args, **kwargs) - - msg = u"Votre compte ne permet pas d'accéder à " \ - u"cette partie de l'application." - return redirect_interdiction(request, msg) - - return inner diff --git a/project/rh/views.py b/project/rh/views.py index dc7ee21..7871960 100644 --- a/project/rh/views.py +++ b/project/rh/views.py @@ -21,11 +21,12 @@ from auf.django.references import models as ref from project.lib import get_employe_from_user from project.decorators import redirect_interdiction +from project.decorators import drh_or_admin_required from project.rh import models as rh from project.rh import graph as rh_graph from project.rh.change_list import RechercheTemporelle -from project.rh.decorators import drh_or_admin_required + from project.rh.lib import calc_remun from project.rh.masse_salariale import MasseSalariale from project.rh.templatetags.rapports import SortHeaders -- 1.7.10.4