Bugfix: pièces jointes
[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.contrib.auth.decorators import login_required
8 from django.contrib.auth.views import login
9 from django.shortcuts import get_object_or_404
10
11 from project.decorators import redirect_interdiction
12
13 def index(request):
14 return login(request, template_name='index.html')
15
16 @login_required
17 def piece(request, filename):
18 """Téléchargement d'une pièce jointe à un poste."""
19 # compatibilité avec DAE prod avant sécurité
20 try:
21 app, model, id, f = filename.split('/')
22 except:
23 path = os.path.join(settings.PRIVE_MEDIA_ROOT, filename)
24 return sendfile(request, path)
25
26 application = __import__('project.' + app).models
27 if model == 'contrat':
28 # TODO definir peut-être un controle d'accès
29 piece = get_object_or_404(application.Contrat, fichier=filename)
30 return sendfile(request, piece.fichier.path)
31 if model == 'employe':
32 # TODO definir peut-être un controle d'accès
33 piece = get_object_or_404(application.EmployePiece, fichier=filename)
34 return sendfile(request, piece.fichier.path)
35 if model == 'poste':
36 piece = get_object_or_404(application.PostePiece, fichier=filename)
37 if application.Poste.objects.ma_region_ou_service(request.user).filter(id=piece.poste_id).exists():
38 return sendfile(request, piece.fichier.path)
39 else:
40 return redirect_interdiction(request)
41 if model == 'dossier':
42 piece = get_object_or_404(application.DossierPiece, fichier=filename)
43 if application.Dossier.objects.ma_region_ou_service(request.user).filter(id=piece.dossier_id).exists():
44 return sendfile(request, piece.fichier.path)
45 else:
46 return redirect_interdiction(request)
47