From 10efe1c43062db8c102bb6c0d21baff3abaacf20 Mon Sep 17 00:00:00 2001 From: Dominik Moritz Date: Thu, 1 Aug 2013 09:42:05 +0200 Subject: [PATCH] [#981] Call datapusher according to API --- ckanext/datastore/logic/action.py | 18 ++++++++++++++++-- ckanext/datastore/tests/test_create.py | 9 ++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ckanext/datastore/logic/action.py b/ckanext/datastore/logic/action.py index 495ffeadb1a..64c6758be35 100644 --- a/ckanext/datastore/logic/action.py +++ b/ckanext/datastore/logic/action.py @@ -1,5 +1,6 @@ import logging import json +import urlparse import pylons import requests @@ -442,9 +443,22 @@ def datapusher_submit(context, data_dict): :type set_url_to_dump: boolean ''' + # ToDo: add task + # ToDo: handle set_url_to_dump + p.toolkit.check_access('datapusher_submit', context, data_dict) - requests.post('http://datapusher.ckan.org/job', data=json.dumps({ - 'foo': 'bar' + + datapusher_url = pylons.config.get( + 'datapusher.url', 'http://datapusher.ckan.org/') + + user = p.toolkit.get_action('user_show')(context, {'id': context['user']}) + requests.post(urlparse.urljoin(datapusher_url, 'job'), data=json.dumps({ + 'api_key': user['apikey'], + 'job_type': 'push_to_datastore', + 'metadata': { + 'ckan_url': pylons.config['ckan.site_url'], + 'resource_id': data_dict['resource_id'] + } })) diff --git a/ckanext/datastore/tests/test_create.py b/ckanext/datastore/tests/test_create.py index a1d3c7f90e6..6d0b819c62c 100644 --- a/ckanext/datastore/tests/test_create.py +++ b/ckanext/datastore/tests/test_create.py @@ -543,7 +543,8 @@ def test_create_ckan_resource_in_package(self): @httpretty.activate def test_providing_res_with_url_calls_datapusher_correctly(self): - httpretty.HTTPretty.register_uri(httpretty.HTTPretty.POST, + httpretty.HTTPretty.register_uri( + httpretty.HTTPretty.POST, 'http://datapusher.ckan.org/job', content_type='application/json', body=json.dumps({'job_id': 'foo', 'job_key': 'bar'})) @@ -557,8 +558,10 @@ def test_providing_res_with_url_calls_datapusher_correctly(self): self.app.post('/api/action/datastore_create', params=postparams, extra_environ=auth, status=200) - body = json.loads(httpretty.last_request().body) - assert body == {'foo': 'bar'}, body + assert len(package.resources) == 4, len(package.resources) + resource = package.resources[3] + data = json.loads(httpretty.last_request().body) + assert data['metadata']['resource_id'] == resource.id, data def test_cant_provide_resource_and_resource_id(self): package = model.Package.get('annakarenina')