Source code for invenio_records_rest.serializers.dc

# -*- coding: utf-8 -*-
#
# This file is part of Invenio.
# Copyright (C) 2016-2018 CERN.
#
# Invenio is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.

"""Marshmallow based DublinCore serializer for records."""

from dcxml import simpledc
from invenio_records.api import Record

from .base import PreprocessorMixin, SerializerMixinInterface
from .marshmallow import MarshmallowMixin


[docs]class DublinCoreSerializer( SerializerMixinInterface, MarshmallowMixin, PreprocessorMixin ): """Marshmallow based DublinCore serializer for records. Note: This serializer is not suitable for serializing large number of records. """
[docs] def serialize(self, pid, record, links_factory=None): """Serialize a single record and persistent identifier. :param pid: Persistent identifier instance. :param record: Record instance. :param links_factory: Factory function for record links. """ return simpledc.tostring(self.transform_record(pid, record, links_factory))
[docs] def serialize_oaipmh(self, pid, record): """Serialize a single record for OAI-PMH.""" obj = ( self.transform_record(pid, record["_source"]) if isinstance(record["_source"], Record) else self.transform_search_hit(pid, record) ) return simpledc.dump_etree(obj)