def bst_openaire_new_upload(recid=None): """Tasklet to run after a new record has been uploaded.""" if recid is None: return # Ship of tasks to Celery for background processing datacite_register.delay(recid)
def bst_openaire_new_upload(recid=None): """Tasklet to run after a new record has been uploaded.""" if recid is None: return # Ship of tasks to Celery for background processing datacite_register.delay(recid) openaire_create_icon.delay(recid=recid) openaire_altmetric_update.delay([recid]) openaire_upload_notification.delay(recid=recid) calculate_preservation_score.delay(recid=recid)
def doi_consistency_check(): """Check if all DOIs in records have been registered.""" from invenio.base.globals import cfg from invenio.modules.records.api import get_record from invenio.legacy.search_engine import perform_request_search from invenio.modules.pidstore.models import PersistentIdentifier from invenio.modules.pidstore.tasks import datacite_register result = perform_request_search(p="") for r in result: doi = get_record(r).get('doi') if doi and doi.startswith(cfg['CFG_DATACITE_DOI_PREFIX']): pid = PersistentIdentifier.get("doi", doi) if pid and pid.is_new(): if pid.has_object("rec", r): datacite_register.delay(r)
def doi_action(record): if record.get('doi', None) is not None: return json_error(400, 'Record already has a DOI.') recid = record['recid'] doi = build_doi(recid) current_app.logger.info("Registering pid %s" % doi) pid = PersistentIdentifier.create(DOI_PID_TYPE, doi) if pid is None: pid = PersistentIdentifier.get(DOI_PID_TYPE, doi) try: pid.assign('rec', recid) datacite_register.delay(recid) except Exception, e: register_exception(alert_admin=True) return json_error(400, '%s' % e)