protection etat WF
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Tue, 10 May 2011 21:36:01 +0000 (17:36 -0400)
committerNicolas Cadou <ncadou@cadou.ca>
Thu, 19 May 2011 00:12:22 +0000 (20:12 -0400)
buildout.cfg
project/dae/decorators.py
project/dae/managers.py
project/dae/views.py
project/dae/workflow.py

index 4882a7e..4f47352 100644 (file)
@@ -34,7 +34,7 @@ south = 0.7
 auf.django.skin = 0.15dev
 auf.django.auth = 0.5.2dev
 django-reversion = 1.3.3
-auf.django.workflow = 0.9dev
+auf.django.workflow = 0.10dev
 django-ajax-selects = 1.1.4
 reportlab = 2.5
 html5lib = 0.90
index a927fef..70174e1 100644 (file)
@@ -4,7 +4,7 @@ from django.contrib import messages
 from django.contrib.auth.decorators import user_passes_test
 from django.core.urlresolvers import reverse
 from django.http import HttpResponseRedirect
-from workflow import dae_groupes
+from workflow import dae_groupes, ETATS_EDITABLE
 from project.dae import models as dae
 from project.rh_v1 import models as rh
 
@@ -122,3 +122,15 @@ def employe_dans_ma_region_ou_service(fn):
             return redirect_interdiction(request, msg)
         
     return inner
+
+def dossier_est_modifiable(fn):
+    def inner(request, *args, **kwargs):
+        dossier_id = kwargs.get('dossier_id', None)
+        if dossier_id is not None:
+            dossier = dae.Dossier.objects.get(id=dossier_id)
+            if dossier.etat not in ETATS_EDITABLE:
+                msg = u"Ce dossier d'embauche ne peut plus être modifié."
+                return redirect_interdiction(request, msg)
+
+        return fn(request, *args, **kwargs)
+    return inner
index 36dc9a9..91c03a6 100644 (file)
@@ -52,7 +52,7 @@ class SecurityManager(models.Manager):
         # TRAITEMENT POLE FINANCIER
         ############################################        
         if workflowed_model and grp_pole_financier in user.groups.all():
-            liste = self.get_query_set().filter(etat=POSTE_ETAT_FINANCE)
+            liste = self.get_query_set().filter(etat=POSTE_ETAT_POLE_FINANCIER)
 
         ############################################
         # TRAITEMENT HAUTE DIRECTION
index 1750494..f7f658c 100644 (file)
@@ -25,7 +25,8 @@ 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, \
-                       employe_dans_ma_region_ou_service
+                       employe_dans_ma_region_ou_service, \
+                       dossier_est_modifiable
 from forms import *
 
 pisa.showLogging()
@@ -180,6 +181,7 @@ def embauche_consulter(request, dossier_id):
 
 @dae_groupe_requis
 @dossier_dans_ma_region_ou_service
+@dossier_est_modifiable
 def embauche(request, key=None, dossier_id=None):
     """ Formulaire d'autorisation d'embauche. """
     if not key:
index 414d160..6bfab83 100644 (file)
@@ -39,6 +39,8 @@ POSTE_ETAT_POLE_FINANCIER = 'FINANCE'
 POSTE_ETAT_HAUTE_DIRECTION = 'HAUTE_DIRECTION'
 POSTE_ETAT_DRH_FINALISATION = 'DRH_FINALISATION'
 
+ETATS_EDITABLE = (POSTE_ETAT_BROUILLON, POSTE_ETAT_ADMINISTRATEUR, POSTE_ETAT_DRH_CONTROLE)
+
 #codes actions
 POSTE_ACTION_ENVOYER_BROUILLON = POSTE_ETAT_BROUILLON
 POSTE_ACTION_ENVOYER_DIRECTEUR_BUREAU_OU_SERVICE = POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE
@@ -50,13 +52,13 @@ POSTE_ACTION_ENVOYER_DRH_FINALISATION = POSTE_ETAT_DRH_FINALISATION
 
 #libellés états
 POSTE_ETATS = {
-    POSTE_ETAT_BROUILLON : u'Brouillon',
-    POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE : u'Directeur de bureau, pôle ou service',
-    POSTE_ETAT_ADMINISTRATEUR : u'Adminstrateur',
-    POSTE_ETAT_DRH_CONTROLE : u'Contrôle DRH',
-    POSTE_ETAT_POLE_FINANCIER : u'Pôle financier',
-    POSTE_ETAT_HAUTE_DIRECTION : u'Haute direction',
-    POSTE_ETAT_DRH_FINALISATION : u'Finalisation DRH',
+    POSTE_ETAT_BROUILLON : u"Proposition",
+    POSTE_ETAT_DIRECTEUR_BUREAU_OU_SERVICE : u"Directeur de bureau, pôle ou service",
+    POSTE_ETAT_ADMINISTRATEUR : u"Validation de l'adminstrateur",
+    POSTE_ETAT_DRH_CONTROLE : u"Validation DRH",
+    POSTE_ETAT_POLE_FINANCIER : u"Pôle finances",
+    POSTE_ETAT_HAUTE_DIRECTION : u"Validation : Secrétaire général / Recteur",
+    POSTE_ETAT_DRH_FINALISATION : u'Retour à la DRH et région',
     }
 
 # définition du worflow séquentiel