From 45609f6c92b82de1f24357427c613b9d397e258a Mon Sep 17 00:00:00 2001 From: Carlin MacKenzie Date: Thu, 19 Dec 2024 11:35:57 +0100 Subject: [PATCH] bug: use Accept header to return other formats --- invenio_app_rdm/records_ui/views/records.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/invenio_app_rdm/records_ui/views/records.py b/invenio_app_rdm/records_ui/views/records.py index 304ff01c96..c1ae63242c 100644 --- a/invenio_app_rdm/records_ui/views/records.py +++ b/invenio_app_rdm/records_ui/views/records.py @@ -28,6 +28,7 @@ from invenio_rdm_records.records.systemfields.access.access_settings import ( AccessSettings, ) +from invenio_rdm_records.resources.config import record_serializers from invenio_rdm_records.resources.serializers import UIJSONSerializer from invenio_stats.proxies import current_stats from invenio_users_resources.proxies import current_user_resources @@ -146,6 +147,15 @@ def record_detail( pid_value, record, files, media_files, is_preview=False, include_deleted=False ): """Record detail page (aka landing page).""" + if not request.accept_mimetypes.accept_html: + serializers = ( + current_app.config["RDM_RECORDS_SERIALIZERS"] or record_serializers + ) + accept_mimetype = request.accept_mimetypes.best_match(serializers.keys()) + if accept_mimetype: + serializer = serializers[accept_mimetype] + return serializer.serializer.serialize_object(record.to_dict()) + files_dict = None if files is None else files.to_dict() media_files_dict = None if media_files is None else media_files.to_dict()