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