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):
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
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:
<tr>
<th>{{ form.responsable.label_tag }} :<br />{{ form.responsable.errors }}</th>
<td>
- <span class="info">Recherche intelligente : vous pouvez tapez le nom du poste, ou encore la dernière qui occupe celui-ci. Assurez-vous que le poste de responsable choisi dans la liste est reporté en dessous du champs de recherche, cela signifie qu'il est sélectionné.</span>
+ <span class="info">Recherche intelligente : vous pouvez tapez
+ le nom du poste, ou encore la personne qui occupe celui-ci. Assurez-vous que le poste de responsable choisi dans la liste est reporté en dessous du champs de recherche, cela signifie qu'il est sélectionné.</span>
{{ form.responsable }}
</td>
</tr>