Merge branch 'api-version-fix' of git://github.com/fraunhoferfokus/ckanext-harvest into fraunhoferfokus-api-version-fix

This commit is contained in:
amercader 2013-05-31 17:15:43 +01:00
commit a6a0196a4e
3 changed files with 20 additions and 13 deletions

View File

@ -151,8 +151,8 @@ The CKAN harvesters support a number of configuration options to control their
behaviour. Those need to be defined as a JSON object in the configuration form
field. The currently supported configuration options are:
* api_version: You can force the harvester to use either version '1' or '2' of
the CKAN API. Default is '2'.
* api_version: You can force the harvester to use either version 1 or 2 of
the CKAN API. Default is 2.
* default_tags: A list of tags that will be added to all harvested datasets.
Tags don't need to previously exist.
@ -160,7 +160,7 @@ field. The currently supported configuration options are:
* default_groups: A list of groups to which the harvested datasets will be
added to. The groups must exist. Note that you must use ids or names to
define the groups according to the API version you defined (names for version
'1', ids for version '2').
1, ids for version 2).
* default_extras: A dictionary of key value pairs that will be added to extras
of the harvested datasets. You can use the following replacement strings,
@ -204,7 +204,7 @@ Here is an example of a configuration object (the one that must be entered in
the configuration field)::
{
"api_version":"1",
"api_version": 1,
"default_tags":["new-tag-1","new-tag-2"],
"default_groups":["my-own-group"],
"default_extras":{"new_extra":"Test","harvest_url":"{harvest_source_url}/dataset/{dataset_id}"},

View File

@ -130,11 +130,15 @@ class HarvesterBase(SingletonPlugin):
# Check API version
if self.config:
api_version = self.config.get('api_version','2')
try:
api_version = int(self.config.get('api_version', 2))
except ValueError:
raise ValueError('api_version must be an integer')
#TODO: use site user when available
user_name = self.config.get('user',u'harvest')
user_name = self.config.get('user', u'harvest')
else:
api_version = '2'
api_version = 2
user_name = u'harvest'
context = {

View File

@ -20,13 +20,13 @@ class CKANHarvester(HarvesterBase):
'''
config = None
api_version = '2'
api_version = 2
def _get_rest_api_offset(self):
return '/api/%s/rest' % self.api_version
return '/api/%d/rest' % self.api_version
def _get_search_api_offset(self):
return '/api/%s/search' % self.api_version
return '/api/%d/search' % self.api_version
def _get_content(self, url):
http_request = urllib2.Request(
@ -53,7 +53,10 @@ class CKANHarvester(HarvesterBase):
self.config = json.loads(config_str)
if 'api_version' in self.config:
self.api_version = self.config['api_version']
try:
self.api_version = int(self.config['api_version'])
except ValueError:
raise ValueError('api_version must be an integer')
log.debug('Using config: %r', self.config)
else:
@ -263,7 +266,7 @@ class CKANHarvester(HarvesterBase):
try:
data_dict = {'id': group_name}
group = get_action('group_show')(context, data_dict)
if self.api_version == '1':
if self.api_version == 1:
validated_groups.append(group['name'])
else:
validated_groups.append(group['id'])
@ -280,7 +283,7 @@ class CKANHarvester(HarvesterBase):
group.pop(key, None)
get_action('group_create')(context, group)
log.info('Group %s has been newly created' % group_name)
if self.api_version == '1':
if self.api_version == 1:
validated_groups.append(group['name'])
else:
validated_groups.append(group['id'])