index improvement
[auf_rh_dae.git] / project / views.py
1 # -*- encoding: utf-8 -*-
2
3 import os
4 from sendfile import sendfile
5
6 from django.conf import settings
7 from django.shortcuts import render_to_response
8 from django.template import RequestContext
9 from django.contrib.auth.decorators import login_required
10 from django.shortcuts import redirect, render_to_response, get_object_or_404
11
12 # pas de reference a DAE devrait etre refactorisé
13 from project.dae.decorators import dae_groupe_requis
14 from project.dae.decorators import redirect_interdiction
15
16 def index(request):
17 return render_to_response('index.html', {}, RequestContext(request))
18
19 @login_required
20 def piece(request, filename):
21 """Téléchargement d'une pièce jointe à un poste."""
22 # compatibilité avec DAE prod avant sécurité
23 try:
24 app, model, id, f = filename.split('/')
25 except:
26 path = os.path.join(settings.PRIVE_MEDIA_ROOT, filename)
27 return sendfile(request, path)
28
29 application = __import__(app).models
30 if model == 'contrat':
31 # TODO definir peut-être un controle d'accès
32 piece = get_object_or_404(application.Contrat, fichier=filename)
33 return sendfile(request, piece.fichier.path)
34 if model == 'employe':
35 # TODO definir peut-être un controle d'accès
36 piece = get_object_or_404(application.EmployePiece, fichier=filename)
37 return sendfile(request, piece.fichier.path)
38 if model == 'poste':
39 piece = get_object_or_404(application.PostePiece, fichier=filename)
40 if application.Poste.objects.ma_region_ou_service(request.user).filter(id=piece.poste_id).exists():
41 return sendfile(request, piece.fichier.path)
42 else:
43 return redirect_interdiction(request)
44 if model == 'dossier':
45 piece = get_object_or_404(application.DossierPiece, fichier=filename)
46 if application.Dossier.objects.ma_region_ou_service(request.user).filter(id=piece.dossier_id).exists():
47 return sendfile(request, piece.fichier.path)
48 else:
49 return redirect_interdiction(request)
50