Commit | Line | Data |
---|---|---|
e993f3dc | 1 | # -*- encoding: utf-8 -*- |
2 | """ | |
3 | Décorateurs AUF | |
4 | """ | |
5 | from django.contrib.auth.decorators import user_passes_test | |
6 | from django.core.urlresolvers import reverse | |
7 | from django.http import HttpResponseRedirect | |
02c1b3dc JPC |
8 | from django.conf import settings |
9 | from django.contrib.auth import REDIRECT_FIELD_NAME | |
10 | from django.utils.http import urlquote | |
11 | from django.contrib import messages | |
e993f3dc | 12 | |
75f0e87b DB |
13 | from project.permissions import is_employe, is_admin |
14 | ||
e993f3dc | 15 | # Décorateurs des fonctions dans views (pour tester permissions dans views) |
16 | ||
17 | def 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 | |
26 | def 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 |