retourne dans les recherches les résultats qui nont pas de listset
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / savoirs / lib / sep.py
index c53cc9b..7a6aae3 100644 (file)
@@ -14,8 +14,11 @@ class SEPEncoder:
         Elle permet de corrgier les problèmes d'encodage."""
         if str is None:
             return u""
-        else:
-            return str.replace(u"\x92", u"´")
+        
+        if str.__class__.__name__ == 'str':
+            str = str.decode('utf-8')
+        
+        return str.replace(u"\x92", u"´")
 
     def encode(self, field, data):
         """Encode la structure de donnée moissonnée pour la BD"""
@@ -54,7 +57,7 @@ class SEP:
     def _load (self, id):
         """Recupérer la structure de métadonnées pour un record selon un `id`."""
         r = Record.objects.get(id = id)
-        meta = {}
+        meta = {'id' : id}
         for k in META.keys ():
             if hasattr (r, k):
                 v = getattr (r, k)
@@ -67,6 +70,7 @@ class SEP:
         
         # doit avoir un id pour créer les relations multivaluées
         record.save()
+
         for set in  [ls for ls in ListSet.objects.all() if ls.spec in value]:
             record.listsets.add(set)
     
@@ -86,10 +90,9 @@ class SEP:
         for k in META.keys ():
             v = getattr (r, k)
             setattr (r, k, self.encoder.propre(v))
-
+        
         r.save()
 
-
     def _save (self, metadata):
         r = Record ()
         self._update_record(r, metadata)
@@ -149,11 +152,11 @@ class SEP:
 
         q = "SELECT r.id, (%s) AS score FROM savoirs_record AS r \
              LEFT JOIN savoirs_record_listsets AS rl ON r.id = rl.record_id \
-             JOIN savoirs_listset AS l ON rl.listset_id = l.spec \
+             LEFT JOIN savoirs_listset AS l ON rl.listset_id = l.spec \
              WHERE (%s) AND r.validated = 1 AND l.validated = 1 \
              GROUP BY r.id \
              HAVING score > 0 ORDER BY score DESC" % (m, m)
-
+        print q
         from django.db import connection, transaction
         cursor = connection.cursor()
         cursor.execute(q)