def add_update_resource(self, resource, ignore_datasetid=False): # type: (Union[Resource,dict,str], Optional[bool]) -> None """Add new or update existing resource in dataset with new metadata Args: resource (Union[Resource,dict,str]): Either resource id or resource metadata from a Resource object or a dictionary ignore_datasetid (Optional[bool]): Whether to ignore dataset id in the resource Returns: None """ if isinstance(resource, str): resource = Resource.read_from_hdx(resource, configuration=self.configuration) elif isinstance(resource, dict): resource = Resource(resource, configuration=self.configuration) if isinstance(resource, Resource): if 'package_id' in resource: if not ignore_datasetid: raise HDXError( 'Resource %s being added already has a dataset id!' % (resource['name'])) resource_updated = self._addupdate_hdxobject( self.resources, 'name', resource) resource_updated.set_file_to_upload(resource.get_file_to_upload()) return raise HDXError('Type %s cannot be added as a resource!' % type(resource).__name__)
def test_create_in_hdx(self, configuration, post_create): resource = Resource() with pytest.raises(HDXError): resource.create_in_hdx() resource['id'] = '74b74ae1-df0c-4716-829f-4f939a046811' resource['name'] = 'LALA' with pytest.raises(HDXError): resource.create_in_hdx() resource_data = copy.deepcopy(TestResource.resource_data) resource = Resource(resource_data) resource.create_in_hdx() assert resource['id'] == 'de6549d8-268b-4dfe-adaf-a4ae5c8510d5' assert resource['url_type'] == 'api' assert resource['resource_type'] == 'api' assert resource[ 'url'] == 'https://raw.githubusercontent.com/OCHA-DAP/hdx-python-api/master/tests/fixtures/test_data.csv' resource_data = copy.deepcopy(TestResource.resource_data) resource = Resource(resource_data) filetoupload = join('tests', 'fixtures', 'test_data.csv') resource.set_file_to_upload(filetoupload) assert resource.get_file_to_upload() == filetoupload resource.create_in_hdx() assert resource['url_type'] == 'upload' assert resource['resource_type'] == 'file.upload' assert resource[ 'url'] == 'http://test-data.humdata.org/dataset/6f36a41c-f126-4b18-aaaf-6c2ddfbc5d4d/resource/de6549d8-268b-4dfe-adaf-a4ae5c8510d5/download/test_data.csv' assert resource['state'] == 'active' resource_data['name'] = 'MyResource2' resource = Resource(resource_data) with pytest.raises(HDXError): resource.create_in_hdx() resource_data['name'] = 'MyResource3' resource = Resource(resource_data) with pytest.raises(HDXError): resource.create_in_hdx()
def test_create_in_hdx(self, configuration, post_create): resource = Resource() with pytest.raises(HDXError): resource.create_in_hdx() resource['id'] = '74b74ae1-df0c-4716-829f-4f939a046811' resource['name'] = 'LALA' with pytest.raises(HDXError): resource.create_in_hdx() resource_data = copy.deepcopy(TestResource.resource_data) resource = Resource(resource_data) resource.create_in_hdx() assert resource['id'] == 'de6549d8-268b-4dfe-adaf-a4ae5c8510d5' assert resource['url_type'] == 'api' assert resource['resource_type'] == 'api' assert resource[ 'url'] == 'https://raw.githubusercontent.com/OCHA-DAP/hdx-python-api/master/tests/fixtures/test_data.csv' resource_data = copy.deepcopy(TestResource.resource_data) resource = Resource(resource_data) filetoupload = join('tests', 'fixtures', 'test_data.csv') resource.set_file_to_upload(filetoupload) assert resource.get_file_to_upload() == filetoupload resource.create_in_hdx() assert resource['url_type'] == 'upload' assert resource['resource_type'] == 'file.upload' assert resource[ 'url'] == 'http://test-data.humdata.org/dataset/6f36a41c-f126-4b18-aaaf-6c2ddfbc5d4d/resource/de6549d8-268b-4dfe-adaf-a4ae5c8510d5/download/test_data.csv' resource_data['name'] = 'MyResource2' resource = Resource(resource_data) with pytest.raises(HDXError): resource.create_in_hdx() resource_data['name'] = 'MyResource3' resource = Resource(resource_data) with pytest.raises(HDXError): resource.create_in_hdx()
def add_update_resource(self, resource): # type: (Any) -> None """Add new or update existing resource in dataset with new metadata Args: resource (Any): Resource metadata either from a Resource object or a dictionary Returns: None """ if isinstance(resource, dict): resource = Resource(resource, configuration=self.configuration) if isinstance(resource, Resource): if 'package_id' in resource: raise HDXError( "Resource %s being added already has a dataset id!" % (resource['name'])) resource_updated = self._addupdate_hdxobject( self.resources, 'name', resource) resource_updated.set_file_to_upload(resource.get_file_to_upload()) return raise HDXError("Type %s cannot be added as a resource!" % type(resource).__name__)