Browse Source

[search] Add enable/disable Facets option

Romain Rigaux 12 years ago
parent
commit
a8403fe

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

@@ -45,7 +45,6 @@ class SolrApi(object):
                 ('wt', 'json'),
                 ('rows', solr_query['rows']),
                 ('start', solr_query['start']),
-                ('facet', 'false'), #solr_query['facets'] == 1 and 'true' or 'false'
              )
 
       params += hue_core.get_query()
@@ -58,6 +57,7 @@ class SolrApi(object):
 
       # Debug for now
       print solr_query, params
+
       response = self._root.get('%(core)s/browse' % solr_query, params)
       return json.loads(response)
     except RestException, e:

+ 5 - 1
apps/search/src/search/models.py

@@ -49,6 +49,9 @@ class Facet(models.Model):
   def update_from_post(self, post_data):
     data_dict = json.loads(self.data)
 
+    if post_data.get('properties'):
+      data_dict['properties'] = json.loads(post_data['properties'])
+
     if post_data.get('fields'):
       data_dict['fields'] = json.loads(post_data['fields'])
 
@@ -65,7 +68,7 @@ class Facet(models.Model):
     data_dict = json.loads(self.data)
 
     params = (
-        ('facet', 'true'),
+        ('facet', data_dict.get('properties', {}).get('is_enabled') and 'true' or 'false'),
         ('facet.limit', 10),
         ('facet.mincount', 1),
         ('facet.sort', 'count'),
@@ -160,6 +163,7 @@ class CoreManager(models.Manager):
       return self.get(name=name)
     except Core.DoesNotExist:
       facets = Facet.objects.create(data=json.dumps({
+                   'properties': {'is_enabled': True},
                    'ranges': [],
                    'fields': [],
                    'dates': []

+ 13 - 3
apps/search/src/search/templates/admin_core_facets.mako

@@ -35,7 +35,15 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
     <form method="POST" class="form-horizontal" data-bind="submit: submit">
 
       <div class="section">
-        <div class="alert alert-info"><h4>${_('Field Facets')}</h4></div>
+        <div class="alert alert-info"><h4>${_('Facets')}</h4></div>
+        <div class="clearfix"></div>
+        <div class="miniform">
+          ${_('Facets enabled: ')}<input type="checkbox" data-bind="checked: isEnabled" />          
+        </div>
+      </div>
+
+      <div class="section">
+        <div class="alert alert-info" style="margin-top: 60px"><h4>${_('Field Facets')}</h4></div>
         <div data-bind="visible: fieldFacets().length == 0" style="padding-left: 10px;margin-bottom: 20px">
           <em>${_('There are currently no field Facets defined.')}</em>
         </div>
@@ -126,7 +134,6 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
 <script src="/static/ext/js/bootstrap-datepicker.min.js" type="text/javascript" charset="utf-8"></script>
 
 <script type="text/javascript">
-
   var DATE_FORMAT = "mm-dd-yyyy";
 
   var Facet = function (type, field, start, end, gap) {
@@ -152,9 +159,11 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
   }
 
   function ViewModel() {
-    var self = this;
+    var self = this;    
     self.fields = ko.observableArray(${ hue_core.fields | n,unicode });
 
+    self.isEnabled = ko.observable(${ hue_core.facets.data | n,unicode }.properties.is_enabled);
+
     self.fieldFacets = ko.observableArray(ko.utils.arrayMap(${ hue_core.facets.data | n,unicode }.fields, function (obj) {
       return new FieldFacet(obj.field);
     }));
@@ -221,6 +230,7 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
     self.submit = function () {
       $.ajax("${ url('search:admin_core_facets', core=hue_core.name) }", {
         data: {
+          'properties': ko.utils.stringifyJson({'is_enabled': self.isEnabled()}),
           'fields': ko.utils.stringifyJson(self.fieldFacets),
           'ranges': ko.utils.stringifyJson(self.rangeFacets),
           'dates': ko.utils.stringifyJson(self.dateFacets)

+ 3 - 4
apps/search/src/search/views.py

@@ -42,10 +42,9 @@ LOG = logging.getLogger(__name__)
 def index(request):
   cores = SolrApi(SOLR_URL.get()).cores()
   hue_cores = Core.objects.all()
-
-  if not hue_cores:
-    for core in cores['status']:
-      Core.objects.get_or_create(name=core)
+  
+  for core in cores['status']:
+    Core.objects.get_or_create(name=core)
 
   search_form = QueryForm(request.GET)
   response = {}