v0.46 : little debug 0 results V00.46
authorcavaliet
Thu, 16 Jan 2014 14:33:42 +0100
changeset 256 091b29e07d41
parent 255 28afa1d75375
child 257 7d1fb9841034
v0.46 : little debug 0 results
src/jocondelab/__init__.py
src/jocondelab/views/front_office.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():
--- 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)