diff --git a/ckanext/datapusher/logic/action.py b/ckanext/datapusher/logic/action.py index b530273b2c7..5a5f5196767 100644 --- a/ckanext/datapusher/logic/action.py +++ b/ckanext/datapusher/logic/action.py @@ -62,7 +62,14 @@ def datapusher_submit(context, data_dict): datapusher_url = config.get('ckan.datapusher.url') site_url = h.url_for('/', qualified=True) - callback_url = h.url_for('/api/3/action/datapusher_hook', qualified=True) + + callback_url_base = config.get('ckan.datapusher.callback_url_base') + if callback_url_base: + callback_url = urlparse.urljoin( + callback_url_base.rstrip('/'), '/api/3/action/datapusher_hook') + else: + callback_url = h.url_for( + '/api/3/action/datapusher_hook', qualified=True) user = p.toolkit.get_action('user_show')(context, {'id': context['user']}) diff --git a/doc/maintaining/configuration.rst b/doc/maintaining/configuration.rst index 91abde5de54..75e668ddb07 100644 --- a/doc/maintaining/configuration.rst +++ b/doc/maintaining/configuration.rst @@ -1490,6 +1490,22 @@ running on port 8800. If you want to manually install the DataPusher, follow the installation `instructions `_. +.. _ckan.datapusher.callback_url_base: + +ckan.datapusher.url +^^^^^^^^^^^^^^^^^^^ + +Example:: + + ckan.datapusher.callback_url_base = http://ckan:5000/ + +Default value: Value of ``ckan.site_url`` + +Alternative callback URL for DataPusher when performing a request to CKAN. This is +useful on scenarios where the host where DataPusher is running can not access the +public CKAN site URL. + + .. _ckan.datapusher.assume_task_stale_after: ckan.datapusher.assume_task_stale_after