--- a/web/hdabo/views.py Wed Jun 22 12:21:00 2011 +0200
+++ b/web/hdabo/views.py Wed Jun 22 18:34:38 2011 +0200
@@ -7,16 +7,16 @@
from django.http import HttpResponseBadRequest
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
-from django.utils.http import urlquote, urlencode
+from django.utils.http import urlquote
from haystack.constants import DJANGO_ID
from haystack.query import SearchQuerySet
-from hdabo.wp_utils import process_tag
from hdabo.utils import OrderedDict
-from hdabo.wp_utils import (normalize_tag, query_wikipedia_title,
- get_or_create_tag)
+from hdabo.wp_utils import (normalize_tag, query_wikipedia_title,
+ get_or_create_tag, process_tag)
from models import Datasheet, Organisation, Tag, TagCategory, TaggedSheet
from wikitools import wiki
import django.utils.simplejson as json
+import re
@@ -103,20 +103,24 @@
nb_by_page = default_nb_py_page
num_page = 1
+ alltags = Tag.objects.all()
+
if searched and searched != "" :
+ searched = searched.strip()
+ regex = "^%s$" % (re.escape(searched).replace(re.escape(star_character),".*"))
# searched terms are word, word* or *word* (* = star_character)
- if searched.endswith(star_character) and not searched.startswith(star_character) :
- alltags = Tag.objects.filter(label__istartswith=searched[:-1]).order_by('label')
- elif not searched.endswith(star_character) and searched.startswith(star_character) :
- alltags = Tag.objects.filter(label__iendswith=searched[1:]).order_by('label')
- elif searched.endswith(star_character) and searched.startswith(star_character) :
- alltags = Tag.objects.filter(label__icontains=searched[1:-1]).order_by('label')
- else :
- alltags = Tag.objects.filter(label__iexact=searched).order_by('label')
- else :
- alltags = Tag.objects.order_by('label')
+# if searched.endswith(star_character) and not searched.startswith(star_character) :
+# alltags = alltags.filter(label__istartswith=searched[:-1])
+# elif not searched.endswith(star_character) and searched.startswith(star_character) :
+# alltags = alltags.filter(label__iendswith=searched[1:])
+# elif searched.endswith(star_character) and searched.startswith(star_character) :
+# alltags = alltags.filter(label__icontains=searched[1:-1])
+# else :
+# alltags = alltags.filter(label__iexact=searched)
+ alltags = alltags.filter(label__iregex=regex)
+
+ alltags = alltags.order_by('label')
- nb_total = len(alltags)
# We build the paginator for the requested list
if nb_by_page :
try:
@@ -132,6 +136,7 @@
num_page = 1
else :
num_page = 1
+
p = Paginator(alltags, nb_by_page)
current_page = p.page(num_page)
@@ -139,45 +144,45 @@
next_page = min(num_page + 1, p.num_pages)
last_page = p.num_pages
- search_def = (('0', urlquote('0'+star_character)),
- ('1', urlquote('1'+star_character)),
- ('2', urlquote('2'+star_character)),
- ('3', urlquote('3'+star_character)),
- ('4', urlquote('4'+star_character)),
- ('5', urlquote('5'+star_character)),
- ('6', urlquote('6'+star_character)),
- ('7', urlquote('7'+star_character)),
- ('8', urlquote('8'+star_character)),
- ('9', urlquote('9'+star_character)),
- ('A', urlquote('a'+star_character)),
- ('B', urlquote('b'+star_character)),
- ('C', urlquote('c'+star_character)),
- ('D', urlquote('d'+star_character)),
- ('E', urlquote('e'+star_character)),
- ('F', urlquote('f'+star_character)),
- ('G', urlquote('g'+star_character)),
- ('H', urlquote('h'+star_character)),
- ('I', urlquote('i'+star_character)),
- ('J', urlquote('j'+star_character)),
- ('K', urlquote('k'+star_character)),
- ('L', urlquote('l'+star_character)),
- ('M', urlquote('m'+star_character)),
- ('N', urlquote('n'+star_character)),
- ('O', urlquote('o'+star_character)),
- ('P', urlquote('p'+star_character)),
- ('Q', urlquote('q'+star_character)),
- ('R', urlquote('r'+star_character)),
- ('S', urlquote('s'+star_character)),
- ('T', urlquote('t'+star_character)),
- ('U', urlquote('u'+star_character)),
- ('V', urlquote('v'+star_character)),
- ('W', urlquote('w'+star_character)),
- ('X', urlquote('x'+star_character)),
- ('Y', urlquote('y'+star_character)),
- ('Z', urlquote('z'+star_character)))
+ search_def = (('0', urlquote('0' + star_character)),
+ ('1', urlquote('1' + star_character)),
+ ('2', urlquote('2' + star_character)),
+ ('3', urlquote('3' + star_character)),
+ ('4', urlquote('4' + star_character)),
+ ('5', urlquote('5' + star_character)),
+ ('6', urlquote('6' + star_character)),
+ ('7', urlquote('7' + star_character)),
+ ('8', urlquote('8' + star_character)),
+ ('9', urlquote('9' + star_character)),
+ ('A', urlquote('a' + star_character)),
+ ('B', urlquote('b' + star_character)),
+ ('C', urlquote('c' + star_character)),
+ ('D', urlquote('d' + star_character)),
+ ('E', urlquote('e' + star_character)),
+ ('F', urlquote('f' + star_character)),
+ ('G', urlquote('g' + star_character)),
+ ('H', urlquote('h' + star_character)),
+ ('I', urlquote('i' + star_character)),
+ ('J', urlquote('j' + star_character)),
+ ('K', urlquote('k' + star_character)),
+ ('L', urlquote('l' + star_character)),
+ ('M', urlquote('m' + star_character)),
+ ('N', urlquote('n' + star_character)),
+ ('O', urlquote('o' + star_character)),
+ ('P', urlquote('p' + star_character)),
+ ('Q', urlquote('q' + star_character)),
+ ('R', urlquote('r' + star_character)),
+ ('S', urlquote('s' + star_character)),
+ ('T', urlquote('t' + star_character)),
+ ('U', urlquote('u' + star_character)),
+ ('V', urlquote('v' + star_character)),
+ ('W', urlquote('w' + star_character)),
+ ('X', urlquote('x' + star_character)),
+ ('Y', urlquote('y' + star_character)),
+ ('Z', urlquote('z' + star_character)))
return render_to_response("all_tags.html",
- {'nb_total':nb_total, 'tags':current_page.object_list, 'current_page':current_page,
+ {'nb_total':p.count, 'tags':current_page.object_list, 'current_page':current_page,
'prev_page':prev_page, 'next_page':next_page, 'last_page':last_page,
'num_page':num_page, 'nb_by_page':nb_by_page, 'searched':searched,
'categories':json.dumps(get_categories()),