fix #1595, 1#596
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 6 Jun 2011 16:55:39 +0000 (12:55 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 6 Jun 2011 16:55:39 +0000 (12:55 -0400)
project/dae/utils.py
project/dae/workflow.py

index 0e48299..d8f765b 100644 (file)
@@ -18,6 +18,6 @@ def is_user_dans_services_centraux(user):
 
 def is_user_dans_region(user):
     employe = get_employe_from_user(user)
-    return not is_user_dans_service(user)
+    return not is_user_dans_services_centraux(user)
 
 
index 4efb576..bb1c55f 100644 (file)
@@ -2,7 +2,7 @@
 
 from django.contrib.auth.models import Group
 from auf.django.workflow.models import WorkflowMixin
-from utils import is_user_dans_services_centraux
+from utils import is_user_dans_services_centraux, is_user_dans_region
 
 def safe_create_groupe(name):
     """
@@ -117,7 +117,7 @@ POSTE_ACTIONS = {
     },
     POSTE_ACTION_ENVOYER_DRH_CONTROLE : {
         'nom' : u'Envoyer',
-        'etat_initial' : (POSTE_ETAT_DIRECTEUR_BUREAU, POSTE_ETAT_SERVICE_UTILISATEURS, POSTE_ETAT_REFUSE, ),
+        'etat_initial' : (POSTE_ETAT_ADMINISTRATEUR, POSTE_ETAT_DIRECTEUR_BUREAU, POSTE_ETAT_SERVICE_UTILISATEURS, POSTE_ETAT_REFUSE, ),
         'etat_final' : POSTE_ETAT_DRH_CONTROLE,
     },
     POSTE_ACTION_ENVOYER_ACCIOR : {
@@ -166,14 +166,15 @@ class PosteWorkflow(WorkflowMixin):
         abstract = True
 
     def acces_refuse(self, action, request):
+        klass = self.__class__
         user_groupes = request.user.groups.all()
         if (grp_accior in user_groupes or grp_afb in user_groupes) and len(user_groupes) == 1:
             return False
-        return True
 
         user_groupes = request.user.groups.all()
+        en_cours = klass.objects.mes_choses_a_faire(request.user).all()
         for g, etats in MAP_GROUPE_ETATS_A_FAIRE.items():
-            if g in user_groupes and self.etat in etats:
+            if g in user_groupes and self.etat in etats and self in en_cours:
                 return True
         return False
 
@@ -196,7 +197,7 @@ class PosteWorkflow(WorkflowMixin):
     @acces_etat_refuse
     def acces_drh_controle(self, action, request):
         for g in request.user.groups.all():
-            if g in (grp_directeurs_bureau, grp_service_utilisateurs, grp_drh,):
+            if g in (grp_directeurs_bureau, grp_service_utilisateurs, grp_drh,) or g == grp_administrateurs and is_user_dans_region(request.user):
                 return True
         return False