diff --git a/HISTORY.rst b/HISTORY.rst index b1d5455..bbddeb3 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,6 +1,7 @@ History ======= +* v1.4.X (2014-XX-XX) Only accept as search keywords strings with len > 2. * v1.4.1 (2014-11-11) Improved general search engine, also events in `seguimientos` are queried. Autofocus on search box when page loads. Better highlighting of keywords. Check errors in datefield widget (advanced search). diff --git a/proyectos_de_ley/pdl/tests/test_views.py b/proyectos_de_ley/pdl/tests/test_views.py index 6ca4fec..0091d48 100644 --- a/proyectos_de_ley/pdl/tests/test_views.py +++ b/proyectos_de_ley/pdl/tests/test_views.py @@ -203,7 +203,7 @@ def test_congresista_view_pagination(self): self.assertTrue(b'endless_page_link' in response.content) def test_sanitize(self): - mystring = "'/\\*%" + mystring = "'/\\*% a e " expected = '' result = views.sanitize(mystring) self.assertEqual(expected, result) diff --git a/proyectos_de_ley/pdl/views.py b/proyectos_de_ley/pdl/views.py index 0b01142..1e2e291 100644 --- a/proyectos_de_ley/pdl/views.py +++ b/proyectos_de_ley/pdl/views.py @@ -1,6 +1,7 @@ # -*- encoding: utf-8 -*- from functools import reduce from itertools import chain +import re import unicodedata from django.shortcuts import render @@ -177,8 +178,7 @@ def find_in_db(query): :param query: user's keyword :return: QuerySet object with items or string if no results were found. """ - #TODO, remove trailing + from keywords before doing searches - keywords = query.split(" ") + keywords = query.strip().split(" ") with Timer() as t: proyecto_items = Proyecto.objects.filter( reduce(lambda x, y: x | y, [Q(short_url__icontains=word) for word in keywords]) | @@ -235,7 +235,14 @@ def sanitize(s): s = s.replace("=", "") s = s.replace("*", "") s = s.replace("%", "") - return s + new_s = [] + append = new_s.append + for i in s.split(" "): + if len(i.strip()) > 2: + append(i) + new_s = " ".join(new_s) + new_s = re.sub("\s+", " ", new_s) + return new_s def get_last_items():