import avec project.
[auf_rh_dae.git] / project / decorators.py
CommitLineData
e993f3dc 1# -*- encoding: utf-8 -*-
2"""
3Décorateurs AUF
4"""
5from django.contrib.auth.decorators import user_passes_test
6from django.core.urlresolvers import reverse
7from django.http import HttpResponseRedirect
02c1b3dc
JPC
8from django.conf import settings
9from django.contrib.auth import REDIRECT_FIELD_NAME
10from django.utils.http import urlquote
11from django.contrib import messages
e993f3dc 12
75f0e87b
DB
13from project.permissions import is_employe, is_admin
14
e993f3dc 15# Décorateurs des fonctions dans views (pour tester permissions dans views)
16
17def admin_required(fn):
18 def inner(request, *args, **kwargs):
19 user = request.user
20 if is_admin(user):
21 return fn(request, *args, **kwargs)
22 else :
02c1b3dc 23 return redirect_interdiction(request)
e993f3dc 24 return inner
02c1b3dc
JPC
25
26def redirect_interdiction(request, msg=u"Vous n'avez pas accès à cette page"):
27 """
28 Redirection du la page de login avec un message d'erreur.
29 """
30 login_url = settings.LOGIN_URL
31 path = urlquote(request.get_full_path())
32 tup = login_url, REDIRECT_FIELD_NAME, path
33 messages.add_message(request, messages.ERROR, "Votre compte ne permet pas d'accéder à cette partie de l'application.")
34 return HttpResponseRedirect('%s?%s=%s' % tup)
35
36