def _get_record_info(recid): from invenio.modules.formatter import engine as bibformat_engine bfo = bibformat_engine.BibFormatObject(recid) open_access = read_basic_metadata_field_from_marc(bfo, 'open_access') is_private = open_access == "restricted" or open_access == False domain = read_basic_metadata_field_from_marc(bfo, 'domain') owner_email = read_basic_metadata_field_from_marc(bfo, 'uploaded_by') return (domain, owner_email, is_private)
def _get_record_info(recid): from invenio.modules.formatter import engine as bibformat_engine bfo = bibformat_engine.BibFormatObject(recid) open_access = read_basic_metadata_field_from_marc(bfo, 'open_access') is_private = open_access == "restricted" or open_access == False domain = read_basic_metadata_field_from_marc(bfo, 'domain') owner_email = read_basic_metadata_field_from_marc(bfo, 'uploaded_by') metaclass = metadata_classes().get(domain) admin_can_edit_published_record = getattr(metaclass, 'admin_can_edit_published_record', False) return (domain, owner_email, is_private, admin_can_edit_published_record)
def _get_record_info(recid): from invenio.modules.formatter import engine as bibformat_engine bfo = bibformat_engine.BibFormatObject(recid) open_access = read_basic_metadata_field_from_marc(bfo, 'open_access') is_private = open_access == "restricted" or open_access == False domain = read_basic_metadata_field_from_marc(bfo, 'domain') owner_email = read_basic_metadata_field_from_marc(bfo, 'uploaded_by') metaclass = metadata_classes().get(domain) admin_can_edit_published_record = getattr( metaclass, 'admin_can_edit_published_record', False) return (domain, owner_email, is_private, admin_can_edit_published_record)
def update(recid, form): if not is_record_editable(recid): abort(401) from invenio.legacy.search_engine import get_record from invenio.legacy.bibupload.engine import bibupload from invenio.modules.formatter import engine as bibformat_engine bfo = bibformat_engine.BibFormatObject(recid) domain = read_basic_metadata_field_from_marc(bfo, 'domain') metaclass, meta, meta_form = _get_meta_form_data(domain, form) if meta_form.validate_on_submit(): current_app.logger.info("Updating record {}".format(recid)) _bibdoc_modify_files(recid, form) rec_changes = {} add_basic_fields(rec_changes, form, meta) updated = False rec = get_record(recid) for (k, v) in rec_changes.items(): if rec.get(k) != v: current_app.logger.info("Updating key {} from {} to {}".format( k, rec.get(k), v)) rec[k] = v updated = True if updated: bibupload(rec, 'replace') return jsonify(valid=True, newurl=url_for("record.metadata", recid=recid), html=render_template('record_waitforit.html', recid=recid)) else: html = render_template('b2share-addmeta-table.html', recid=recid, metadata=meta, form=meta_form, domain=metaclass, getattr=getattr) return jsonify(valid=False, html=html)
def update(recid, form): if not is_record_editable(recid): abort(401) from invenio.legacy.search_engine import get_record from invenio.legacy.bibupload.engine import bibupload from invenio.modules.formatter import engine as bibformat_engine bfo = bibformat_engine.BibFormatObject(recid) domain = read_basic_metadata_field_from_marc(bfo, 'domain') metaclass, meta, meta_form = _get_meta_form_data(domain, form) if meta_form.validate_on_submit(): current_app.logger.info("Updating record {}".format(recid)) _bibdoc_modify_files(recid, form) rec_changes = {} add_basic_fields(rec_changes, form, meta) updated = False rec = get_record(recid) for (k,v) in rec_changes.items(): if rec.get(k) != v: current_app.logger.info( "Updating key {} from {} to {}".format(k, rec.get(k),v)) rec[k] = v updated = True if updated: bibupload(rec, 'replace') return jsonify(valid=True, newurl=url_for("record.metadata", recid=recid), html=render_template('record_waitforit.html', recid=recid)) else: html = render_template('b2share-addmeta-table.html', recid=recid, metadata=meta, form=meta_form, domain=metaclass, getattr=getattr) return jsonify(valid=False, html=html)