def openaire_register_doi(recid): """ Register a DOI for new publication If it fails, it will retry every 10 minutes for 1 hour. """ doi_val = get_fieldvalues(recid, "0247_a")[0] logger.debug("Found DOI %s in record %s" % (doi_val, recid)) pid = PersistentIdentifier.get("doi", doi_val) if not pid: logger.debug("DOI not locally managed.") return else: logger.debug("DOI locally managed.") if not pid.has_object("rec", recid): raise Exception("DOI %s is not assigned to record %s." % (doi_val, recid)) if pid.is_new() or pid.is_reserved(): logger.info("Registering DOI %s for record %s" % (doi_val, recid)) url = "%s/record/%s" % (CFG_DATACITE_SITE_URL, recid) doc = format_record(recid, 'dcite') if not pid.register(url=url, doc=doc): m = "Failed to register DOI %s" % doi_val logger.error(m + "\n%s\n%s" % (url, doc)) if not openaire_register_doi.request.is_eager: raise openaire_register_doi.retry(exc=Exception(m)) else: logger.info("Successfully registered DOI %s." % doi_val)
def openaire_register_doi(recid): """ Register a DOI for new publication If it fails, it will retry every 10 minutes for 1 hour. """ doi_val = get_fieldvalues(recid, "0247_a")[0] logger.debug("Found DOI %s in record %s" % (doi_val, recid)) pid = PersistentIdentifier.get("doi", doi_val) if not pid: logger.debug("DOI not locally managed.") return else: logger.debug("DOI locally managed.") if not pid.has_object("rec", recid): raise Exception("DOI %s is not assigned to record %s." % (doi_val, recid)) if pid.is_new() or pid.is_reserved(): logger.info("Registering DOI %s for record %s" % (doi_val, recid)) url = "%s/record/%s" % (CFG_DATACITE_SITE_URL, recid) doc = format_record(recid, 'dcite') if not pid.register(url=url, doc=doc): m = "Failed to register DOI %s" % doi_val logger.error(m + "\n%s\n%s" % (url, doc)) if not openaire_register_doi.request.is_eager: raise openaire_register_doi.retry(exc=Exception(m)) else: logger.info("Successfully registered DOI %s." % doi_val)
def openaire_delete_doi(recid): """ Delete DOI in DataCite If it fails, it will retry every 10 minutes for 1 hour. """ doi_val = get_fieldvalues(recid, "0247_a")[0] logger.debug("Found DOI %s in record %s" % (doi_val, recid)) pid = PersistentIdentifier.get("doi", doi_val) if not pid: logger.debug("DOI not locally managed.") return else: logger.debug("DOI locally managed.") if not pid.has_object("rec", recid): raise Exception("DOI %s is not assigned to record %s." % (doi_val, recid)) if pid.is_registered(): logger.info("Inactivating DOI %s for record %s" % (doi_val, recid)) if not pid.delete(): m = "Failed to inactive DOI %s" % doi_val logger.error(m) if not openaire_delete_doi.request.is_eager: raise openaire_delete_doi.retry(exc=Exception(m)) else: logger.info("Successfully inactivated DOI %s." % doi_val)
def openaire_delete_doi(recid): """ Delete DOI in DataCite If it fails, it will retry every 10 minutes for 1 hour. """ doi_val = get_fieldvalues(recid, "0247_a")[0] logger.debug("Found DOI %s in record %s" % (doi_val, recid)) pid = PersistentIdentifier.get("doi", doi_val) if not pid: logger.debug("DOI not locally managed.") return else: logger.debug("DOI locally managed.") if not pid.has_object("rec", recid): raise Exception("DOI %s is not assigned to record %s." % (doi_val, recid)) if pid.is_registered(): logger.info("Inactivating DOI %s for record %s" % (doi_val, recid)) if not pid.delete(): m = "Failed to inactive DOI %s" % doi_val logger.error(m) if not openaire_delete_doi.request.is_eager: raise openaire_delete_doi.retry(exc=Exception(m)) else: logger.info("Successfully inactivated DOI %s." % doi_val)