Explorar o código

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 %!s(int64=12) %!d(string=hai) anos
pai
achega
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")