[#2245] Liste des DAE finalisées
[auf_rh_dae.git] / project / dae / managers.py
index a48cb98..6abb6f7 100644 (file)
@@ -5,16 +5,16 @@ from django.db.models import Q
 from utils import get_employe_from_user
 from workflow import POSTE_ETAT_HAUTE_DIRECTION, \
                      POSTE_ETAT_ACCIOR, \
-                     POSTE_ETAT_AFB, \
-                     POSTE_ETAT_REFUSE, \
-                     DOSSIER_ETAT_REFUSE, \
+                     POSTE_ETAT_ABF, \
+                     DOSSIER_ETAT_ACCIOR, \
+                     DOSSIER_ETAT_ABF, \
                      MAP_GROUPE_ETATS_A_FAIRE
 from workflow import dae_groupes, \
                      grp_administrateurs, \
                      grp_directeurs_bureau, \
                      grp_drh, \
                      grp_accior, \
-                     grp_afb, \
+                     grp_abf, \
                      grp_haute_direction, \
                      grp_service_utilisateurs, \
                      grp_correspondants_rh
@@ -60,16 +60,12 @@ class SecurityManager(models.Manager):
         ############################################
         # TRAITEMENT NORMAL
         ############################################        
-        # SERVICE
-        if workflowed_model and grp_service_utilisateurs in user.groups.all():
-            q = Q(**{ self.prefixe_service : employe.service})
         # REGION
-        else:
-            q = Q(**{ self.prefixe_implantation : employe.implantation.region })
+        q = Q(**{ self.prefixe_implantation : employe.implantation.region })
 
-        #if workflowed_model:
-        #    q_non_refuse = ~Q(etat__in=(POSTE_ETAT_REFUSE, DOSSIER_ETAT_REFUSE,))
-        #    q = q & q_non_refuse
+        # SERVICE
+        if workflowed_model and grp_service_utilisateurs in user.groups.all():
+            q = q | Q(**{ self.prefixe_service : employe.service})
 
         liste = self.get_query_set().filter(q)
 
@@ -78,25 +74,25 @@ class SecurityManager(models.Manager):
         # TRAITEMENT ACCIOR
         ############################################        
         if workflowed_model and grp_accior in user.groups.all():
-            liste = self.get_query_set().filter(q_non_refuse)
+            liste = liste | self.get_query_set().filter(Q(etat__in=(POSTE_ETAT_ACCIOR, DOSSIER_ETAT_ACCIOR,)))
 
         ############################################
-        # TRAITEMENT AFB
+        # TRAITEMENT ABF
         ############################################        
-        if workflowed_model and grp_afb in user.groups.all():
-            liste = self.get_query_set().filter(q_non_refuse)
+        if workflowed_model and grp_abf in user.groups.all():
+            liste = self.get_query_set().all()
 
         ############################################
         # TRAITEMENT HAUTE DIRECTION
         ############################################        
         if workflowed_model and grp_haute_direction in user.groups.all():
-            liste = self.get_query_set().filter(q_non_refuse)
+            liste = self.get_query_set().all()
 
         ############################################
         # TRAITEMENT DRH
         ############################################        
         if grp_drh in user.groups.all():
-            liste = self.get_query_set()
+            liste = self.get_query_set().all()
 
         return liste
 
@@ -116,6 +112,7 @@ class PosteManager(SecurityManager):
             'id_rh',
             'responsable',
             'implantation',
+            'implantation.bureau_rattachement',
             'type_poste',
             'service',
             'classement_min',
@@ -131,6 +128,13 @@ class DossierManager(SecurityManager):
     prefixe_service = "poste__service"
     prefixe_implantation = "poste__implantation__region"
 
+    def get_query_set(self):
+        fkeys = (
+            'poste',
+        )
+        return super(DossierManager, self).get_query_set() \
+                                        .select_related(*fkeys).all()
+
     def ma_region_ou_service(self, user):
         return super(DossierManager, self).ma_region_ou_service(user).filter(poste__actif=True)