diff --git a/ckanext/odsh/controller.py b/ckanext/odsh/controller.py index d2ee99136c289b829a3653b545568287d261cc7f..fdc28c373519ae9347c93fb0f53b0920b14869ea 100644 --- a/ckanext/odsh/controller.py +++ b/ckanext/odsh/controller.py @@ -15,10 +15,7 @@ from ckan.common import c, request, config import hashlib import ckan.plugins.toolkit as toolkit from ckanext.dcat.controllers import DCATController -from ckan.lib.search.common import ( - make_connection, SearchError, SearchQueryError -) -import pysolr + abort = base.abort log = logging.getLogger(__name__) @@ -163,21 +160,3 @@ class OdshFeedController(FeedController): feed_guid=_create_atom_id(atom_url), feed_url=feed_url, navigation_urls=navigation_urls) - - -class OdshAutocompleteController(ApiController): - def autocomplete(self, q): - query = { - 'spellcheck.q': q, - 'wt': 'json'} - - conn = make_connection(decode_dates=False) - log.debug('Suggest query: %r' % query) - try: - solr_response = conn.search('', search_handler='suggest', **query) - except pysolr.SolrError as e: - raise SearchError('SOLR returned an error running query: %r Error: %r' % - (query, e)) - - suggest = solr_response.raw_response.get('spellcheck') - return base.response.body_file.write(str(suggest)) diff --git a/ckanext/odsh/fanstatic/autocomplete.js b/ckanext/odsh/fanstatic/autocomplete.js index 282b4844d0f3fe49af34f197abfcafdab8965049..497f0ec3b687096c5e3c909f98a764248935bd26 100644 --- a/ckanext/odsh/fanstatic/autocomplete.js +++ b/ckanext/odsh/fanstatic/autocomplete.js @@ -9,11 +9,11 @@ $(function () { html: true, minLength: 2, source: function (request, response) { - var url = ckan.SITE_ROOT + '/autocomplete/' + request.term; - $.getJSON(url) + var url = ckan.SITE_ROOT + '/api/action/autocomplete'; + $.getJSON(url, {q: request.term}) .done(function (data) { console.log(data); - response(data['result']); + response(data); }); } }); diff --git a/ckanext/odsh/logic/action.py b/ckanext/odsh/logic/action.py index df14f06c47476b3956e6ed0f0c00fd0ae30eec89..72994f266b8f891986a43131b0bb2b77dac2e917 100644 --- a/ckanext/odsh/logic/action.py +++ b/ckanext/odsh/logic/action.py @@ -3,6 +3,10 @@ from ckan.logic.action.create import package_create, user_create, group_member_c import ckan.model as model import ckan.lib.dictization.model_dictize as model_dictize import ckan.plugins.toolkit as toolkit +from ckan.lib.search.common import ( + make_connection, SearchError, SearchQueryError +) +import pysolr log = logging.getLogger(__name__) @@ -33,3 +37,20 @@ def odsh_user_create(context, data_dict): for group in groups: group_member_create(context, {'id': group, 'username': user.get('name'), 'role': 'member'}) return model_dictize.user_dictize(model.User.get(user.get('name')), context) + + +def autocomplete(self, q): + query = { + 'spellcheck.q': q, + 'wt': 'json'} + + conn = make_connection(decode_dates=False) + log.debug('Suggest query: %r' % query) + try: + solr_response = conn.search('', search_handler='suggest', **query) + except pysolr.SolrError as e: + raise SearchError('SOLR returned an error running query: %r Error: %r' % + (query, e)) + + suggest = solr_response.raw_response.get('spellcheck') + return suggest diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index 4aa8b21048e5b87f83d0e5a21bb44f2731d1decd..86984e2e30ad3478ec81bf1e7f9a8a42715a59bc 100644 --- a/ckanext/odsh/plugin.py +++ b/ckanext/odsh/plugin.py @@ -87,10 +87,8 @@ class OdshIcapPlugin(plugins.SingletonPlugin): class OdshAutocompletePlugin(plugins.SingletonPlugin): plugins.implements(plugins.IRoutes, inherit=True) - def before_map(self, map): - controller = 'ckanext.odsh.controller:OdshAutocompleteController' - map.connect('/autocomplete/{q}', controller=controller, action='autocomplete') - return map + def get_actions(self): + return {'autocomplete': action.autocomplete} class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm):