[#2355] Ajouter un état de validation: DRH-2
authorEric Mc Sween <eric.mcsween@auf.org>
Thu, 17 Nov 2011 21:28:13 +0000 (16:28 -0500)
committerEric Mc Sween <eric.mcsween@auf.org>
Thu, 17 Nov 2011 21:28:13 +0000 (16:28 -0500)
project/dae/managers.py
project/dae/workflow.py

index 7d8bf60..c38d8d0 100644 (file)
@@ -13,6 +13,7 @@ from workflow import dae_groupes, \
                      grp_administrateurs, \
                      grp_directeurs_bureau, \
                      grp_drh, \
+                     grp_drh2, \
                      grp_accior, \
                      grp_abf, \
                      grp_haute_direction, \
@@ -36,7 +37,7 @@ class SecurityManager(models.Manager):
                 q2 = Q(etat=etat)
                 if g == grp_service_utilisateurs:
                     q2 &= Q(**{self.prefixe_service: employe.service})
-                elif g not in (grp_accior, grp_abf, grp_haute_direction, grp_drh):
+                elif g not in (grp_accior, grp_abf, grp_haute_direction, grp_drh, grp_drh2):
                     q2 &= Q(**{self.prefixe_implantation: employe.implantation.region})
                 q |= q2
 
@@ -88,7 +89,7 @@ class SecurityManager(models.Manager):
         ############################################
         # TRAITEMENT DRH
         ############################################
-        if grp_drh in user.groups.all():
+        if grp_drh in user.groups.all() or grp_drh2 in user.groups.all():
             liste = self.get_query_set().all()
 
         return liste
index 77ec343..de0c3f5 100644 (file)
@@ -21,6 +21,7 @@ grp_correspondants_rh = safe_create_groupe(name='Correspondants RH')
 grp_administrateurs = safe_create_groupe(name='Administrateurs')
 grp_directeurs_bureau = safe_create_groupe(name='Directeurs de bureau')
 grp_drh = safe_create_groupe(name='DRH')
+grp_drh2 = safe_create_groupe(name='DRH-2')
 grp_accior = safe_create_groupe(name='ACCIOR')
 grp_abf = safe_create_groupe(name='ABF')
 grp_haute_direction = safe_create_groupe(name='Haute direction')
@@ -31,6 +32,7 @@ dae_groupes = (
     grp_administrateurs,
     grp_directeurs_bureau,
     grp_drh,
+    grp_drh2,
     grp_accior,
     grp_abf,
     grp_haute_direction,
@@ -43,6 +45,7 @@ POSTE_ETAT_ADMINISTRATEUR = 'ADMINISTRATEUR'
 POSTE_ETAT_DIRECTEUR_BUREAU = 'DIRECTEUR_BUREAU'
 POSTE_ETAT_SERVICE_UTILISATEURS = 'SRV_UTILISATEURS'
 POSTE_ETAT_DRH_CONTROLE = 'DRH_CONTROLE'
+POSTE_ETAT_DRH_2 = 'DRH_2'
 POSTE_ETAT_DEMANDE_MODIF = 'DEMANDE_MODIF'
 POSTE_ETAT_ACCIOR = 'ACCIOR'
 POSTE_ETAT_ABF = 'ABF'
@@ -58,6 +61,7 @@ POSTE_ACTION_ENVOYER_ADMINISTRATEUR = POSTE_ETAT_ADMINISTRATEUR
 POSTE_ACTION_ENVOYER_DIRECTEUR_BUREAU = POSTE_ETAT_DIRECTEUR_BUREAU
 POSTE_ACTION_ENVOYER_SRV_UTILISATEURS = POSTE_ETAT_SERVICE_UTILISATEURS
 POSTE_ACTION_ENVOYER_DRH_CONTROLE = POSTE_ETAT_DRH_CONTROLE
+POSTE_ACTION_ENVOYER_DRH_2 = POSTE_ETAT_DRH_2
 POSTE_ACTION_DEMANDE_MODIF = POSTE_ETAT_DEMANDE_MODIF
 POSTE_ACTION_RETOUR_DEMANDE_MODIF = 'RETOUR_DEMANDE_MODIF'
 POSTE_ACTION_ENVOYER_ACCIOR = POSTE_ETAT_ACCIOR
@@ -76,6 +80,7 @@ POSTE_ETATS = {
     POSTE_ETAT_DIRECTEUR_BUREAU : u"Directeur de bureau",
     POSTE_ETAT_SERVICE_UTILISATEURS : u"Service utilisateurs",
     POSTE_ETAT_DRH_CONTROLE : u"Validation DRH",
+    POSTE_ETAT_DRH_2 : u"Validation DRH 2",
     POSTE_ETAT_DEMANDE_MODIF : u"Demande de modification",
     POSTE_ETAT_ACCIOR : u"ACCIOR",
     POSTE_ETAT_ABF : u"ABF",
@@ -92,6 +97,7 @@ POSTE_ETATS_BOUTONS = {
     POSTE_ETAT_SERVICE_UTILISATEURS : u"Envoyer au service utilisateurs",
     POSTE_ETAT_ADMINISTRATEUR : u"Envoyer à l&#39;adminstrateur",
     POSTE_ETAT_DRH_CONTROLE : u"Envoyer à la DRH (validation)",
+    POSTE_ETAT_DRH_2 : u"Envoyer à DRH 2",
     POSTE_ETAT_DEMANDE_MODIF : u"Envoyer une demande de modification",
     POSTE_ETAT_ACCIOR : u"Envoyer à l&#39;ACCIOR",
     POSTE_ETAT_ABF : u"Envoyer à l&#39;ABF",
@@ -129,9 +135,14 @@ POSTE_ACTIONS = {
         'etat_initial' : (POSTE_ETAT_ADMINISTRATEUR, POSTE_ETAT_DIRECTEUR_BUREAU, POSTE_ETAT_SERVICE_UTILISATEURS),
         'etat_final' : POSTE_ETAT_DRH_CONTROLE,
     },
-    POSTE_ACTION_DEMANDE_MODIF : {
+    POSTE_ACTION_ENVOYER_DRH_2 : {
         'nom' : u'Envoyer',
         'etat_initial' : (POSTE_ETAT_DRH_CONTROLE,),
+        'etat_final' : POSTE_ETAT_DRH_2,
+    },
+    POSTE_ACTION_DEMANDE_MODIF : {
+        'nom' : u'Envoyer',
+        'etat_initial' : (POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_2),
         'etat_final': POSTE_ETAT_DEMANDE_MODIF,
     },
     POSTE_ACTION_RETOUR_DEMANDE_MODIF : {
@@ -141,7 +152,7 @@ POSTE_ACTIONS = {
     },
     POSTE_ACTION_ENVOYER_ACCIOR : {
         'nom' : u'Envoyer',
-        'etat_initial' : (POSTE_ETAT_DRH_CONTROLE,),
+        'etat_initial' : (POSTE_ETAT_DRH_2,),
         'etat_final' : POSTE_ETAT_ACCIOR,
     },
     POSTE_ACTION_ENVOYER_ABF : {
@@ -192,86 +203,77 @@ class PosteWorkflow(WorkflowMixin):
 
     def acces_directeur_bureau(self, action, request):
         user_groups = request.user.groups.all()
-        if is_user_dans_services_centraux(request.user) and grp_drh not in user_groups:
-            return False
-        for g in user_groups:
-            if g in (grp_administrateurs, grp_drh,):
-                return True
-        return False
+        return grp_drh in user_groups or grp_drh2 in user_groups or \
+                (is_user_dans_services_centraux(request.user) and 
+                 grp_administrateurs in user_groups)
 
     def acces_administrateur(self, action, request):
-        for g in request.user.groups.all():
-            if g in (grp_correspondants_rh, grp_drh,):
-                return True
-        return False
+        user_groups = request.user.groups.all()
+        return grp_correspondants_rh in user_groups or grp_drh in user_groups or \
+                grp_drh2 in user_groups
 
     def acces_drh_controle(self, action, request):
-        groups = request.user.groups.all()
-        return any(g in groups for g in [grp_directeurs_bureau, grp_service_utilisateurs, grp_drh]) or \
-               grp_administrateurs in groups and (action == POSTE_ACTION_RETOUR_DEMANDE_MODIF or
-                                                  is_user_dans_region(request.user))
+        user_groups = request.user.groups.all()
+        return grp_directeurs_bureau in user_groups or \
+                grp_service_utilisateurs in user_groups or \
+                grp_drh in user_groups or grp_drh2 in user_groups or \
+                (grp_administrateurs in user_groups and
+                 (action == POSTE_ACTION_RETOUR_DEMANDE_MODIF or
+                  is_user_dans_region(request.user)))
+
+    def acces_drh_2(self, action, request):
+        user_groups = request.user.groups.all()
+        return grp_drh in user_groups
 
     def acces_demande_modif(self, action, request):
-        return grp_drh in request.user.groups.all()
+        user_groups = request.user.groups.all()
+        return grp_drh in user_groups or grp_drh2 in user_groups
 
     def acces_srv_utilisateurs(self, action, request):
         if not is_user_dans_services_centraux(request.user):
             return False
-        for g in request.user.groups.all():
-            if g in (grp_administrateurs, grp_drh, ):
-                return True
-        return False
+        user_groups = request.user.groups.all()
+        return grp_administrateurs in user_groups or grp_drh in user_groups or \
+                grp_drh2 in user_groups
 
     def acces_accior(self, action, request):
-        for g in request.user.groups.all():
-            if g in (grp_drh, ):
-                return True
-        return False
+        user_groups = request.user.groups.all()
+        return grp_drh in user_groups or grp_drh2 in user_groups
 
     def acces_abf(self, action, request):
-        for g in request.user.groups.all():
-            if g in (grp_accior, grp_drh, ):
-                return True
-        return False
+        user_groups = request.user.groups.all()
+        return grp_accior in user_groups or grp_drh in user_groups or grp_drh2 in user_groups
 
     def acces_haute_direction(self, action, request):
-        for g in request.user.groups.all():
-            if g in (grp_abf, grp_drh, ):
-                return True
-        return False
+        user_groups = request.user.groups.all()
+        return grp_abf in user_groups or grp_drh in user_groups or grp_drh2 in user_groups
 
     def acces_region_finalisation(self, action, request):
-        for g in request.user.groups.all():
-            if g in (grp_haute_direction, grp_drh,):
-                return True
+        user_groups = request.user.groups.all()
+        return grp_haute_direction in user_groups or grp_drh in user_groups or \
+                grp_drh2 in user_groups
 
     def acces_drh_finalisation(self, action, request):
-        for g in request.user.groups.all():
-            if g in (grp_drh,):
-                return True
-        return False
+        user_groups = request.user.groups.all()
+        return grp_drh in user_groups or grp_drh2 in user_groups
 
     def acces_demande_justif(self, action, request):
-        groups = set(request.user.groups.all())
-        return any(g in groups for g in [grp_haute_direction, grp_drh])
+        user_groups = request.user.groups.all()
+        return grp_haute_direction in user_groups or grp_drh in user_groups or \
+                grp_drh2 in user_groups
 
     def acces_retour_demande_modif(self, action, request):
-        for g in request.user.groups.all():
-            if g in (grp_administrateurs, grp_drh,):
-                return True
-        return False
+        user_groups = request.user.groups.all()
+        return grp_administrateurs in user_groups or grp_drh in user_groups or \
+                grp_drh2 in user_groups
 
     def acces_retour_demande_justif(self, action, request):
-        for g in request.user.groups.all():
-            if g in (grp_drh, ):
-                return True
-        return False
+        user_groups = request.user.groups.all()
+        return grp_drh in user_groups or grp_drh2 in user_groups
 
     def acces_finaliser(self, action, request):
-        for g in request.user.groups.all():
-            if g in (grp_drh, ):
-                return True
-        return False
+        user_groups = request.user.groups.all()
+        return grp_drh in user_groups or grp_drh2 in user_groups
 
 
 #codes actions
@@ -280,6 +282,7 @@ DOSSIER_ETAT_ADMINISTRATEUR = POSTE_ETAT_ADMINISTRATEUR
 DOSSIER_ETAT_DIRECTEUR_BUREAU = POSTE_ETAT_DIRECTEUR_BUREAU
 DOSSIER_ETAT_SERVICE_UTILISATEURS = POSTE_ETAT_SERVICE_UTILISATEURS
 DOSSIER_ETAT_DRH_CONTROLE = POSTE_ETAT_DRH_CONTROLE
+DOSSIER_ETAT_DRH_2 = POSTE_ETAT_DRH_2
 DOSSIER_ETAT_DEMANDE_MODIF = POSTE_ETAT_DEMANDE_MODIF
 DOSSIER_ETAT_ACCIOR = POSTE_ETAT_ACCIOR
 DOSSIER_ETAT_ABF = POSTE_ETAT_ABF
@@ -310,6 +313,7 @@ MAP_GROUPE_ETATS_A_FAIRE = {
     grp_drh : (POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_FINALISATION,
                DOSSIER_ETAT_DRH_CONTROLE, DOSSIER_ETAT_DRH_FINALISATION,
                POSTE_ETAT_DEMANDE_JUSTIF, DOSSIER_ETAT_DEMANDE_JUSTIF),
+    grp_drh2 : (POSTE_ETAT_DRH_2, DOSSIER_ETAT_DRH_2),
     grp_accior : (POSTE_ETAT_ACCIOR, DOSSIER_ETAT_ACCIOR, ),
     grp_abf : (POSTE_ETAT_ABF, DOSSIER_ETAT_ABF, ),
     grp_haute_direction : (POSTE_ETAT_HAUTE_DIRECTION, DOSSIER_ETAT_HAUTE_DIRECTION, ),
@@ -317,16 +321,14 @@ MAP_GROUPE_ETATS_A_FAIRE = {
 
 
 ETATS_EDITABLE = (POSTE_ETAT_BROUILLON, POSTE_ETAT_ADMINISTRATEUR,
-                  POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DIRECTEUR_BUREAU,
-                  POSTE_ETAT_SERVICE_UTILISATEURS,
-                  POSTE_ETAT_DEMANDE_MODIF,
-                  POSTE_ETAT_DEMANDE_JUSTIF,
-                  DOSSIER_ETAT_BROUILLON,
+                  POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_2,
+                  POSTE_ETAT_DIRECTEUR_BUREAU,
+                  POSTE_ETAT_SERVICE_UTILISATEURS, POSTE_ETAT_DEMANDE_MODIF,
+                  POSTE_ETAT_DEMANDE_JUSTIF, DOSSIER_ETAT_BROUILLON,
                   DOSSIER_ETAT_ADMINISTRATEUR, DOSSIER_ETAT_DRH_CONTROLE,
-                  DOSSIER_ETAT_DIRECTEUR_BUREAU,
+                  DOSSIER_ETAT_DRH_2, DOSSIER_ETAT_DIRECTEUR_BUREAU,
                   DOSSIER_ETAT_SERVICE_UTILISATEURS,
-                  DOSSIER_ETAT_DEMANDE_MODIF,
-                  DOSSIER_ETAT_DEMANDE_JUSTIF,
+                  DOSSIER_ETAT_DEMANDE_MODIF, DOSSIER_ETAT_DEMANDE_JUSTIF,
 )
 
 ETATS_VALIDE = (DOSSIER_ETAT_REGION_FINALISATION, DOSSIER_ETAT_DRH_FINALISATION,