Groupe prit en charge dans la recherche globale
authorPA Parent <paparent@paparent.me>
Tue, 21 Jun 2011 20:50:08 +0000 (16:50 -0400)
committerPA Parent <paparent@paparent.me>
Tue, 21 Jun 2011 20:50:08 +0000 (16:50 -0400)
auf_savoirs_en_partage/chercheurs/models.py
auf_savoirs_en_partage/savoirs/models.py
auf_savoirs_en_partage/savoirs/views.py
auf_savoirs_en_partage/templates/savoirs/recherche.html

index 4462d62..97973ca 100644 (file)
@@ -365,11 +365,15 @@ class Expertise(models.Model):
     def __unicode__(self):
         return u"%s" % (self.nom)
     
-class GroupeChercheurManager(models.Manager):
+class GroupeManager(models.Manager):
+    def search(self, text):
+        return self.get_query_set().filter(nom__icontains=text)
+
+class GroupeChercheurManager(GroupeManager):
     def get_query_set(self):
         return super(GroupeChercheurManager, self).get_query_set().filter(groupe_chercheur=True)
 
-class DomaineRechercheManager(models.Manager):
+class DomaineRechercheManager(GroupeManager):
     def get_query_set(self):
         return super(DomaineRechercheManager, self).get_query_set().filter(groupe_chercheur=False)
 
@@ -388,7 +392,7 @@ class Groupe(models.Model):
     responsables = models.ManyToManyField(User, related_name='responsable_groupe', verbose_name='responsables', blank=True)
 
 
-    objects = models.Manager()
+    objects = GroupeManager()
     groupe_chercheur_objects = GroupeChercheurManager()
     domaine_recherche_objects = DomaineRechercheManager()
 
index 50dd855..cb55e86 100644 (file)
@@ -676,18 +676,21 @@ class PageStatique(models.Model):
 class GlobalSearchResults(object):
 
     def __init__(self, actualites=None, appels=None, evenements=None, 
-                 ressources=None, chercheurs=None, sites=None, sites_auf=None):
+                 ressources=None, chercheurs=None, groupes=None,
+                 sites=None, sites_auf=None):
         self.actualites = actualites
         self.appels = appels
         self.evenements = evenements
         self.ressources = ressources
         self.chercheurs = chercheurs
+        self.groupes = groupes
         self.sites = sites
         self.sites_auf = sites_auf
 
     def __nonzero__(self):
         return bool(self.actualites or self.appels or self.evenements or 
-                    self.ressources or self.chercheurs or self.sites or self.sites_auf)
+                    self.ressources or self.chercheurs or self.groupes or
+                    self.sites or self.sites_auf)
 
 class Search(models.Model):
     user = models.ForeignKey(User, editable=False)
@@ -739,19 +742,21 @@ class Search(models.Model):
         return model.objects.get(id=self.id)
                 
     def run(self, min_date=None, max_date=None):
-        from chercheurs.models import Chercheur
+        from chercheurs.models import Chercheur, Groupe
         from sitotheque.models import Site
 
         actualites = Actualite.objects
         evenements = Evenement.objects
         ressources = Record.objects
         chercheurs = Chercheur.objects
+        groupes = Groupe.objects
         sites = Site.objects
         if self.q:
             actualites = actualites.search(self.q)
             evenements = evenements.search(self.q)
             ressources = ressources.search(self.q)
             chercheurs = chercheurs.search(self.q)
+            groupes = groupes.search(self.q)
             sites = sites.search(self.q)
         if self.discipline:
             actualites = actualites.filter_discipline(self.discipline)
@@ -789,6 +794,7 @@ class Search(models.Model):
             evenements=evenements.order_by('-debut'),
             ressources=ressources.order_by('-id'),
             chercheurs=chercheurs.order_by('-date_modification'),
+            groupes=groupes.order_by('nom'),
             sites=sites.order_by('-date_maj'),
             sites_auf=sites_auf
         )
index b745e27..655442d 100644 (file)
@@ -100,6 +100,7 @@ def recherche(request, discipline=None, region=None):
         ressources=results.ressources[0:5], total_ressources=results.ressources.count(), 
         evenements=results.evenements[0:5], total_evenements=results.evenements.count(),
         chercheurs=results.chercheurs[0:10], total_chercheurs=results.chercheurs.count(),
+        groupes=results.groupes[0:10], total_groupes=results.groupes.count(),
         actualites=results.actualites[0:5], total_actualites=results.actualites.count(),
         appels=results.appels[0:5], total_appels=results.appels.count(),
         sites=results.sites[0:5], total_sites=results.sites.count(),
index 9344bc9..7eee6eb 100644 (file)
     </ul>
 {% endif %}
 
+{% if groupes %}
+    <h2>Groupes de chercheur ({{ groupes|length }} sur {{ total_groupes }})</h2>
+    <div class="sous-titre">
+        <a class="action" href="{% url chercheurs.views.groupe_index %}{{ briques_query_string }}"
+            >Voir tous les groupes de chercheur correspondant à cette recherche</a>
+    </div>
+    <ul>
+    {% for groupe in groupes %}
+        <li><a href="{% url chercheurs.views.groupe_retrieve groupe.id %}">{{ groupe }}</a></li>
+    {% endfor %}
+    </ul>
+{% endif %}
+
 {% if sites %}
     <h2>Sites de la sitothèque ({{ sites|length }} sur {{ total_sites }})</h2>
     <div class="sous-titre">