Force le champ disciplines et regions pour les recherches
authorPA Parent <paparent@paparent.me>
Tue, 25 Oct 2011 20:51:42 +0000 (16:51 -0400)
committerPA Parent <paparent@paparent.me>
Tue, 25 Oct 2011 20:51:42 +0000 (16:51 -0400)
auf_savoirs_en_partage/chercheurs/models.py
auf_savoirs_en_partage/savoirs/models.py
auf_savoirs_en_partage/scripts/sphinx.conf.py.in
auf_savoirs_en_partage/sitotheque/models.py

index 6504ac3..4ce2964 100644 (file)
@@ -116,6 +116,9 @@ class ChercheurSphinxQuerySet(SEPSphinxQuerySet):
     def filter_region(self, region):
         return self.filter(region_id=region.id)
 
+    def filter_discipline(self, discipline):
+        return self.filter(discipline_id=discipline.id)
+
     def filter_groupe(self, groupe):
         return self.filter(groupe_ids=groupe.id)
 
index f7d5593..a0fe5c1 100644 (file)
@@ -204,6 +204,12 @@ class ActualiteSphinxQuerySet(SEPSphinxQuerySet):
     def filter_type(self, type):
         return self.filter(type=self.TYPE_CODES[type])
 
+    def filter_region(self, region):
+        return self.filter(region_ids=region.id)
+
+    def filter_discipline(self, discipline):
+        return self.filter(discipline_ids=discipline.id)
+
 class ActualiteManager(SEPManager):
     
     def get_query_set(self):
@@ -285,6 +291,12 @@ class EvenementSphinxQuerySet(SEPSphinxQuerySet):
     def filter_date_modification(self, min=None, max=None):
         return self._filter_date('date_modification', min=min, max=max)
 
+    def filter_region(self, region):
+        return self.add_to_query('@regions "%s"' % region.nom)
+
+    def filter_discipline(self, discipline):
+        return self.add_to_query('@disciplines "%s"' % discipline.nom)
+
 class EvenementManager(SEPManager):
 
     def get_query_set(self):
@@ -564,6 +576,13 @@ class RecordSphinxQuerySet(SEPSphinxQuerySet):
     def filter_modified(self, min=None, max=None):
         return self._filter_date('modified', min=min, max=max)
 
+    def filter_region(self, region):
+        return self.filter(region_ids=region.id)
+
+    def filter_discipline(self, discipline):
+        return self.filter(discipline_ids=discipline.id)
+
+
 class RecordManager(SEPManager):
 
     def get_query_set(self):
index 3196c86..a91fa2a 100644 (file)
@@ -122,7 +122,9 @@ emit_source('savoirsenpartage_actualites',
                       TO_DAYS(a.date_actualite) AS date,
                       CASE s.type WHEN 'actu' THEN 1 WHEN 'appels' THEN 2 END AS type,
                       GROUP_CONCAT(DISTINCT r.nom) AS regions, 
-                      GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines
+                      GROUP_CONCAT(DISTINCT r.id) AS region_ids,
+                      GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines,
+                      GROUP_CONCAT(DISTINCT d.id_discipline) AS discipline_ids
                FROM actualite a 
                INNER JOIN savoirs_sourceactualite s ON s.id = a.source_id
                LEFT JOIN actualite_regions ar ON ar.actualite_id = a.id_actualite 
@@ -132,6 +134,7 @@ emit_source('savoirsenpartage_actualites',
                WHERE a.visible_actualite
                GROUP BY a.id_actualite''',
             sql_query_info='SELECT * from actualite WHERE id_actualite=$id',
+            sql_attr_multi=['discipline_ids', 'region_ids'],
             sql_attr_uint=['date', 'type'],
            )
 
@@ -180,7 +183,8 @@ emit_source('savoirsenpartage_chercheurs',
                       pays.id AS pays_id,
                       r.nom AS region,
                       r.id AS region_id,
-                      GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines,
+                      d.nom_discipline AS discipline,
+                      d.id_discipline AS discipline_id,
                       GROUP_CONCAT(DISTINCT IFNULL(pub.titre, pub.publication_affichage)) AS publications,
                       t.titre AS these,
                       GROUP_CONCAT(DISTINCT g.nom) AS groupes,
@@ -213,7 +217,7 @@ emit_source('savoirsenpartage_chercheurs',
                GROUP BY c.personne_ptr_id''',
             sql_query_info='SELECT * from chercheurs_chercheur WHERE id=$id',
             sql_attr_multi=['groupe_ids'],
-            sql_attr_uint=['pays_id', 'region_id', 'nord_sud',
+            sql_attr_uint=['pays_id', 'region_id', 'discipline_id', 'nord_sud',
                            'date_modification', 'statut', 'expert',
                            'membre_instance_auf', 'expert_oif',
                            'membre_association_francophone',
@@ -228,19 +232,22 @@ emit_source('savoirsenpartage_sites',
                       s.auteur AS auteur,
                       s.mots_cles AS mots_cles,
                       GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines,
-                      GROUP_CONCAT(DISTINCT p.nom) AS pays,
-                      GROUP_CONCAT(DISTINCT p.id) AS pays_ids,
+                      GROUP_CONCAT(DISTINCT d.id_discipline) AS discipline_ids,
+                      p.nom AS pays,
+                      p.id AS pays_id,
                       GROUP_CONCAT(DISTINCT r.nom) AS regions,
+                      GROUP_CONCAT(DISTINCT r.id) AS region_ids,
                       TO_DAYS(s.date_maj) AS date_maj
                FROM sitotheque_site s
                LEFT JOIN sitotheque_site_discipline sd ON sd.site_id = s.id
                LEFT JOIN discipline d ON d.id_discipline = sd.discipline_id
-               LEFT JOIN ref_pays p ON p.id = s.pays
-               LEFT JOIN ref_region r ON r.id = p.region
+               LEFT JOIN ref_pays p ON p.code = s.pays
+               LEFT JOIN sitotheque_site_regions sr ON sr.site_id = s.id
+               LEFT JOIN ref_region r ON r.id = sr.region_id
                GROUP BY s.id''',
             'SELECT * FROM sitotheque_site WHERE id=$id',
-            sql_attr_multi=['pays_ids'],
-            sql_attr_uint=['date_maj']
+            sql_attr_multi=['discipline_ids', 'region_ids'],
+            sql_attr_uint=['date_maj', 'pays_id']
            )
 
 emit_index('savoirsenpartage_actualites')
index c6f3e71..e1b5e7f 100644 (file)
@@ -40,7 +40,13 @@ class SiteSphinxQuerySet(SEPSphinxQuerySet):
         return self._filter_date('date_maj', min=min, max=max)
 
     def filter_pays(self, pays):
-        return self.filter(pays_ids=pays.id)
+        return self.filter(pays_id=pays.id)
+
+    def filter_discipline(self, discipline):
+        return self.filter(discipline_ids=discipline.id)
+
+    def filter_region(self, region):
+        return self.filter(region_ids=region.id)
 
 class SiteManager(SEPManager):