# HG changeset patch # User ymh # Date 1308760478 -7200 # Node ID deaa9393e6a206b3a60e1cd4bf87e04649618c94 # Parent 6b1338c7964c306d5a021d06d3e31a8d0621f378 slightly improve queries diff -r 6b1338c7964c -r deaa9393e6a2 web/hdabo/templates/partial/tag_table.html --- a/web/hdabo/templates/partial/tag_table.html Wed Jun 22 12:21:00 2011 +0200 +++ b/web/hdabo/templates/partial/tag_table.html Wed Jun 22 18:34:38 2011 +0200 @@ -32,8 +32,8 @@ {% endif %} - {% if tag.dbpedia_uri and tag.dbpedia_uri != "" %} - + {% if t.tag.dbpedia_uri and t.tag.dbpedia_uri != "" %} + {% else %}   {% endif %} @@ -62,8 +62,8 @@ {% endif %} - {% if tag.dbpedia_uri and tag.dbpedia_uri != "" %} - + {% if t.tag.dbpedia_uri and t.tag.dbpedia_uri != "" %} + {% else %}   {% endif %} diff -r 6b1338c7964c -r deaa9393e6a2 web/hdabo/views.py --- 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()),