[#71] CKAN harvester: Add datasets to source organization

If the harvest source belongs to an organization, new datasets should be added
to it. This is already the case in the spatial harvesters.

The remote orgs logic has been kept, with the difference that if for
some reason the remote org can not be assigned, the local one is used.

If the source does not have an organization, none is added.
This commit is contained in:
amercader 2013-10-22 16:24:43 +01:00
parent 0a845b6308
commit c18d9dc3af
1 changed files with 11 additions and 5 deletions

View File

@ -296,10 +296,17 @@ class CKANHarvester(HarvesterBase):
package_dict['groups'] = validated_groups package_dict['groups'] = validated_groups
context = {'model': model, 'session': Session, 'user': 'harvest'}
# Local harvest source organization
source_dataset = get_action('package_show')(context, {'id': harvest_object.source.id})
local_org = source_dataset.get('owner_org')
remote_orgs = self.config.get('remote_orgs', None) remote_orgs = self.config.get('remote_orgs', None)
if not remote_orgs in ('only_local', 'create'): if not remote_orgs in ('only_local', 'create'):
# Ignore remote groups # Assign dataset to the source organization
package_dict.pop('owner_org', None) package_dict['owner_org'] = local_org
else: else:
if not 'owner_org' in package_dict: if not 'owner_org' in package_dict:
package_dict['owner_org'] = None package_dict['owner_org'] = None
@ -307,7 +314,6 @@ class CKANHarvester(HarvesterBase):
# check if remote org exist locally, otherwise remove # check if remote org exist locally, otherwise remove
validated_org = None validated_org = None
remote_org = package_dict['owner_org'] remote_org = package_dict['owner_org']
context = {'model': model, 'session': Session, 'user': 'harvest'}
if remote_org: if remote_org:
try: try:
@ -327,7 +333,7 @@ class CKANHarvester(HarvesterBase):
except: except:
log.error('Could not get remote org %s' % remote_org) log.error('Could not get remote org %s' % remote_org)
package_dict['owner_org'] = validated_org package_dict['owner_org'] = validated_org or local_org
# Set default groups if needed # Set default groups if needed
default_groups = self.config.get('default_groups', []) default_groups = self.config.get('default_groups', [])