Skip to content
Snippets Groups Projects
Commit a1b16814 authored by chbaeh's avatar chbaeh
Browse files
parents 7db547e4 027c34a5
No related branches found
No related tags found
No related merge requests found
...@@ -15,10 +15,15 @@ from ckan.common import c, request, config ...@@ -15,10 +15,15 @@ from ckan.common import c, request, config
import hashlib import hashlib
import ckan.plugins.toolkit as toolkit import ckan.plugins.toolkit as toolkit
from ckanext.dcat.controllers import DCATController from ckanext.dcat.controllers import DCATController
from ckan.lib.search.common import (
make_connection, SearchError, SearchQueryError
)
import pysolr
abort = base.abort abort = base.abort
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class OdshRouteController(HomeController): class OdshRouteController(HomeController):
def info_page(self): def info_page(self):
h.redirect_to('http://www.schleswig-holstein.de/odpinfo') h.redirect_to('http://www.schleswig-holstein.de/odpinfo')
...@@ -27,6 +32,7 @@ class OdshRouteController(HomeController): ...@@ -27,6 +32,7 @@ class OdshRouteController(HomeController):
def not_found(self): def not_found(self):
abort(404) abort(404)
class OdshUserController(UserController): class OdshUserController(UserController):
def me(self, locale=None): def me(self, locale=None):
if not c.user: if not c.user:
...@@ -65,9 +71,11 @@ class OdshUserController(UserController): ...@@ -65,9 +71,11 @@ class OdshUserController(UserController):
abort(404) abort(404)
return super(OdshUserController,self).activity(id, offset) return super(OdshUserController,self).activity(id, offset)
class OdshPackageController(PackageController): class OdshPackageController(PackageController):
pass pass
class OdshApiController(ApiController): class OdshApiController(ApiController):
def action(self, logic_function, ver=None): def action(self, logic_function, ver=None):
try: try:
...@@ -93,11 +101,13 @@ class OdshApiController(ApiController): ...@@ -93,11 +101,13 @@ class OdshApiController(ApiController):
return ApiController.action(self, logic_function, ver) return ApiController.action(self, logic_function, ver)
class OdshDCATController(DCATController): class OdshDCATController(DCATController):
def read_catalog(self, _format): def read_catalog(self, _format):
matomo.create_matomo_request() matomo.create_matomo_request()
return DCATController.read_catalog(self,_format) return DCATController.read_catalog(self,_format)
class OdshFeedController(FeedController): class OdshFeedController(FeedController):
def custom(self): def custom(self):
matomo.create_matomo_request() matomo.create_matomo_request()
...@@ -155,3 +165,21 @@ class OdshFeedController(FeedController): ...@@ -155,3 +165,21 @@ class OdshFeedController(FeedController):
feed_guid=_create_atom_id(atom_url), feed_guid=_create_atom_id(atom_url),
feed_url=feed_url, feed_url=feed_url,
navigation_urls=navigation_urls) 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))
'use strict';
$(function () {
// Activate search suggestions for the search bar in the header and for the
// search bar used in the body.
$('.site-search input, .search').autocomplete({
delay: 500,
html: true,
minLength: 2,
source: function (request, response) {
var url = ckan.SITE_ROOT + '/autocomplete/' + request.term;
$.getJSON(url)
.done(function (data) {
console.log(data);
response(data['result']);
});
}
});
})
...@@ -76,12 +76,23 @@ def remove_route(map,routename): ...@@ -76,12 +76,23 @@ def remove_route(map,routename):
map._routenames.pop(route.name) map._routenames.pop(route.name)
break break
class OdshIcapPlugin(plugins.SingletonPlugin): class OdshIcapPlugin(plugins.SingletonPlugin):
plugins.implements(plugins.IUploader, inherit=True) plugins.implements(plugins.IUploader, inherit=True)
def get_resource_uploader(self, data_dict): def get_resource_uploader(self, data_dict):
return ODSHResourceUpload(data_dict) return ODSHResourceUpload(data_dict)
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
class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm): class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm):
plugins.implements(plugins.IConfigurer) plugins.implements(plugins.IConfigurer)
plugins.implements(plugins.ITemplateHelpers) plugins.implements(plugins.ITemplateHelpers)
......
.ui-autocomplete .ui-menu-item a,
.ui-autocomplete .ui-menu-item a:active,
.ui-autocomplete .ui-menu-item a:focus,
.ui-autocomplete .ui-menu-item a:hover,
.ui-autocomplete .ui-menu-item a:visited {
display: block;
text-decoration: none;
}
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
<link rel="stylesheet" href="/odsh.css?refresh={{ range(1,10000) | random }}" /> <link rel="stylesheet" href="/odsh.css?refresh={{ range(1,10000) | random }}" />
<link rel="stylesheet" href="/odsh_header.css?refresh={{ range(1,10000) | random }}" /> <link rel="stylesheet" href="/odsh_header.css?refresh={{ range(1,10000) | random }}" />
<link rel="stylesheet" href="/bootstrap-multiselect.css" /> <link rel="stylesheet" href="/bootstrap-multiselect.css" />
<link rel="stylesheet" href="/autocomplete.css" />
{% resource 'odsh/autocomplete.js' %}
{% endblock %} {% endblock %}
{% block head_extras %} {% block head_extras %}
......
...@@ -84,6 +84,7 @@ setup( ...@@ -84,6 +84,7 @@ setup(
odsh_icap=ckanext.odsh.plugin:OdshIcapPlugin odsh_icap=ckanext.odsh.plugin:OdshIcapPlugin
statistikamtnord_harvester=ckanext.odsh.harvesters:StatistikamtNordHarvester statistikamtnord_harvester=ckanext.odsh.harvesters:StatistikamtNordHarvester
kiel_harvester=ckanext.odsh.harvesters:KielHarvester kiel_harvester=ckanext.odsh.harvesters:KielHarvester
odsh_autocomplete=ckanext.odsh.plugin:OdshAutocompletePlugin
[paste.paster_command] [paste.paster_command]
odsh_initialization = ckanext.odsh.commands.initialization:Initialization odsh_initialization = ckanext.odsh.commands.initialization:Initialization
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment