def id_minter(record_uuid, data, provider, pid_key='pid', object_type='rec'): """Document PID minter.""" # Create persistent identifier provider = provider.create(object_type=object_type, object_uuid=record_uuid, pid_value=data.get(pid_key)) pid = provider.pid data[pid_key] = pid.pid_value # Mandatory to check if PID for OAI exists, as the minter is called twice # during API calls.. try: oai_pid_value = current_app.config.get('OAISERVER_ID_PREFIX', '') + str(pid.pid_value) OAIIDProvider.get(oai_pid_value, 'oai') except PIDDoesNotExistError: oaiid_minter(record_uuid, data) return pid
def zenodo_oaiid_minter(record_uuid, data): """Mint OAI identifiers.""" pid_value = data.get('_oai', {}).get('id') if pid_value is None: assert 'recid' in data pid_value = current_app.config.get('OAISERVER_ID_PREFIX', '') + str( data['recid'] ) provider = OAIIDProvider.create( object_type='rec', object_uuid=record_uuid, pid_value=str(pid_value) ) data.setdefault('_oai', {}) data['_oai']['id'] = provider.pid.pid_value return provider.pid
def zenodo_oaiid_minter(record_uuid, data): """Mint OAI identifiers.""" pid_value = data.get('_oai', {}).get('id') if pid_value is None: assert 'recid' in data pid_value = current_app.config.get('OAISERVER_ID_PREFIX', '') + str( data['recid'] ) provider = OAIIDProvider.create( object_type='rec', object_uuid=record_uuid, pid_value=str(pid_value) ) data.setdefault('_oai', {}) data['_oai']['id'] = provider.pid.pid_value data['_oai']['updated'] = datetime_to_datestamp(datetime.utcnow()) return provider.pid
def add_records_to_set(ids): """Add records to set.""" # use invenio-record functions to add set information to the record # get record via invenio-record.api.Record.... get_record for recid, oaiid in ids: if oaiid: # how to get and modify record rec = get_record(recid) rec['_oai'].append(new_set.name) else: # use minter for this oaiid = OAIIDProvider.create('rec', recid) rec = get_record(recid) # append set nam to the record (with append date as a separete # field) this needs to be configurable rec['_oai'].append(new_set.name)
def b2share_oaiid_minter(rec_pid, data): """Mint record identifiers.""" oai_pid_value = data.get('_oai', {}).get('id') if oai_pid_value is None: oai_prefix = current_app.config.get('OAISERVER_ID_PREFIX', 'oai:') oai_pid_value = str(oai_prefix) + str(rec_pid.pid_value) provider = OAIIDProvider.create(object_type='rec', object_uuid=rec_pid.object_uuid, pid_value=oai_pid_value) data.setdefault('_oai', {}) data['_oai'].update({ 'id': oai_pid_value, 'sets': [data.get('community')], # community_id == setSpec 'updated': datetime_to_datestamp(datetime.utcnow()), }) return provider.pid
def b2share_oaiid_minter(record_uuid, data): """Mint record identifiers.""" pid_value = data.get('_oai', {}).get('id') if pid_value is None: assert '_deposit' in data and 'id' in data['_deposit'] id_ = str(data['_deposit']['id']) pid_value = current_app.config.get('OAISERVER_ID_PREFIX', '') + id_ provider = OAIIDProvider.create(object_type='rec', object_uuid=record_uuid, pid_value=str(pid_value)) data.setdefault('_oai', {}) data['_oai'].update({ 'id': provider.pid.pid_value, 'sets': [], 'updated': datetime_to_datestamp(datetime.utcnow()), }) return provider.pid
def b2share_oaiid_minter(rec_pid, data): """Mint record identifiers.""" oai_pid_value = data.get('_oai', {}).get('id') if oai_pid_value is None: oai_prefix = current_app.config.get('OAISERVER_ID_PREFIX', 'oai:') oai_pid_value = str(oai_prefix) + str(rec_pid.pid_value) provider = OAIIDProvider.create( object_type='rec', object_uuid=rec_pid.object_uuid, pid_value=oai_pid_value ) data.setdefault('_oai', {}) data['_oai'].update({ 'id': oai_pid_value, 'sets': [data.get('community')], # community_id == setSpec 'updated': datetime_to_datestamp(datetime.utcnow()), }) return provider.pid