Merge branch 'dae' into test
authorEric Mc Sween <eric.mcsween@auf.org>
Thu, 17 Nov 2011 21:29:03 +0000 (16:29 -0500)
committerEric Mc Sween <eric.mcsween@auf.org>
Thu, 17 Nov 2011 21:29:03 +0000 (16:29 -0500)
1  2 
project/dae/workflow.py

diff --combined project/dae/workflow.py
@@@ -10,7 -10,6 +10,7 @@@ def safe_create_groupe(name)
      ne peut se faire. (C'est le cas au syncdb, quand la table de groupe
      n'a pas été crée encore).
      """
 +    # TODO : Refactoring : utiliser project.lib.safe_create_groupe
      try:
          grp, created = Group.objects.get_or_create(name=name)
      except:
@@@ -22,6 -21,7 +22,7 @@@ grp_correspondants_rh = safe_create_gro
  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')
@@@ -32,6 -32,7 +33,7 @@@ dae_groupes = 
      grp_administrateurs,
      grp_directeurs_bureau,
      grp_drh,
+     grp_drh2,
      grp_accior,
      grp_abf,
      grp_haute_direction,
@@@ -44,6 -45,7 +46,7 @@@ POSTE_ETAT_ADMINISTRATEUR = 'ADMINISTRA
  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'
@@@ -59,6 -61,7 +62,7 @@@ POSTE_ACTION_ENVOYER_ADMINISTRATEUR = P
  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
@@@ -77,6 -80,7 +81,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",
@@@ -93,6 -97,7 +98,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",
@@@ -130,9 -135,14 +136,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 : {
      },
      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 : {
@@@ -193,86 -203,77 +204,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
@@@ -281,6 -282,7 +283,7 @@@ DOSSIER_ETAT_ADMINISTRATEUR = POSTE_ETA
  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
@@@ -311,6 -313,7 +314,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, ),
  
  
  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,