Browse Source

HUE-1312 [search] Sort dropdown has no impact

Fixed on backend sorting query building mechanism
Allowed on admin page to add asc and desc of the same field
Enrico Berti 12 years ago
parent
commit
327f8a9

+ 1 - 1
apps/search/src/search/api.py

@@ -50,7 +50,7 @@ class SolrApi(object):
           ('start', solr_query['start']),
       )
 
-      params += hue_core.get_query()
+      params += hue_core.get_query(solr_query)
 
       fqs = solr_query['fq'].split('|')
       for fq in fqs:

+ 10 - 6
apps/search/src/search/models.py

@@ -166,13 +166,17 @@ class Sorting(models.Model):
     self.data = json.dumps(data_dict)
 
 
-  def get_query_params(self):
-    data_dict = json.loads(self.data)
-
+  def get_query_params(self, client_query=None):
     params = ()
+    data_dict = json.loads(self.data)
 
+    fields = []
     if data_dict.get('properties', {}).get('is_enabled') and 'true' or 'false':
-      if data_dict.get('fields'):
+      if client_query is not None and client_query.get('sort'):
+        params += (
+          ('sort', client_query.get('sort')),
+        )
+      elif data_dict.get('fields'):
         fields = ['%s %s' % (field['field'], field['asc'] and 'asc' or 'desc') for field in data_dict.get('fields')]
         params += (
           ('sort', ','.join(fields)),
@@ -254,8 +258,8 @@ class Collection(models.Model):
 
   objects = CollectionManager()
 
-  def get_query(self):
-    return self.facets.get_query_params() + self.result.get_query_params() + self.sorting.get_query_params()
+  def get_query(self, client_query=None):
+    return self.facets.get_query_params() + self.result.get_query_params() + self.sorting.get_query_params(client_query)
 
   def get_absolute_url(self):
     return reverse('search:admin_collection', kwargs={'collection_id': self.id})

+ 0 - 6
apps/search/src/search/templates/admin_collection_sorting.mako

@@ -129,11 +129,7 @@ ${ commonheader(_('Search'), "search", user, "40px") | n,unicode }
       return new SortingField(obj.field, obj.label, obj.asc);
     }));
 
-    // Remove already selected fields
     self.sortingFieldsList = ko.observableArray(${ hue_collection.fields | n,unicode });
-    $.each(self.sortingFields(), function(index, field) {
-      self.sortingFieldsList.remove(field.field);
-    });
 
     self.newFieldSelect = ko.observable();
     self.newFieldLabel = ko.observable("");
@@ -141,7 +137,6 @@ ${ commonheader(_('Search'), "search", user, "40px") | n,unicode }
 
     self.removeSortingField = function (field) {
       self.sortingFields.remove(field);
-      self.sortingFieldsList.push(field.field);
       self.sortingFieldsList.sort();
       if (self.sortingFields().length == 0) {
         self.isEnabled(false);
@@ -155,7 +150,6 @@ ${ commonheader(_('Search'), "search", user, "40px") | n,unicode }
       self.sortingFields.push(new SortingField(self.newFieldSelect(), self.newFieldLabel(), self.newFieldAscDesc()=="asc"));
       self.newFieldLabel("");
       self.newFieldAscDesc("asc");
-      self.sortingFieldsList.remove(self.newFieldSelect());
       self.isEnabled(true);
     };
 

+ 0 - 1
apps/search/src/search/views.py

@@ -79,7 +79,6 @@ def index(request):
 
   if hue_collection is not None:
     response = augment_solr_response(response, hue_collection.facets.get_data())
-    print response
 
   if request.GET.get('format') == 'json':
     return HttpResponse(json.dumps(response), mimetype="application/json")