Merge branch 'hotfix/another_fix_for_comparison' into dev
[auf_rh_dae.git] / project / views.py
index 10efbef..fd83264 100644 (file)
@@ -4,18 +4,20 @@ import os
 from sendfile import sendfile
 
 from django.conf import settings
-from django.shortcuts import render_to_response
-from django.template import RequestContext
+from django.shortcuts import render
 from django.contrib.auth.decorators import login_required
-from django.shortcuts import redirect, render_to_response, get_object_or_404
+from django.http import Http404
 
-# pas de reference a DAE devrait etre refactorisé
-from project.dae.decorators import dae_groupe_requis
-from project.dae.decorators import redirect_interdiction
+from project.decorators import redirect_interdiction
+from project.rh import models as rh_models
+from project.dae import models as dae_models
 
-@dae_groupe_requis
+
+@login_required
 def index(request):
-    return render_to_response('index.html', {}, RequestContext(request))
+    c = {}
+    return render(request, 'index.html', c)
+
 
 @login_required
 def piece(request, filename):
@@ -27,25 +29,41 @@ def piece(request, filename):
         path = os.path.join(settings.PRIVE_MEDIA_ROOT, filename)
         return sendfile(request, path)
 
-    application = __import__(app).models
+    if app == 'rh':
+        application = rh_models
+    elif app == 'dae':
+        application = dae_models
+    else:
+        assert False
     if model == 'contrat':
         # TODO definir peut-être un controle d'accès
-        piece = get_object_or_404(application.Contrat, fichier=filename)
-        return sendfile(request, piece.fichier.path)
-    if model == 'employe':
+        for contrat in application.Contrat.objects.filter(fichier=filename):
+            if contrat.fichier.name == filename:
+                return sendfile(request, contrat.fichier.path)
+        raise Http404
+    elif model == 'employe':
         # TODO definir peut-être un controle d'accès
-        piece = get_object_or_404(application.EmployePiece, fichier=filename)
-        return sendfile(request, piece.fichier.path)
-    if model == 'poste':
-        piece = get_object_or_404(application.PostePiece, fichier=filename)
-        if application.Poste.objects.ma_region_ou_service(request.user).filter(id=piece.poste_id).exists():
-            return sendfile(request, piece.fichier.path)
-        else:
-            return redirect_interdiction(request)
-    if model == 'dossier':
-        piece = get_object_or_404(application.DossierPiece, fichier=filename)
-        if application.Dossier.objects.ma_region_ou_service(request.user).filter(id=piece.dossier_id).exists():
-            return sendfile(request, piece.fichier.path)
-        else:
-            return redirect_interdiction(request)
-
+        for piece in application.EmployePiece.objects.filter(fichier=filename):
+            if piece.fichier.name == filename:
+                return sendfile(request, piece.fichier.path)
+        raise Http404
+    elif model == 'poste':
+        for piece in application.PostePiece.objects.filter(fichier=filename):
+            if piece.fichier.name == filename:
+                if application.Poste.objects \
+                   .ma_region_ou_service(request.user) \
+                   .filter(id=piece.poste_id).exists():
+                    return sendfile(request, piece.fichier.path)
+                else:
+                    return redirect_interdiction(request)
+        raise Http404
+    elif model == 'dossier':
+        for piece in application.DossierPiece.objects.filter(fichier=filename):
+            if piece.fichier.name == filename:
+                if application.Dossier.objects \
+                   .ma_region_ou_service(request.user) \
+                   .filter(id=piece.dossier_id).exists():
+                    return sendfile(request, piece.fichier.path)
+                else:
+                    return redirect_interdiction(request)
+        raise Http404