From 23ece5633dc1f243dbd26aa1d6891e451362e948 Mon Sep 17 00:00:00 2001 From: Alex Ioannidis Date: Tue, 28 Nov 2023 15:17:07 +0100 Subject: [PATCH 1/2] metadata: auto-populate `publication_date` on new versions --- .../services/components/custom_fields.py | 1 + invenio_rdm_records/services/components/metadata.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/invenio_rdm_records/services/components/custom_fields.py b/invenio_rdm_records/services/components/custom_fields.py index 1af808c3d..75c0a8d89 100644 --- a/invenio_rdm_records/services/components/custom_fields.py +++ b/invenio_rdm_records/services/components/custom_fields.py @@ -15,3 +15,4 @@ class CustomFieldsComponent(MetadataComponent): field = "custom_fields" new_version_skip_fields = [] + new_version_generate_fields = [] diff --git a/invenio_rdm_records/services/components/metadata.py b/invenio_rdm_records/services/components/metadata.py index af978d590..eb02ea993 100644 --- a/invenio_rdm_records/services/components/metadata.py +++ b/invenio_rdm_records/services/components/metadata.py @@ -10,6 +10,7 @@ """RDM service component for metadata.""" from copy import copy +from datetime import datetime from invenio_drafts_resources.services.records.components import ServiceComponent @@ -19,6 +20,9 @@ class MetadataComponent(ServiceComponent): field = "metadata" new_version_skip_fields = ["publication_date", "version"] + new_version_generated_fields = { + "publication_date": lambda draft, record: datetime.today().isoformat(), + } def create(self, identity, data=None, record=None, **kwargs): """Inject parsed metadata to the record.""" @@ -42,5 +46,7 @@ def new_version(self, identity, draft=None, record=None, **kwargs): # Remove fields that should not be copied to the new version # (publication date and version) field_values = getattr(draft, self.field) - for f in self.new_version_skip_fields: - field_values.pop(f, None) + for key in self.new_version_skip_fields: + field_values.pop(key, None) + for key, func in self.new_version_generated_fields.items(): + field_values[key] = func(draft, record) From 41ac29dd4d1d8efcab1afa894638e2fad09523f9 Mon Sep 17 00:00:00 2001 From: Lars Holm Nielsen Date: Tue, 12 Dec 2023 16:23:42 +0100 Subject: [PATCH 2/2] Update invenio_rdm_records/services/components/metadata.py Co-authored-by: Sam Arbid <36583694+Samk13@users.noreply.github.com> --- invenio_rdm_records/services/components/metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/invenio_rdm_records/services/components/metadata.py b/invenio_rdm_records/services/components/metadata.py index eb02ea993..d140c2914 100644 --- a/invenio_rdm_records/services/components/metadata.py +++ b/invenio_rdm_records/services/components/metadata.py @@ -21,7 +21,7 @@ class MetadataComponent(ServiceComponent): field = "metadata" new_version_skip_fields = ["publication_date", "version"] new_version_generated_fields = { - "publication_date": lambda draft, record: datetime.today().isoformat(), + "publication_date": lambda draft, record: datetime.today(timezone.utc).isoformat(), } def create(self, identity, data=None, record=None, **kwargs):