Example #1
0
def export_json_view(pid, record, template=None, **kwargs):
    r"""Record JSON export view.

    Serializes record with given format and renders record export template.
    :param pid: PID object.
    :param record: Record object.
    :param template: Template to render.
    :param \*\*kwargs: Additional view arguments based on URL rule.
    :return: The rendered template.
    """
    formats = current_app.config.get('RECORDS_UI_EXPORT_FORMATS', {}).get(
        pid.pid_type)
    fmt = formats.get(request.view_args.get('format'))

    if fmt is False:
        # If value is set to False, it means it was deprecated.
        abort(410)
    elif fmt is None:
        abort(404)
    else:
        try:
            serializer = obj_or_import_string(fmt['serializer'])
            data = serializer.serialize(pid, record)
            data = json.loads(data)
        except Exception:
            data = {}

        return jsonify(data)
Example #2
0
def export_json_view(pid, record, template=None, **kwargs):
    r"""Record JSON export view.

    Serializes record with given format and renders record export template.
    :param pid: PID object.
    :param record: Record object.
    :param template: Template to render.
    :param \*\*kwargs: Additional view arguments based on URL rule.
    :return: The rendered template.
    """
    formats = current_app.config.get('RECORDS_UI_EXPORT_FORMATS',
                                     {}).get(pid.pid_type)
    fmt = formats.get(request.view_args.get('format'))

    if fmt is False:
        # If value is set to False, it means it was deprecated.
        abort(410)
    elif fmt is None:
        abort(404)
    else:
        try:
            serializer = obj_or_import_string(fmt['serializer'])
            data = serializer.serialize(pid, record)
            data = json.loads(data)
        except Exception:
            data = {}

        return jsonify(data)
Example #3
0
def dumps_oai_etree(pid, records, **kwargs):
    """Dump records into a etree.
    :param pid: The :class:`invenio_pidstore.models.PersistentIdentifier`
        instance.
    :param records: The :class:`invenio_records.api.Record` instance.
    :param schema_type: schema type
    :returns: A LXML Element instance.
    """
    serializer = obj_or_import_string(
        "weko_schema_ui.serializers.WekoCommonSchema")
    return serializer.serialize_oaipmh(pid, records, kwargs.get("schema_type"))
Example #4
0
def export(pid, record, template=None, **kwargs):
    r"""Record serialization view.

    Serializes record with given format and renders record export template.

    :param pid: PID object.
    :param record: Record object.
    :param template: Template to render.
    :param \*\*kwargs: Additional view arguments based on URL rule.
    :return: The rendered template.
    """
    formats = current_app.config.get('RECORDS_UI_EXPORT_FORMATS',
                                     {}).get(pid.pid_type)
    schema_type = request.view_args.get('format')
    fmt = formats.get(schema_type)

    if fmt is False:
        # If value is set to False, it means it was deprecated.
        abort(410)
    elif fmt is None:
        abort(404)
    else:
        if 'json' not in schema_type and 'bibtex' not in schema_type:
            record.update({'@export_schema_type': schema_type})

        serializer = obj_or_import_string(fmt['serializer'])
        data = serializer.serialize(pid, record)
        if isinstance(data, six.binary_type):
            data = data.decode('utf8')

        # return render_template(
        #     template, pid=pid, record=record, data=data,
        #     format_title=fmt['title'],
        # )

        response = make_response(data)

        if 'json' in schema_type or 'bibtex' in schema_type:
            response.headers['Content-Type'] = 'text/plain'
        else:
            response.headers['Content-Type'] = 'text/xml'

        return response
def test_obj_or_import_string(app):
    """Test obj_or_import_string."""
    assert not obj_or_import_string(value=None)
    assert myfunc == obj_or_import_string(value=myfunc)
Example #6
0
def test_obj_or_import_string(app):
    """Test obj_or_import_string."""
    assert not obj_or_import_string(value=None)
    assert myfunc == obj_or_import_string(value=myfunc)