# HG changeset patch # User cavaliet # Date 1389879222 -3600 # Node ID 091b29e07d4190fdabdf38d721c41bca637c65a1 # Parent 28afa1d75375d4ab697a9b4a3464dd553b0200b0 v0.46 : little debug 0 results diff -r 28afa1d75375 -r 091b29e07d41 src/jocondelab/__init__.py --- a/src/jocondelab/__init__.py Thu Jan 16 12:31:31 2014 +0100 +++ b/src/jocondelab/__init__.py Thu Jan 16 14:33:42 2014 +0100 @@ -1,4 +1,4 @@ -VERSION = (0, 45, 0, "final", 0) +VERSION = (0, 46, 0, "final", 0) def get_version(): diff -r 28afa1d75375 -r 091b29e07d41 src/jocondelab/views/front_office.py --- a/src/jocondelab/views/front_office.py Thu Jan 16 12:31:31 2014 +0100 +++ b/src/jocondelab/views/front_office.py Thu Jan 16 14:33:42 2014 +0100 @@ -12,6 +12,7 @@ from django.conf import settings from django.core.cache import cache from django.db.models import Q, Sum +from django.db.models.query import EmptyQuerySet from django.shortcuts import redirect from django.utils.http import urlencode from django.utils.translation import ugettext @@ -130,6 +131,9 @@ searchterms = queryterms queryobj = {'q': querystr} fs = list(DbpediaFields.objects.filter(label__in=queryterms, language_code=lang)) + # If fs is empty, qs has to be empty + if len(fs)==0: + qs = EmptyQuerySet() fields_hash = {} for fields in fs: @@ -139,7 +143,7 @@ context["wkinfo"] = fs[0] for term_ids in fields_hash.values(): qs = qs.filter(noticeterm__term_id__in=term_ids) - + count_qs = qs qs = qs.filter(noticeterm__term__validated=True) if thesaurus: @@ -163,24 +167,26 @@ context["searchterms_input"] = u";".join(searchterms) context["uri_cache"] = json.dumps(uri_cache) - #TODO: test if paginator has page to avoid error - paginator = JocondeFrontPaginator(qs.values_list('id', flat=True).order_by('id').distinct(), npp, count_qs) - context["page_count"] = paginator.num_pages - ids = paginator.page(min(int(page),paginator.num_pages)) - - if paginator.count: - count_log = math.log10(paginator.count) - if count_log<=1: + if type(qs) == EmptyQuerySet: + context["page_count"] = 0 + context["count"] = 0 + ns = [] + else: + paginator = JocondeFrontPaginator(qs.values_list('id', flat=True).order_by('id').distinct(), npp, count_qs) + context["page_count"] = paginator.num_pages + ids = paginator.page(min(int(page),paginator.num_pages)) + if paginator.count: + count_log = math.log10(paginator.count) + if count_log<=1: + context["count"] = paginator.count + elif 1 < count_log <= 3 : + context["count"] = paginator.count - (paginator.count%10) + else: + context["count"] = paginator.count - (paginator.count % 10**(int(count_log)-1) ) + else: context["count"] = paginator.count - elif 1 < count_log <= 3 : - context["count"] = paginator.count - (paginator.count%10) - else: - context["count"] = paginator.count - (paginator.count % 10**(int(count_log)-1) ) - else: - context["count"] = paginator.count - - # Now that we have the list of ids - ns = Notice.objects.filter(pk__in=ids).extra(select={'relative_url': '"core_noticeimage"."relative_url"'}).filter(image=True).filter(images__main=True).order_by('id') + # Now that we have the list of ids + ns = Notice.objects.filter(pk__in=ids).extra(select={'relative_url': '"core_noticeimage"."relative_url"'}).filter(image=True).filter(images__main=True).order_by('id') notices = [] termsbythesaurus = get_terms_by_thesaurus(ns, lang)