diff --git a/ckanext/odsh/controller.py b/ckanext/odsh/controller.py index ef199a6eb6c7eb541d2cec4b7add93b9089bbb26..a6e61573f8f4928f0d00da218f630009786579a9 100644 --- a/ckanext/odsh/controller.py +++ b/ckanext/odsh/controller.py @@ -13,6 +13,9 @@ class OdshRouteController(HomeController): h.redirect_to('http://www.schleswig-holstein.de/odpinfo') def start(self): h.redirect_to('http://www.schleswig-holstein.de/odpstart') + def not_found(self): + abort(404) + class OdshUserController(UserController): def me(self, locale=None): diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index 52976e0f030ab4d7b1b6bc28941e03beaa9245e5..b5d4bc1fe1bd614af914102791e17b24b0fab1b4 100644 --- a/ckanext/odsh/plugin.py +++ b/ckanext/odsh/plugin.py @@ -260,7 +260,11 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm 'presorted_license_options': odsh_helpers.presorted_license_options } + def after_map(self, map): + return map + def before_map(self, map): + map.connect('info_page', '/info_page', controller='ckanext.odsh.controller:OdshRouteController', action='info_page') map.connect('home', '/', @@ -268,29 +272,50 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm map.redirect('/dataset/{id}/resource/{resource_id}', '/dataset/{id}') + # /api/util ver 1, 2 or none + with SubMapper(map, controller='api', path_prefix='/api{ver:/1|/2|}', + ver='/1') as m: + m.connect('/i18n/{lang}', action='i18n_js_translations') + + with SubMapper(map, controller='package') as m: + m.connect('search', '/dataset', action='search', + highlight_actions='index search') + m.connect('add dataset', '/dataset/new', action='new') + + m.connect('/dataset/{action}/{id}', + requirements=dict(action='|'.join([ + 'new_resource', + ]))) + m.connect('dataset_edit', '/dataset/edit/{id}', action='edit', + ckan_icon='pencil-square-o') + m.connect('dataset_read', '/dataset/{id}', action='read', + ckan_icon='sitemap') + m.connect('resource_edit', '/dataset/{id}/resource_edit/{resource_id}', + action='resource_edit', ckan_icon='pencil-square-o') + m.connect('/dataset/{id}/resource/{resource_id}/download', + action='resource_download') + m.connect('/dataset/{id}/resource/{resource_id}/download/{filename}', + action='resource_download') + + with SubMapper(map, controller='organization') as m: + m.connect('organizations_index', '/organization', action='index') + m.connect('/organization/new', action='new') + m.connect('/organization/{action}/{id}', + requirements=dict(action='|'.join([ + 'delete', + 'member_new', + 'member_delete', + ]))) + m.connect('organization_read', '/organization/{id}', action='read', ckan_icon='sitemap') + m.connect('organization_edit', '/organization/edit/{id}', + action='edit', ckan_icon='pencil-square-o') + m.connect('organization_members', '/organization/members/{id}', + action='members', ckan_icon='users') + # redirect all user routes to custom controller with SubMapper(map, controller='ckanext.odsh.controller:OdshUserController') as m: m.connect('/user/edit', action='edit') - m.connect('user_generate_apikey', - '/user/generate_key/{id}', action='generate_apikey') - m.connect('/user/activity/{id}/{offset}', action='activity') - m.connect('user_activity_stream', '/user/activity/{id}', - action='activity', ckan_icon='clock-o') - m.connect('user_dashboard', '/dashboard', action='dashboard', - ckan_icon='list') - m.connect('user_dashboard_datasets', '/dashboard/datasets', - action='dashboard_datasets', ckan_icon='sitemap') - m.connect('user_dashboard_groups', '/dashboard/groups', - action='dashboard_groups', ckan_icon='users') - m.connect('user_dashboard_organizations', '/dashboard/organizations', - action='dashboard_organizations', ckan_icon='building-o') - m.connect('/dashboard/{offset}', action='dashboard') - m.connect('user_follow', '/user/follow/{id}', action='follow') - m.connect('/user/unfollow/{id}', action='unfollow') - m.connect('user_followers', '/user/followers/{id:.*}', - action='followers', ckan_icon='users') - m.connect('user_edit', '/user/edit/{id:.*}', action='edit', - ckan_icon='cog') + m.connect('user_edit', '/user/edit/{id:.*}', action='edit', ckan_icon='cog') m.connect('user_delete', '/user/delete/{id}', action='delete') m.connect('/user/reset/{id:.*}', action='perform_reset') m.connect('register', '/user/register', action='register') @@ -299,12 +324,18 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm m.connect('/user/logged_in', action='logged_in') m.connect('/user/logged_out', action='logged_out') m.connect('/user/logged_out_redirect', action='logged_out_page') - m.connect('/user/reset', action='request_reset') - m.connect('/user/me', action='me') - m.connect('/user/set_lang/{lang}', action='set_lang') m.connect('user_datasets', '/user/{id:.*}', action='read', ckan_icon='sitemap') - m.connect('user_index', '/user', action='index') + + # robots.txt + map.connect('/(robots.txt)', controller='template', action='view') + + # sometimes we get requests for favicon.ico we should redirect to + # the real favicon location. + map.redirect('/favicon.ico', config.get('ckan.favicon')) + + ## everything that is not mapped above is mapped to 'not found' this also applies to all routes which are mapped afterwards + map.connect('block', '/{url:.*}', controller='ckanext.odsh.controller:OdshRouteController', action='not_found') return map