def harvest_object_create(context, data_dict): """ Create a new harvest object :type guid: string (optional) :type content: string (optional) :type job_id: string :type source_id: string (optional) :type package_id: string (optional) :type extras: dict (optional) """ check_access('harvest_object_create', context, data_dict) data, errors = _validate( data_dict, harvest_object_create_schema(), context) if errors: raise logic.ValidationError(errors) obj = HarvestObject( guid=data.get('guid'), content=data.get('content'), job=data['job_id'], harvest_source_id=data.get('source_id'), package_id=data.get('package_id'), extras=[HarvestObjectExtra(key=k, value=v) for k, v in data.get('extras', {}).items()] ) obj.save() return harvest_object_dictize(obj, context)
def harvest_object_show(context, data_dict): p.toolkit.check_access('harvest_object_show', context, data_dict) id = data_dict.get('id') dataset_id = data_dict.get('dataset_id') if id: attr = data_dict.get('attr', None) obj = HarvestObject.get(id, attr=attr) elif dataset_id: model = context['model'] pkg = model.Package.get(dataset_id) if not pkg: raise p.toolkit.ObjectNotFound('Dataset not found') obj = model.Session.query(HarvestObject) \ .filter(HarvestObject.package_id == pkg.id) \ .filter(HarvestObject.current) \ .first() else: raise p.toolkit.ValidationError( 'Please provide either an "id" or a "dataset_id" parameter') if not obj: raise p.toolkit.ObjectNotFound('Harvest object not found') return harvest_object_dictize(obj, context)