Merge branch 'master' into dae_refactoring_process
[auf_rh_dae.git] / project / dae / views.py
index d68a2f6..c4dbf2c 100644 (file)
@@ -35,9 +35,12 @@ from project.dae.mail import send_drh_finalisation_mail
 from project.dae.workflow import \
         DOSSIER_ETAT_FINALISE, DOSSIER_ETAT_REGION_FINALISATION, \
         DOSSIER_ETAT_DRH_FINALISATION, POSTE_ETAT_FINALISE
-from project.decorators import \
-        redirect_interdiction, drh_or_admin_required, in_drh_or_admin
+from project.decorators import redirect_interdiction,\
+        drh_or_admin_required,\
+        in_drh_or_admin,\
+        in_one_of_group
 from project.rh import models as rh
+from project import groups
 
 
 # Helpers
@@ -75,6 +78,7 @@ def poste_consulter(request, key):
             request.POST, instance=poste, request=request
         )
         if validationForm.is_valid():
+            validationForm.save()
             messages.add_message(
                 request, messages.SUCCESS, "La validation a été enregistrée."
             )
@@ -88,11 +92,12 @@ def poste_consulter(request, key):
         'poste': poste,
         'validationForm': validationForm,
         'comparaisons_internes': comparaisons_internes,
-        'importer': in_drh_or_admin(request.user)
+        'importer': request.user.is_superuser,
     })
 
 
 
+@user_passes_test(lambda u: u.is_superuser)
 @drh_or_admin_required
 def poste_importer(request, id):
     poste_dae = get_object_or_404(dae.Poste, id=id)
@@ -112,6 +117,11 @@ def poste_importer(request, id):
 @dae_groupe_requis
 @poste_dans_ma_region_ou_service
 @poste_est_modifiable
+@in_one_of_group((groups.CORRESPONDANT_RH,
+    groups.ADMINISTRATEURS,
+    groups.DIRECTEUR_DE_BUREAU,
+    groups.DRH_NIVEAU_1,
+    groups.DRH_NIVEAU_2))
 def poste(request, key=None):
     """ Formulaire pour un poste.
 
@@ -334,7 +344,7 @@ def embauche_consulter(request, dossier_id):
         'validationForm': validationForm,
         'comparaisons_internes': comparaisons_internes,
         'comparaisons': comparaisons,
-        'importer': in_drh_or_admin(request.user)
+        'importer': request.user.is_superuser,
     })
 
 @user_passes_test(lambda u: u.is_superuser)
@@ -556,8 +566,8 @@ def embauches_finalisees(request):
         importees = search_form.cleaned_data.get('importees')
         if q:
             criteria = [
-                Q(poste__implantation__region__nom__icontains=word) |
-                Q(poste__implantation__region__code=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) |
                 Q(employe__nom__icontains=word) |
@@ -579,7 +589,7 @@ def embauches_finalisees(request):
         dir = ''
     if tri == 'region':
         embauches = embauches.order_by(
-            dir + 'poste__implantation__region__nom'
+            dir + 'poste__implantation__zone_administrative__nom'
         )
     elif tri == 'implantation':
         embauches = embauches.order_by(dir + 'poste__implantation__nom')
@@ -1028,11 +1038,13 @@ def salaire(request, implantation, devise, classement):
             .order_by('-annee')
 
     if vp.count() == 0:
-        raise Exception(u"pas de valeur de point pour le couple\
-                implantation/devise (%s/%s)" % (implantation, devise))
+        status = u"pas de valeur de point pour le couple \
+implantation/devise (%s/%s)" % (implantation, devise)
+        return HttpResponse(dumps(dict(status=status)))
 
     if taux.count() == 0:
-        raise Exception(u"Pas de taux pour la devise %s" % devise)
+        status = u"Pas de taux pour la devise %s" % devise
+        return HttpResponse(dumps(dict(status=status)))
 
     classement = get_object_or_404(rh.Classement, pk=classement)
     if classement.coefficient is None:
@@ -1040,7 +1052,8 @@ def salaire(request, implantation, devise, classement):
     taux, vp = taux[0].taux, vp[0].valeur
 
     salaire_euro = round(vp * classement.coefficient * taux, 2)
-    data = dict(salaire_euro=salaire_euro, taux=taux,
+    data = dict(status='OK',
+                salaire_euro=salaire_euro, taux=taux,
                 salaire_devise=round(salaire_euro / taux, 2))
 
     return HttpResponse(dumps(data))