[#2241] Changé la gestion des uploads pour utiliser django-sendfile
[auf_rh_dae.git] / project / dae / views.py
index 882d1bb..49d27f8 100644 (file)
@@ -16,9 +16,12 @@ from django.template import Context, RequestContext
 from django.template.loader import get_template
 from django.contrib import messages
 from django.conf import settings
+from django.contrib.auth.decorators import login_required
 
 from reversion.models import Version
 
+from sendfile import sendfile
+
 from project.dae import models as dae
 from project.rh_v1 import models as rh
 
@@ -73,6 +76,9 @@ def reponse_pdf(template_src, context_dict):
 def index(request):
     return render_to_response('dae/index.html', {}, RequestContext(request))
 
+
+### POSTE
+
 @dae_groupe_requis
 @poste_dans_ma_region_ou_service
 def poste_consulter(request, key):
@@ -175,6 +181,18 @@ def postes_liste(request):
 
     return render_to_response('dae/postes_liste.html', vars, RequestContext(request))
 
+@login_required
+def poste_piece(request, id):
+    """Téléchargement d'une pièce jointe à un poste."""
+    piece = get_object_or_404(dae.PostePiece, pk=id)
+    if dae.Poste.objects.ma_region_ou_service(request.user).filter(id=piece.poste_id).exists():
+        return sendfile(request, piece.fichier.path, attachment=True)
+    else:
+        return redirect_interdiction(request)
+
+
+### DOSSIER
+
 def filtered_type_remun():
     defaut = (2, 3, 8, 17) # salaire de base, indemnité de fonction, charges patronales
     return rh.TypeRemuneration.objects.filter(pk__in=defaut)
@@ -545,6 +563,15 @@ def liste_postes(request):
     data = [('', 'Nouveau poste')] +  sorted([('dae-%s' % p.id, label_poste_display(p)) for p in dae_ | copies] + [('rh-%s' % p.id, label_poste_display(p)) for p in rhv1], key=lambda t: t[1])
     return HttpResponse(dumps(data))
 
+@login_required
+def dossier_piece(request, id):
+    """Téléchargement d'une pièce jointe à un poste."""
+    piece = get_object_or_404(dae.DossierPiece, pk=id)
+    if dae.Dossier.objects.ma_region_ou_service(request.user).filter(id=piece.dossier_id).exists():
+        return sendfile(request, piece.fichier.path, attachment=True)
+    else:
+        return redirect_interdiction(request)
+
 
 ################################################################################
 # AJAX SECURITE non nécessaire