ckanext-datesearch/ckanext/datesearch/plugin.py

46 lines
1.6 KiB
Python

import logging
import ckan.plugins as plugins
import ckan.plugins.toolkit as toolkit
log = logging.getLogger(__name__)
class DateSearchPlugin(plugins.SingletonPlugin):
plugins.implements(plugins.IConfigurer)
plugins.implements(plugins.IPackageController, inherit=True)
def update_config(self, config):
toolkit.add_template_directory(config, 'templates')
toolkit.add_resource('fanstatic', 'ckanext-datesearch')
def before_search(self, search_params):
extras = search_params.get('extras')
if not extras:
# There are no extras in the search params, so do nothing.
return search_params
start_date = extras.get('ext_startdate')
end_date = extras.get('ext_enddate')
if not start_date and not end_date:
# The user didn't select either a start and/or end date, so do nothing.
return search_params
if not start_date:
start_date = '*'
if not end_date:
end_date = '*'
# Add a date-range query with the selected start and/or end dates into the Solr facet queries.
fq = search_params.get('fq', '')
#fq = '{fq} +extras_PublicationTimestamp:[{sd} TO {ed}]'.format(fq=fq, sd=start_date, ed=end_date)
# Added by Francesco see: https://github.com/geosolutions-it/ckanext-datesearch
fq = '{fq} +metadata_modified:[{start_date} TO {end_date}]'.format(fq=fq, start_date=start_date, end_date=end_date)
log.info('fq is: '+str(fq))
search_params['fq'] = fq
return search_params