[#2245] Liste des DAE finalisées
[auf_rh_dae.git] / project / dae / managers.py
index c973ecd..6abb6f7 100644 (file)
@@ -2,26 +2,27 @@
 
 from django.db import models
 from django.db.models import Q
-from utils import is_user_dans_service, get_employe_from_user
+from utils import get_employe_from_user
 from workflow import POSTE_ETAT_HAUTE_DIRECTION, \
-                     POSTE_ETAT_POLE_FINANCIER, \
-                     POSTE_ETAT_REFUSE, \
-                     DOSSIER_ETAT_REFUSE, \
+                     POSTE_ETAT_ACCIOR, \
+                     POSTE_ETAT_ABF, \
+                     DOSSIER_ETAT_ACCIOR, \
+                     DOSSIER_ETAT_ABF, \
                      MAP_GROUPE_ETATS_A_FAIRE
 from workflow import dae_groupes, \
                      grp_administrateurs, \
-                     grp_gestionnaires, \
                      grp_directeurs_bureau, \
                      grp_drh, \
-                     grp_pole_financier, \
+                     grp_accior, \
+                     grp_abf, \
                      grp_haute_direction, \
                      grp_service_utilisateurs, \
-                     grp_directeurs_service, \
                      grp_correspondants_rh
 
 
 class SecurityManager(models.Manager):
 
+    prefixe_service = None
     prefixe_implantation = None
 
     def mes_choses_a_faire(self, user):
@@ -59,37 +60,39 @@ class SecurityManager(models.Manager):
         ############################################
         # TRAITEMENT NORMAL
         ############################################        
-
-        # SERVICE
-        if is_user_dans_service(user):
-            q = Q(**{ '%s' % self.prefixe_implantation : employe.implantation })
         # REGION
-        else:
-            q = Q(**{ '%s__region' % 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)
 
+
         ############################################
-        # TRAITEMENT POLE FINANCIER
+        # TRAITEMENT ACCIOR
         ############################################        
-        if workflowed_model and grp_pole_financier in user.groups.all():
-            liste = self.get_query_set().filter(q_non_refuse)
+        if workflowed_model and grp_accior in user.groups.all():
+            liste = liste | self.get_query_set().filter(Q(etat__in=(POSTE_ETAT_ACCIOR, DOSSIER_ETAT_ACCIOR,)))
+
+        ############################################
+        # TRAITEMENT ABF
+        ############################################        
+        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
 
@@ -98,7 +101,8 @@ class PosteManager(SecurityManager):
     """
     Chargement de tous les objets FK existants sur chaque QuerySet.
     """
-    prefixe_implantation = "implantation"
+    prefixe_service = "service"
+    prefixe_implantation = "implantation__region"
 
     def ma_region_ou_service(self, user):
         return super(PosteManager, self).ma_region_ou_service(user).filter(actif=True)
@@ -108,6 +112,7 @@ class PosteManager(SecurityManager):
             'id_rh',
             'responsable',
             'implantation',
+            'implantation.bureau_rattachement',
             'type_poste',
             'service',
             'classement_min',
@@ -120,7 +125,15 @@ class PosteManager(SecurityManager):
 
 
 class DossierManager(SecurityManager):
-    prefixe_implantation = "poste__implantation"
+    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)