소스 검색

[search] Set range facet as day

Romain Rigaux 12 년 전
부모
커밋
197d719

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

@@ -15,6 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from datetime import datetime
 from lxml import etree
 import re
 
@@ -48,7 +49,7 @@ class Facet(models.Model):
 
   def update_from_post(self, post_data):
     data_dict = json.loads(self.data)
-
+    print data_dict
     if post_data.get('properties'):
       data_dict['properties'] = json.loads(post_data['properties'])
 
@@ -90,10 +91,12 @@ class Facet(models.Model):
 
     if data_dict.get('dates'):
       for field_facet in data_dict['dates']:
+        start = datetime.strptime(field_facet['start'], '%m-%d-%Y') - datetime.now()
+        end = datetime.strptime(field_facet['end'], '%m-%d-%Y') - datetime.now()
         range_facets = tuple([
                            ('facet.date', field_facet['field']),
-                           ('f.%s.facet.date.start' % field_facet['field'], 'NOW/DAY-305DAYS'),
-                           ('f.%s.facet.date.end' % field_facet['field'], 'NOW/DAY+1DAY'),
+                           ('f.%s.facet.date.start' % field_facet['field'], 'NOW/DAY%sDAYS' % start.days),
+                           ('f.%s.facet.date.end' % field_facet['field'], 'NOW/DAY%sDAY' % end.days),
                            ('f.%s.facet.date.gap' % field_facet['field'], '+%sDAY' % field_facet['gap']),]
                         )
         params += range_facets

+ 7 - 7
apps/search/src/search/templates/admin_core_facets.mako

@@ -38,7 +38,7 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
         <div class="alert alert-info"><h4>${_('Facets')}</h4></div>
         <div class="clearfix"></div>
         <div class="miniform">
-          ${_('Enabled')} <input type="checkbox" data-bind="checked: isEnabled" />          
+          ${_('Enabled')} <input type="checkbox" data-bind="checked: isEnabled" />
         </div>
       </div>
 
@@ -82,11 +82,11 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
           ${_('Field')}
           <select data-bind="options: fields, value: selectedRangeFacet"></select>
           &nbsp;${_('Start')}
-          <input type="text" data-bind="value: selectedRangeStartFacet" class="input-mini" />
+          <input type="number" data-bind="value: selectedRangeStartFacet" class="input-mini" />
           &nbsp;${_('End')}
-          <input type="text" data-bind="value: selectedRangeEndFacet" class="input-mini" />
+          <input type="number" data-bind="value: selectedRangeEndFacet" class="input-mini" />
           &nbsp;${_('Gap')}
-          <input type="text" data-bind="value: selectedRangeGapFacet" class="input-mini" />
+          <input type="number" data-bind="value: selectedRangeGapFacet" class="input-mini" />
           <a class="btn" data-bind="click: $root.addRangeFacet"><i class="icon-plus"></i> ${_('Add field')}</a>
         </div>
       </div>
@@ -108,14 +108,14 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
         </div>
         <div class="clearfix"></div>
         <div class="miniform">
-        ${_('Field')}
+          ${_('Field')}
           <select data-bind="options: fields, value: selectedDateFacet"></select>
           &nbsp;${_('Start')}
           <input id="dp-start" class="input-small" type="text" data-bind="value: selectedDateStartFacet" />
           &nbsp;${_('End')}
           <input id="dp-end" class="input-small" type="text" data-bind="value: selectedDateEndFacet" />
           &nbsp;${_('Gap')}
-          <input type="text" data-bind="value: selectedDateGapFacet" class="input-mini" />
+          <input type="number" data-bind="value: selectedDateGapFacet" class="input-mini" />
           <a class="btn" data-bind="click: $root.addDateFacet"><i class="icon-plus"></i> ${_('Add field')}</a>
         </div>
       </div>
@@ -159,7 +159,7 @@ ${ 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);

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

@@ -42,7 +42,7 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
               <input type='checkbox' data-bind="checked: isEnabled" style="margin-top: -2px; margin-right: 4px"/> ${_('Enabled') }
             </label>
           </div>
-          <h4>${_('Highlighting')}</h4>          
+          <h4>${_('Highlighting')}</h4>
         </div>
         <div style="padding-left: 10px;margin-bottom: 20px">
           <p>${_('Highlights the query keywords matching some of the fields below.')}</p>

+ 5 - 5
apps/search/src/search/templates/admin_core_sorting.mako

@@ -28,21 +28,21 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
   <%def name="title()">
     <h1>${_('Search Admin - ')}${hue_core.label}</h1>
   </%def>
-  
+
   <%def name="navigation()">
     ${ layout.sidebar(hue_core.name, 'sorting') }
   </%def>
-  
+
   <%def name="content()">
     <form method="POST" class="form-horizontal" data-bind="submit: submit">
       <div class="section">
         <div class="alert alert-info"><h4>${_('Sorting')}</h4></div>
         <div class="clearfix"></div>
         <div class="miniform">
-          ${_('Enabled')} <input type="checkbox" data-bind="checked: isEnabled" />          
+          ${_('Enabled')} <input type="checkbox" data-bind="checked: isEnabled" />
         </div>
       </div>
-          
+
       <div class="section">
         <div class="alert alert-info" style="margin-top: 60px"><h4>${_('Sorting Fields')}</h4></div>
         <div data-bind="visible: sortingFields().length == 0" style="padding-left: 10px;margin-bottom: 20px">
@@ -145,7 +145,7 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
     self.submit = function () {
       $.ajax("${ url('search:admin_core_sorting', core=hue_core.name) }", {
         data: {
-          'properties': ko.utils.stringifyJson({'is_enabled': self.isEnabled()}),        
+          'properties': ko.utils.stringifyJson({'is_enabled': self.isEnabled()}),
           'fields': ko.utils.stringifyJson(self.sortingFields)
         },
         contentType: 'application/json',

+ 11 - 9
apps/search/src/search/templates/admin_core_template.mako

@@ -67,29 +67,31 @@ ${ commonheader(_('Search'), "search", user) | n,unicode }
       <div class="tab-pane active" id="visual">
 
         <div class="row-fluid">
-          <div class="span9">
+          <div class="span12">
+            <div>
+             ${ _('Edit the result snippet below.') }
+            </div>
             <div id="toolbar"></div>
+            </br>
             <div id="content-editor" class="clear">${ hue_core.result.get_template() | n,unicode }</div>
             <div id="load-template" class="btn-group">
               <a title="Load template" class="btn toolbar-btn toolbar-cmd">
                 <i class="icon-paste" style="margin-top:2px;"></i>
               </a>
             </div>
-          </div>
 
-          <div class="span3">
+            </br></br></br>
+
             <div class="well available-fields">
               <h4>${_('Available Fields')}</h4>
-              <ul data-bind="foreach: fields">
-                <li class="field-button">
-                  <a title="${ _('Click on this button to add the field') }" class="btn" data-bind="click: $root.addField">
+              <span data-bind="foreach: fields" class="field-button">
+                  <a title="${ _('Click on this button to add the field') }"  style="margin-bottom:10px" class="btn" data-bind="click: $root.addField">
                     <i class="icon-plus"></i>
                     &nbsp;
                     <span data-bind="text: $data"></span>
                   </a>
-                  <span class="space">&nbsp;</span>
-                </li>
-              </ul>
+                  &nbsp;
+                </span>
             </div>
           </div>
         </div>

+ 3 - 3
apps/search/src/search/templates/index.mako

@@ -264,7 +264,7 @@ ${ commonheader(_('Search'), "search", user, "40px") | n,unicode }
       }
       location.href = "?query=${solr_query["q"]}&fq=${solr_query["fq"]}&sort=" + _sort + "&rows=${solr_query["rows"]}&start=${solr_query["start"]}";
     });
-    
+
     $("#id_query").keydown(function() {
       var query = $("#id_query").val();
       $.ajax("${ url('search:query_suggest', core=hue_core.name) }" + query, {
@@ -274,8 +274,8 @@ ${ commonheader(_('Search'), "search", user, "40px") | n,unicode }
             $('#id_query').typeahead({source: data.message.spellcheck.suggestions[1].suggestion});
           }
         }
-      });    
-      
+      });
+
     });
 
   });

+ 1 - 4
apps/search/src/search/templates/layout.mako

@@ -90,12 +90,9 @@
       <li class="${ utils.is_selected(section, 'highlighting') }">
         <a href="${ url('search:admin_core_highlighting', core=core) }">${_('4. Highlighting')}</a>
       </li>
-      ##<li class="${ utils.is_selected(section, 'autocomplete') }">
-      ##  <a href="${ url('search:admin_core_sorting', core=core) }">${_('5. Auto-complete')}</a>
-      ##</li>
       <li class="nav-header">${_('Search')}</li>
       <li>
-        <a href="${ url('search:index') }" target="_blank"><i class="icon-share-alt"></i> ${ _('Query') }</a>
+        <a href="${ url('search:index') }?cores=${ core }" target="_blank"><i class="icon-share-alt"></i> ${ _('Query') }</a>
       </li>
 
       ##<li class="nav-header">${_('Solr')}</li>

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

@@ -42,7 +42,7 @@ LOG = logging.getLogger(__name__)
 def index(request):
   cores = SolrApi(SOLR_URL.get()).cores()
   hue_cores = Core.objects.all()
-  
+
   for core in cores['status']:
     Core.objects.get_or_create(name=core)
 
@@ -228,7 +228,7 @@ def admin_core_highlighting(request, core):
 def query_suggest(request, core, query=""):
   hue_core = Core.objects.get(name=core)
   result = {'status': -1, 'message': 'Error'}
-  
+
   solr_query = {}
   solr_query['core'] = core
   solr_query['q'] = query
@@ -236,8 +236,8 @@ def query_suggest(request, core, query=""):
   try:
     response = SolrApi(SOLR_URL.get()).suggest(solr_query, hue_core)
     result['message'] = response
-    result['status'] = 0    
+    result['status'] = 0
   except Exception, e:
-    error['message'] = unicode(str(e), "utf8")  
+    error['message'] = unicode(str(e), "utf8")
 
   return HttpResponse(json.dumps(result), mimetype="application/json")