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:
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:
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):
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
# 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",