securisation de toutes les vues
[auf_rh_dae.git] / project / dae / views.py
index 16dbb28..b534850 100644 (file)
@@ -17,7 +17,10 @@ from reversion.models import Version
 from project.dae import models as dae
 from project.rh_v1 import models as rh
 
-from decorators import dae_groupe_requis, poste_dans_ma_region_ou_service, dossier_dans_ma_region_ou_service
+from decorators import dae_groupe_requis, \
+                       poste_dans_ma_region_ou_service, \
+                       dossier_dans_ma_region_ou_service, \
+                       employe_dans_ma_region_ou_service
 from forms import *
 
 @dae_groupe_requis
@@ -300,6 +303,11 @@ def employe(request, key):
 
     return HttpResponse(EmployeForm(initial=data, instance=employe, request=request).as_table())
 
+################################################################################
+# AJAX SECURISE
+################################################################################
+@dae_groupe_requis
+@employe_dans_ma_region_ou_service
 def dossier(request, poste_key, employe_key):
     """ Récupération AJAX du dossier pour la page d'embauche. """
     data = dict()
@@ -366,27 +374,7 @@ def dossier(request, poste_key, employe_key):
     return render_to_response('dae/embauche-dossier.html', vars,
                           RequestContext(request))
 
-def salaire(request, implantation, devise, classement):
-    if not devise or not classement:
-        raise Http404
-
-    taux_impl = rh.TauxChange.objects.filter(implantation=implantation) \
-                                     .order_by('-annee')
-    taux = rh.TauxChange.objects.filter(devise=devise).order_by('-annee')
-    vp = rh.ValeurPoint.objects.filter(implantation=implantation) \
-                               .order_by('-annee')
-    if vp.count() * taux.count() * taux_impl.count() == 0:
-        raise Http404
-
-    classement = get_object_or_404(rh.Classement, pk=classement)
-    taux, taux_impl, vp = taux[0].taux, taux_impl[0].taux, vp[0].valeur
-
-    salaire_euro = round(vp * classement.coefficient * taux_impl, 2)
-    data = dict(salaire_euro=salaire_euro, taux=taux,
-                salaire_devise=round(salaire_euro / taux, 2))
-
-    return HttpResponse(dumps(data))
-
+#  @Cette fonction est appelée à partir de fonctions déjà sécurisée
 def pre_filled_dossier(dossier_rh, employe_source, poste_rh):
     dossier = dae.Dossier()
 
@@ -428,39 +416,30 @@ def pre_filled_dossier(dossier_rh, employe_source, poste_rh):
 
     return dossier
 
-def coefficient(request):
+@dae_groupe_requis
+@dossier_dans_ma_region_ou_service
+def dossier_resume(request, dossier_id=None):
     """ Appel AJAX : 
-    input : classement
-    output : coefficient
+    input : valeur_point
+    output : devise, devise_code, taux_euro
     """
-    method = request.method
-    params = getattr(request, method, [])
-    data = dict()
-    if 'classement' in params and params.get('classement') is not u"":
-        classement = params.get('classement')
-        classement = rh.Classement.objects.get(pk=classement)
-        data['coefficient'] = classement.coefficient
-    else:
-        data['coefficient'] = 0
-    return HttpResponse(dumps(data))
-
+    try:
+        dossier = rh.Dossier.objects.get(id=dossier_id)
+    except:
+        return HttpResponseGone("Ce dossier n'est pas accessible")
 
-def liste_valeurs_point(request):
-    """ Appel AJAX : 
-    input : implantation_id
-    output : JSON liste de valeur point
-    """
-    method = request.method
-    params = getattr(request, method, [])
-    data = []
-    annee_courante = datetime.datetime.now().year
-    if 'implantation_id' in params and params.get('implantation_id') is not u"":
-        implantation_id = params.get('implantation_id')
-        objects = rh.ValeurPoint.objects.filter(implantation=implantation_id, annee__in=(annee_courante-1, annee_courante)).order_by("-annee")
+    data = {}
+    data['personne'] = unicode(dossier.employe)
+    data['implantation'] = dossier.implantation1.id
+    data['poste'] = u"%s %s" % (dossier.poste1.type_poste.nom, dossier.complement1)
+    data['montant'] = dossier.get_salaire()
+    salaire = dossier.get_dernier_salaire_remun()
+    if salaire is not None:
+        data['devise'] = dossier.get_dernier_salaire_remun().devise.id
+        data['montant_euros'] = dossier.get_dernier_salaire_remun().en_euros()
     else:
-        objects = rh.ValeurPoint.objects.filter(annee__in=(annee_courante-1, annee_courante)).order_by("-annee")
-    for o in objects:
-        data.append({'id' : o.id, 'label' : o.__unicode__(), })
+        data['devise'] = None
+        data['montant_euros'] = 0
     return HttpResponse(dumps(data))
 
 def liste_postes(request):
@@ -490,6 +469,27 @@ 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))
 
+
+################################################################################
+# AJAX SECURITE non nécessaire
+################################################################################
+def coefficient(request):
+    """ Appel AJAX : 
+    input : classement
+    output : coefficient
+    """
+    method = request.method
+    params = getattr(request, method, [])
+    data = dict()
+    if 'classement' in params and params.get('classement') is not u"":
+        classement = params.get('classement')
+        classement = rh.Classement.objects.get(pk=classement)
+        data['coefficient'] = classement.coefficient
+    else:
+        data['coefficient'] = 0
+    return HttpResponse(dumps(data))
+
+
 def devise(request):
     """ Appel AJAX : 
     input : valeur_point
@@ -541,26 +541,42 @@ def add_remun(request, dossier, type_remun):
     return render_to_response('dae/embauche-remun.html', dict(dossier=dossier),
                               RequestContext(request))
 
-def dossier_resume(request, dossier_id=None):
+def salaire(request, implantation, devise, classement):
+    if not devise or not classement:
+        raise Http404
+
+    taux_impl = rh.TauxChange.objects.filter(implantation=implantation) \
+                                     .order_by('-annee')
+    taux = rh.TauxChange.objects.filter(devise=devise).order_by('-annee')
+    vp = rh.ValeurPoint.objects.filter(implantation=implantation) \
+                               .order_by('-annee')
+    if vp.count() * taux.count() * taux_impl.count() == 0:
+        raise Http404
+
+    classement = get_object_or_404(rh.Classement, pk=classement)
+    taux, taux_impl, vp = taux[0].taux, taux_impl[0].taux, vp[0].valeur
+
+    salaire_euro = round(vp * classement.coefficient * taux_impl, 2)
+    data = dict(salaire_euro=salaire_euro, taux=taux,
+                salaire_devise=round(salaire_euro / taux, 2))
+
+    return HttpResponse(dumps(data))
+
+def liste_valeurs_point(request):
     """ Appel AJAX : 
-    input : valeur_point
-    output : devise, devise_code, taux_euro
+    input : implantation_id
+    output : JSON liste de valeur point
     """
-    try:
-        dossier = rh.Dossier.objects.get(id=dossier_id)
-    except:
-        return HttpResponseGone("Ce dossier n'est pas accessible")
-
-    data = {}
-    data['personne'] = unicode(dossier.employe)
-    data['implantation'] = dossier.implantation1.id
-    data['poste'] = u"%s %s" % (dossier.poste1.type_poste.nom, dossier.complement1)
-    data['montant'] = dossier.get_salaire()
-    salaire = dossier.get_dernier_salaire_remun()
-    if salaire is not None:
-        data['devise'] = dossier.get_dernier_salaire_remun().devise.id
-        data['montant_euros'] = dossier.get_dernier_salaire_remun().en_euros()
+    method = request.method
+    params = getattr(request, method, [])
+    data = []
+    annee_courante = datetime.datetime.now().year
+    if 'implantation_id' in params and params.get('implantation_id') is not u"":
+        implantation_id = params.get('implantation_id')
+        objects = rh.ValeurPoint.objects.filter(implantation=implantation_id, annee__in=(annee_courante-1, annee_courante)).order_by("-annee")
     else:
-        data['devise'] = None
-        data['montant_euros'] = 0
+        objects = rh.ValeurPoint.objects.filter(annee__in=(annee_courante-1, annee_courante)).order_by("-annee")
+    for o in objects:
+        data.append({'id' : o.id, 'label' : o.__unicode__(), })
     return HttpResponse(dumps(data))
+