74c51f434025794cda50b673215543d8add43cef
1 # -*- encoding: utf-8 -*-
5 from django
.http
import HttpResponseRedirect
6 from django
.conf
import settings
7 from django
.contrib
import messages
8 from django
.contrib
.auth
import REDIRECT_FIELD_NAME
9 from django
.contrib
.auth
.decorators
import user_passes_test
10 from django
.core
.urlresolvers
import reverse
11 from django
.utils
.http
import urlquote
13 from project
.groups
import grp_drh
, grp_drh2
15 def redirect_interdiction(request
, msg
=u
"Vous n'avez pas accès à cette page"):
17 Redirection du la page de login avec un message d'erreur.
19 login_url
= settings
.LOGIN_URL
20 path
= urlquote(request
.get_full_path())
21 tup
= login_url
, REDIRECT_FIELD_NAME
, path
22 messages
.add_message(request
, messages
.ERROR
, "Votre compte ne permet pas d'accéder à cette partie de l'application.")
23 return HttpResponseRedirect('%s?%s=%s' % tup
)
25 def in_drh_or_admin(user
):
27 Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin
29 groups
= user
.groups
.all()
30 if user
.is_superuser
or \
31 grp_drh
in groups
or \
37 def drh_or_admin_required(fn
):
39 Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin
41 def inner(request
, *args
, **kwargs
):
43 if in_drh_or_admin(user
):
44 return fn(request
, *args
, **kwargs
)
46 msg
= u
"Votre compte ne permet pas d'accéder à " \
47 u
"cette partie de l'application."
48 return redirect_interdiction(request
, msg
)