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