#4660
[auf_rh_dae.git] / project / dae / catalogues.py
index 9c1dc52..44fe786 100644 (file)
@@ -14,12 +14,22 @@ class Responsable(object):
             return rh.Poste.objects.none()
 
         self.q = q
-        postes = rh.Poste.objects.filter(
-            Q(nom__icontains=q) |
-            Q(type_poste__nom__icontains=q) |
-            Q(rh_dossiers__employe__nom__icontains=q) |
-            Q(rh_dossiers__employe__prenom__icontains=q)
-            ).distinct()
+        filtre = (
+            Q(poste__nom__icontains=q) |
+            Q(poste__type_poste__nom__icontains=q) |
+            Q(employe__nom__icontains=q) |
+            Q(employe__prenom__icontains=q)
+            )
+
+        dossiers = rh.Dossier.objects.\
+                select_related('poste', 'poste__type_poste').\
+                actifs().\
+                filter(filtre)
+        q = q.lower()
+        postes = list(set([d.poste for d in dossiers if q in
+            unicode(d.employe).lower() or \
+            q in d.poste.nom.lower() or \
+            q in d.poste.type_poste.nom.lower()]))
         return postes
 
     def format_result(self, poste):
@@ -28,7 +38,7 @@ class Responsable(object):
             Q(poste__nom__icontains=q) | Q(employe__nom__icontains=q) |
             Q(employe__prenom__icontains=q)
         )
-        dossiers = rh.Dossier.objects.filter(filtre)
+        dossiers = rh.Dossier.objects.actifs().filter(filtre)
 
         nom_poste = poste.nom
 
@@ -36,7 +46,7 @@ class Responsable(object):
             dossier = dossiers[0]
             employe = dossier.employe
         else:
-            dossiers = poste.rh_dossiers.all()
+            dossiers = poste.rh_dossiers.all().order_by('-date_debut')
             if len(dossiers) > 0:
                 employe = unicode(dossiers[0].employe)
             else: