--- 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():
--- 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)