Merge branch 'master' into test
[auf_rh_dae.git] / project / dae / views.py
index 5072704..642baf9 100644 (file)
@@ -6,10 +6,9 @@ from auf.django.permissions.decorators import get_object
 from django.contrib import messages
 from django.contrib.auth.decorators import login_required, user_passes_test
 from django.contrib.contenttypes.models import ContentType
-from django.core.exceptions import MultipleObjectsReturned
 from django.core.paginator import Paginator, InvalidPage
 from django.db.models import Q, Count
-from django.http import Http404, HttpResponse, HttpResponseGone
+from django.http import Http404, HttpResponse, HttpResponseNotFound
 from django.shortcuts import redirect, render, get_object_or_404
 from sendfile import sendfile
 from simplejson import dumps
@@ -24,7 +23,8 @@ from project.dae.decorators import \
         dossier_est_modifiable, \
         poste_est_modifiable, get_contrat
 from project.dae.forms import FinancementFormSet, FinancementFormSetInitial
-from project.dae.forms import PosteComparaisonFormSet, PosteComparaisonFormSetInitial
+from project.dae.forms import \
+        PosteComparaisonFormSet, PosteComparaisonFormSetInitial
 from project.dae.forms import \
         PosteWorkflowForm, PosteForm, PostePieceFormSet, \
         DossierWorkflowForm, ChoosePosteForm, \
@@ -96,7 +96,6 @@ def poste_consulter(request, key):
     })
 
 
-
 @user_passes_test(lambda u: u.is_superuser)
 @drh_or_admin_required
 def poste_importer(request, id):
@@ -161,7 +160,6 @@ def poste(request, key=None):
     if creer_dossier_dae:
         data['type_intervention'] = request.GET['creer_dossier_dae']
 
-
     # Poste existant
     poste_rh = None
     if not new:
@@ -195,12 +193,13 @@ def poste(request, key=None):
         financements = []
         comparaisons = []
 
-
     if request.POST:
         data.update(dict(request.POST.items()))
         form = PosteForm(data, instance=poste, request=request)
         financementForm = FinancementForm(request.POST, instance=poste, )
-        piecesForm = PostePieceFormSet(request.POST, request.FILES, instance=poste, )
+        piecesForm = PostePieceFormSet(
+            request.POST, request.FILES, instance=poste
+        )
         comparaisons_formset = PosteComparaisonForm(
                 request.POST,
                 instance=poste,
@@ -249,7 +248,9 @@ def poste(request, key=None):
         piecesForm = PostePieceFormSet(instance=poste)
 
         if poste_rh is not None:
-            financementForm = FinancementForm(initial=financements, instance=poste)
+            financementForm = FinancementForm(
+                initial=financements, instance=poste
+            )
             comparaisons_formset = PosteComparaisonForm(
                 initial=comparaisons,
                 instance=poste,
@@ -350,6 +351,7 @@ def embauche_consulter(request, dossier_id):
         'importer': request.user.is_superuser,
     })
 
+
 @user_passes_test(lambda u: u.is_superuser)
 @dae_groupe_requis
 @dossier_dans_ma_region_ou_service
@@ -569,7 +571,10 @@ def embauches_finalisees(request):
         importees = search_form.cleaned_data.get('importees')
         if q:
             criteria = [
-                Q(poste__implantation__zone_administrative__nom__icontains=word) |
+                Q(**{
+                    'poste__implantation__zone_administrative__nom__icontains':
+                    word
+                }) |
                 Q(poste__implantation__zone_administrative__code=word) |
                 Q(poste__implantation__nom__icontains=word) |
                 Q(poste__nom__icontains=word) |
@@ -840,15 +845,18 @@ def pre_filled_dossier(dossier_rh, employe_source, poste_rh):
 
     return dossier
 
+
 def _get_salaire_traitement(dossier):
     """
     Type de remun traitement derniers commencant a la meme date
     """
     data = {}
     # Toutes les rémunérations d'un dossier
-    remunerations = [r for r in dossier.remunerations().order_by('-date_debut') if \
-            r.type.nature_remuneration == "Traitement"]
-    
+    remunerations = [
+        r for r in dossier.remunerations().order_by('-date_debut')
+        if r.type.nature_remuneration == "Traitement"
+    ]
+
     # On prend les dernières avec le postulat que les rémun à la même date
     # constituent le dernier salaire
     if len(remunerations) > 0:
@@ -870,14 +878,15 @@ def _get_salaire_traitement(dossier):
     data['montant_euros'] = montant_euros
     return data
 
+
 @dae_groupe_requis
 @vieux_dossier_dans_ma_region_ou_service
 def dossier_resume(request, dossier_id=None):
     try:
         dossier = rh.Dossier.objects.get(id=dossier_id)
     except:
-        return HttpResponseGone("Ce dossier n'est pas accessible")
-    
+        return HttpResponseNotFound("Ce dossier n'est pas accessible")
+
     data = {}
     data['personne'] = unicode(dossier.employe)
     if dossier.classement is not None:
@@ -900,9 +909,8 @@ def poste_resume(request, dossier_id=None):
     try:
         dossier = rh.Dossier.objects.get(id=dossier_id)
     except:
-        return HttpResponseGone("Ce dossier n'est pas accessible")
+        return HttpResponseNotFound("Ce dossier n'est pas accessible")
 
-    salaire = dossier.get_salaire()
     data = {}
     data['implantation'] = dossier.poste.implantation.id
     data['poste'] = dossier.poste.nom
@@ -984,8 +992,13 @@ def devise(request):
             taux = rh.TauxChange.objects.get(
                 annee=annee, devise=valeur_point.devise
             )
-        except MultipleObjectsReturned:
-            return HttpResponseGone(
+        except rh.TauxChange.DoesNotExist:
+            return HttpResponseNotFound(
+                u"Taux de change introuvable pour la devise %s "
+                u"pour l'année %d" % (valeur_point.devise.code, annee)
+            )
+        except rh.TauxChange.MultipleObjectsReturned:
+            return HttpResponseNotFound(
                 u"Il existe plusieurs taux pour la devise %s "
                 u"cette année-là : %s" % (valeur_point.devise.code, annee)
             )
@@ -995,7 +1008,7 @@ def devise(request):
         data['devise_code'] = taux.devise.code
         data['taux_euro'] = taux.taux
     else:
-        return HttpResponseGone("Vous devez choisir une valeur de point")
+        return HttpResponseNotFound("Vous devez choisir une valeur de point")
     return HttpResponse(dumps(data))
 
 
@@ -1013,7 +1026,7 @@ def devise_code(request):
         annee = date.today().year
         taux = rh.TauxChange.objects.filter(annee=annee, devise=devise)
         if len(taux) == 0:
-            return HttpResponseGone("Le taux n'est pas disponible")
+            return HttpResponseNotFound("Le taux n'est pas disponible")
         data['devise_code'] = devise.code
         data['taux_euro'] = taux[0].taux
     return HttpResponse(dumps(data))