[extensions-web] search: Extend versions before sending them to the query



commit 8e9ee410b82b4cfa44aaa693443b86d5a8dfc924
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Fri Apr 12 12:30:42 2013 -0400

    search: Extend versions before sending them to the query
    
    Otherwise, an extension with full 3.6 compatibility may not appear
    for a user using 3.6.1, or similar.

 sweettooth/extensions/search.py |    2 +-
 sweettooth/extensions/views.py  |   22 +++++++++++-----------
 2 files changed, 12 insertions(+), 12 deletions(-)
---
diff --git a/sweettooth/extensions/search.py b/sweettooth/extensions/search.py
index 1ac3c23..040aa7a 100644
--- a/sweettooth/extensions/search.py
+++ b/sweettooth/extensions/search.py
@@ -55,7 +55,7 @@ def combine_queries(op, queries):
     return reduce(make_query, queries)
 
 def make_version_queries(versions):
-    queries = [xapian.Query("V%s" % (v,)) for v in versions]
+    queries = [xapian.Query("V%s" % (v.version_string,)) for v in versions]
     return combine_queries(xapian.Query.OP_OR, queries)
 
 def enquire(querystring, versions=None):
diff --git a/sweettooth/extensions/views.py b/sweettooth/extensions/views.py
index a64ed86..69e20e7 100644
--- a/sweettooth/extensions/views.py
+++ b/sweettooth/extensions/views.py
@@ -117,12 +117,10 @@ def shell_update(request):
 
     return operations
 
-def ajax_query_params_query(request, n_per_page):
+def ajax_query_params_query(request, versions, n_per_page):
     version_qs = models.ExtensionVersion.objects.visible()
 
-    version_strings = request.GET.getlist('shell_version')
-    if version_strings and version_strings not in (['all'], ['-1']):
-        versions = set(get_versions_for_version_strings(version_strings))
+    if versions:
         version_qs = version_qs.filter(shell_versions__in=versions)
 
     queryset = models.Extension.objects.distinct().filter(versions__in=version_qs)
@@ -165,14 +163,10 @@ def ajax_query_params_query(request, n_per_page):
 
     return page_obj.object_list, paginator.num_pages
 
-def ajax_query_search_query(request, n_per_page):
+def ajax_query_search_query(request, versions, n_per_page):
     querystring = request.GET.get('search', '')
 
-    version_strings = request.GET.getlist('shell_version')
-    if version_strings in (['all'], ['-1']):
-        version_strings = None
-
-    database, enquire = search.enquire(querystring, version_strings)
+    database, enquire = search.enquire(querystring, versions)
 
     page = request.GET.get('page', 1)
     try:
@@ -208,12 +202,18 @@ def ajax_query_view(request):
     except (KeyError, ValueError), e:
         n_per_page = 10
 
+    version_strings = request.GET.getlist('shell_version')
+    if version_strings and version_strings not in (['all'], ['-1']):
+        versions = set(get_versions_for_version_strings(version_strings))
+    else:
+        versions = None
+
     if request.GET.get('search',  ''):
         func = ajax_query_search_query
     else:
         func = ajax_query_params_query
 
-    object_list, num_pages = func(request, n_per_page)
+    object_list, num_pages = func(request, versions, n_per_page)
 
     return dict(extensions=[ajax_details(e) for e in object_list],
                 total=len(object_list),


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]