Bläddra i källkod

[search] Fix modifying an existing collection template

Romain Rigaux 11 år sedan
förälder
incheckning
32cac55

+ 40 - 34
apps/search/src/search/models.py

@@ -273,14 +273,16 @@ class Collection(models.Model):
       props['collection'] = self.get_default(user)
     if 'layout' not in props:
       props['layout'] = []    
+      
+    if self.id:
+      props['collection']['id'] = self.id
+    if self.name:
+      props['collection']['name'] = self.name
+    if self.label:
+      props['collection']['label'] = self.label
+    # fields
+    # idField
 
-# to reset collection:
-#    props['collection'] = self.get_default(user) # to reset
-#    props['layout'] = []
-    
-    # TODO: Adding dynamic properties, merge smartly
-    # props['collection']['template']['extended_fields'] = self.fields_data(user)
-   
     return json.dumps(props)
 
   def get_default(self, user):      
@@ -474,33 +476,37 @@ def augment_solr_response2(response, collection, solr_query):
 
   if response and response.get('facet_counts'):
     # [{u'field': u'sun', u'type': u'query', u'id': u'67b43a63-ed22-747b-47e8-b31aad1431ea', u'label': u'sun'}
-    #for facet in collection['facets']:
-    category = 'field' # pie
-    if response['facet_counts']['facet_fields']:
-      # text, pie, graph
-      for name in response['facet_counts']['facet_fields']:
-        selected_field = fq.get(name, '')
-        collection_facet = get_facet_field(category, name, collection['facets'])
-        facet = {
-          'id': collection_facet['id'],
-          'field': name,
-          'type': category,
-          'label': collection_facet['label'],
-          'counts': pairwise2(name, selected_field, response['facet_counts']['facet_fields'][name]),
-        }
-        normalized_facets.append(facet)
-    if response['facet_counts']['facet_queries']:
-      category = 'query'
-      for name, value in response['facet_counts']['facet_queries'].iteritems():
-        collection_facet = get_facet_field(category, name, collection['facets'])
-        facet = {
-          'id': collection_facet['id'],
-          'query': name,
-          'type': category,
-          'label': name,
-          'count': value,
-        }        
-        normalized_facets.append(facet)
+    for facet in collection['facets']:
+      category = facet['type']
+      if category == 'pie-widget': # could be facet_range
+        category = 'field'
+        
+      if category == 'field' and response['facet_counts']['facet_fields']:
+        for name in response['facet_counts']['facet_fields']:
+          selected_field = fq.get(name, '') # todo with multi
+          collection_facet = get_facet_field(category, name, collection['facets'])
+          facet = {
+            'id': collection_facet['id'],
+            'field': name,
+            'type': category,
+            'label': collection_facet['label'],
+            'counts': pairwise2(name, selected_field, response['facet_counts']['facet_fields'][name]),
+            # add total result count?
+          }
+          normalized_facets.append(facet)
+      elif category == 'range' and response['facet_counts']['facet_ranges']:
+        pass
+      elif category == 'query' and response['facet_counts']['facet_queries']:
+        for name, value in response['facet_counts']['facet_queries'].iteritems():
+          collection_facet = get_facet_field(category, name, collection['facets'])
+          facet = {
+            'id': collection_facet['id'],
+            'query': name,
+            'type': category,
+            'label': name,
+            'count': value,
+          }        
+          normalized_facets.append(facet)          
 
   # TODO HTML escape docs!
   

+ 1 - 1
apps/search/src/search/templates/search2.mako

@@ -457,7 +457,7 @@ ${ commonheader(_('Search'), "search", user, "60px") | n,unicode }
       ${ _('Field') }: <input type="text" data-bind="value: field" />
     </div>  
 
-    <span data-bind="text: query" />: <span data-bind="text: count" />
+    <span data-bind="text: ko.toJSON(counts)" />
   </div>
   <!-- /ko -->
 </script>

+ 2 - 2
apps/search/static/js/search.ko.js

@@ -276,7 +276,7 @@ var Collection = function (vm, collection) {
     return _fields;
   });    
   
-  self.addDynamicFields = function () {
+  self.addDynamicFields = function () { // + Adding merge smartly if schema updated
     $.post("/search/index/" + self.id + "/fields/dynamic", {
       }, function (data) {
       if (data.status == 0) {
@@ -410,7 +410,7 @@ var SearchViewModel = function (collection_json, query_json) {
       layout: ko.mapping.toJSON(self.columns)
     },function (data) {
       if (data.status == 0) {
-    	collection.id(data.id);
+    	self.collection.id = data.id;
         $(document).trigger("info", data.message);
       }
       else {

+ 2 - 0
desktop/conf/pseudo-distributed.ini.tmpl

@@ -105,6 +105,8 @@
   # Size in KB/MB/GB for audit log to rollover.
   ## audit_log_max_file_size=100MB
 
+#poll_enabled=false
+
   # Administrators
   # ----------------
   [[django_admins]]