From: Eric Mc Sween Date: Fri, 29 Oct 2010 20:20:14 +0000 (-0400) Subject: Bugfix: la recherche plantait quand on ne lui donnait pas de texte à chercher. X-Git-Url: https://git.auf.org/?p=auf_savoirs_en_partage_django.git;a=commitdiff_plain;h=3c23982e6f88fdf24aed326f7ea97e9b465a9ed0;hp=b1a717a8dbdee68ac5b352b5941eb28b17f813bb Bugfix: la recherche plantait quand on ne lui donnait pas de texte à chercher. --- diff --git a/auf_savoirs_en_partage/savoirs/models.py b/auf_savoirs_en_partage/savoirs/models.py index c0be775..bb50020 100644 --- a/auf_savoirs_en_partage/savoirs/models.py +++ b/auf_savoirs_en_partage/savoirs/models.py @@ -88,7 +88,7 @@ class EvenementQuerySet(models.query.QuerySet): q = part else: q = q & part - return qs.filter(q) + return qs.filter(q) if q is not None else qs def search_titre(self, text): qs = self @@ -267,15 +267,19 @@ class RecordQuerySet(models.query.QuerySet): q = part else: q = q & part - qs = qs.filter(q).distinct() + if q is not None: + qs = qs.filter(q).distinct() # On donne un point pour chaque mot présent dans le titre. - score_expr = ' + '.join(['(title LIKE %s)'] * len(words)) - score_params = ['%' + word + '%' for word in words] - return qs.extra( - select={'score': score_expr}, - select_params=score_params - ).order_by('-score') + if words: + score_expr = ' + '.join(['(title LIKE %s)'] * len(words)) + score_params = ['%' + word + '%' for word in words] + qs = qs.extra( + select={'score': score_expr}, + select_params=score_params + ).order_by('-score') + + return qs def search_auteur(self, text): qs = self diff --git a/auf_savoirs_en_partage/savoirs/views.py b/auf_savoirs_en_partage/savoirs/views.py index cb8de2f..1897b7a 100644 --- a/auf_savoirs_en_partage/savoirs/views.py +++ b/auf_savoirs_en_partage/savoirs/views.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- import datetime, simplejson, copy, vobject -from django.shortcuts import render_to_response, get_object_or_404 +from django.shortcuts import render_to_response, get_object_or_404, redirect from django.template import Context, RequestContext from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth.decorators import login_required @@ -57,6 +57,8 @@ def legal(request): # recherche def recherche(request): query = request.GET.get("q", "") + if not query.strip(): + return redirect('/') ressources = Record.objects.validated().search(query) actualites = Actualite.objects.filter(visible=1).search(query) evenements = Evenement.objects.filter(approuve=1).search(query) diff --git a/auf_savoirs_en_partage/sitotheque/models.py b/auf_savoirs_en_partage/sitotheque/models.py index 12cfd1b..e04ff77 100644 --- a/auf_savoirs_en_partage/sitotheque/models.py +++ b/auf_savoirs_en_partage/sitotheque/models.py @@ -43,7 +43,8 @@ class SiteQuerySet(models.query.QuerySet): q = part else: q = q & part - qs = qs.filter(q).distinct() + if q is not None: + qs = qs.filter(q).distinct() return qs class Site(models.Model):