From ad85feeb8592707a51eda2b8a18b2808a3a119c6 Mon Sep 17 00:00:00 2001 From: yashlamba Date: Thu, 28 Nov 2024 14:56:20 +0100 Subject: [PATCH 1/2] curation: add EURecordCuration job --- site/setup.cfg | 2 ++ site/zenodo_rdm/curation/jobs.py | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 site/zenodo_rdm/curation/jobs.py diff --git a/site/setup.cfg b/site/setup.cfg index e0cec983..37894d46 100644 --- a/site/setup.cfg +++ b/site/setup.cfg @@ -93,6 +93,8 @@ invenio_search.index_templates = zenodo_rdm = zenodo_rdm.index_templates idutils.custom_schemes = edmo = zenodo_rdm.custom_schemes:get_scheme_config_func +invenio_jobs.jobs = + eu_records_curation = zenodo_rdm.curation.jobs:EURecordCuration [bdist_wheel] universal = 1 diff --git a/site/zenodo_rdm/curation/jobs.py b/site/zenodo_rdm/curation/jobs.py new file mode 100644 index 00000000..b1b8bde5 --- /dev/null +++ b/site/zenodo_rdm/curation/jobs.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# ZenodoRDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Jobs module.""" + +from datetime import datetime, timezone + +from invenio_jobs.jobs import JobType +from marshmallow import Schema, fields +from marshmallow_utils.fields import ISODateString + +from zenodo_rdm.curation.tasks import run_eu_record_curation + + +class ArgsSchema(Schema): + """Schema of task input arguments.""" + + since = ISODateString() + job_arg_schema = fields.String( + metadata={"type": "hidden"}, + dump_default="ArgsSchema", + load_default="ArgsSchema", + ) + + +class EURecordCuration(JobType): + """EU Record Curation Job.""" + + arguments_schema = ArgsSchema + task = run_eu_record_curation + description = "Curate published records for EU community" + title = "EU Record Curation" + id = "eu_record_curation" + + @classmethod + def default_args(cls, job_obj, since=None, **kwargs): + """Generate default job arguments here.""" + if since is None and job_obj.last_runs["success"]: + since = job_obj.last_runs["success"].started_at + else: + since = since or datetime.now(timezone.utc) + + return {"since": str(since)} From 83701b7388c3120105d8880cb580b72930dedb10 Mon Sep 17 00:00:00 2001 From: yashlamba Date: Thu, 28 Nov 2024 16:30:23 +0100 Subject: [PATCH 2/2] curation: jobs: make title/description translatable --- site/zenodo_rdm/curation/jobs.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/site/zenodo_rdm/curation/jobs.py b/site/zenodo_rdm/curation/jobs.py index b1b8bde5..687c971e 100644 --- a/site/zenodo_rdm/curation/jobs.py +++ b/site/zenodo_rdm/curation/jobs.py @@ -8,6 +8,7 @@ from datetime import datetime, timezone +from invenio_i18n import lazy_gettext as _ from invenio_jobs.jobs import JobType from marshmallow import Schema, fields from marshmallow_utils.fields import ISODateString @@ -31,8 +32,8 @@ class EURecordCuration(JobType): arguments_schema = ArgsSchema task = run_eu_record_curation - description = "Curate published records for EU community" - title = "EU Record Curation" + description = _("Curate published records for EU community") + title = _("EU Record Curation") id = "eu_record_curation" @classmethod