Remis en place le filtre pour les ressources et activités non-validées.
authorEric Mc Sween <eric.mcsween@gmail.com>
Wed, 27 Oct 2010 21:28:19 +0000 (17:28 -0400)
committerEric Mc Sween <eric.mcsween@gmail.com>
Wed, 27 Oct 2010 21:28:19 +0000 (17:28 -0400)
auf_savoirs_en_partage/savoirs/forms.py
auf_savoirs_en_partage/savoirs/models.py
auf_savoirs_en_partage/savoirs/views.py

index 55ea04f..864de6d 100644 (file)
@@ -29,7 +29,7 @@ class RecordSearchForm(forms.Form):
     def get_query_set(self):
         """Retourne l'ensemble des ressources qui correspondent aux valeurs
            entrées dans le formulaire."""
-        records = Record.objects.all()
+        records = Record.objects.validated()
         if self.is_valid():
             query = self.cleaned_data['q']
             if query:
@@ -65,7 +65,7 @@ class ActualiteSearchForm(forms.Form):
     def get_query_set(self):
         """Retourne l'ensemble des actualités qui correspondent aux valeurs
            entrées dans le formulaire."""
-        actualites = Actualite.objects.all()
+        actualites = Actualite.objects.filter(visible=True)
         if self.is_valid():
             query = self.cleaned_data['q']
             if query:
index 3c3ee58..b1dbd0a 100644 (file)
@@ -200,6 +200,9 @@ class RecordManager(models.Manager):
     def search(self, text):
         return self.get_query_set().search(text)
 
+    def validated(self):
+        return self.get_query_set().validated()
+
 class RecordQuerySet(models.query.QuerySet):
 
     def search(self, text):
@@ -239,6 +242,16 @@ class RecordQuerySet(models.query.QuerySet):
             qs = qs.filter(title__icontains=word)
         return qs
             
+    def validated(self):
+        """Ne garder que les ressources validées et qui sont soit dans aucun
+           listset ou au moins dans un listset validé."""
+        qs = self.filter(validated=True)
+        qs = qs.extra(where=['''((savoirs_record.id NOT IN (SELECT record_id FROM savoirs_record_listsets)) OR
+                                 ((SELECT MAX(l.validated) FROM savoirs_listset l
+                                   INNER JOIN savoirs_record_listsets rl ON rl.listset_id = l.spec
+                                   WHERE rl.record_id = savoirs_record.id) = TRUE))'''])
+        return qs
+
 class Record(models.Model):
     
     #fonctionnement interne
index 7734388..a711cd5 100644 (file)
@@ -61,8 +61,8 @@ def nous_contacter (request):
 # recherche
 def recherche (request):
     query = request.GET.get("q", "")
-    ressources = Record.objects.search(query)
-    actualites = Actualite.objects.search(query)
+    ressources = Record.objects.validated().search(query)
+    actualites = Actualite.objects.filter(visible=1).search(query)
     search_regexp = build_search_regexp(query)
     return render_to_response(
         "savoirs/recherche.html",