Skip to content

Instantly share code, notes, and snippets.

@tom-montgomery
Created January 15, 2019 16:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tom-montgomery/d3aebd3520439d58693cfe9bc84d7c93 to your computer and use it in GitHub Desktop.
Save tom-montgomery/d3aebd3520439d58693cfe9bc84d7c93 to your computer and use it in GitHub Desktop.
def update_doi(socrata_4x4, temp_table, draft=True):
"""Updates existing DOI's metadata"""
url = 'https://api.datacite.org/dois/'
datacite_user = os.environ['datacite_user']
datacite_pass = os.environ['datacite_pass']
print('Updating: ' + socrata_4x4)
doi_assets = pd.read_json(assets_filename)
payload, doi, xml, metadata = assemble_payload(socrata_4x4, temp_table, draft, update=True)
r = requests.put('{}{}'.format(url, doi), json=payload, auth=(datacite_user, datacite_pass))
response_dict = json.loads(r.content)
print('DataCite Response:')
print(response_dict)
if 'data' in response_dict:
# TODO add git commit of file to push to github repo
# if successful update doi table
doi_assets.loc[doi_assets['socrata_4x4'] == socrata_4x4, 'metadata_xml'] = xml
doi_assets.loc[doi_assets['socrata_4x4'] == socrata_4x4, 'last_updated'] = str(datetime.datetime.now())
doi_assets.to_json(filename)
return True
else:
print('Error, could not update: ' + socrata_4x4)
return False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment