Merge branch 'master' of ssh://git.auf/auf_savoirs_en_partage_django
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / chercheurs / models.py
index 64cc835..193515a 100644 (file)
@@ -44,21 +44,25 @@ class ChercheurManager(models.Manager):
 class ChercheurQuerySet(models.query.QuerySet):
 
     def search(self, text):
-        qs = self
+        q = None
         for word in text.split():
-            qs = qs.filter(Q(personne__nom__icontains=word) |
-                           Q(personne__prenom__icontains=word) |
-                           Q(theme_recherche__icontains=word) |
-                           Q(etablissement_autre_nom__icontains=word) |
-                           Q(etablissement__nom__icontains=word) |
-                           Q(etablissement__pays__nom__icontains=word) |
-                           Q(discipline__nom__icontains=word) |
-                           Q(publication1__titre__icontains=word) |
-                           Q(publication2__titre__icontains=word) |
-                           Q(publication3__titre__icontains=word) |
-                           Q(publication4__titre__icontains=word) |
-                           Q(these__titre__icontains=word)).distinct()
-        return qs
+            part = (Q(personne__nom__icontains=word) |
+                    Q(personne__prenom__icontains=word) |
+                    Q(theme_recherche__icontains=word) |
+                    Q(etablissement_autre_nom__icontains=word) |
+                    Q(etablissement__nom__icontains=word) |
+                    Q(etablissement__pays__nom__icontains=word) |
+                    Q(discipline__nom__icontains=word) |
+                    Q(publication1__titre__icontains=word) |
+                    Q(publication2__titre__icontains=word) |
+                    Q(publication3__titre__icontains=word) |
+                    Q(publication4__titre__icontains=word) |
+                    Q(these__titre__icontains=word))
+            if q is None:
+                q = part
+            else:
+                q = q & part
+        return self.filter(q).distinct() if q is not None else self
 
 STATUT_CHOICES = (('enseignant', 'Enseignant-chercheur dans un établissement'), ('etudiant', 'Étudiant-chercheur doctorant'), ('independant', 'Chercheur indépendant docteur'))
 class Chercheur(models.Model):