Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)