diff --git a/build-tests/thesis.yaml b/build-tests/thesis.yaml index 85d82fe..908285a 100644 --- a/build-tests/thesis.yaml +++ b/build-tests/thesis.yaml @@ -17,6 +17,9 @@ record: draft: extra-code: |-2 test_options = "test" + draft-parent-record: + fields: + answer: "{{invenio_records.systemfields.constant.ConstantField}}('answer', 42)" resource-config: base-html-url: /ui/ diff --git a/oarepo_model_builder_drafts/datatypes/components/draft_model/draft_parent.py b/oarepo_model_builder_drafts/datatypes/components/draft_model/draft_parent.py index 5f3d28c..4623685 100644 --- a/oarepo_model_builder_drafts/datatypes/components/draft_model/draft_parent.py +++ b/oarepo_model_builder_drafts/datatypes/components/draft_model/draft_parent.py @@ -10,6 +10,8 @@ from oarepo_model_builder.utils.python_name import module_to_path, parent_module from oarepo_model_builder.validation.utils import ImportSchema +# TODO: consider moving all "parent" related record fields to "parent" section and profile + class DraftParentRecordSchema(ma.Schema): class Meta: @@ -37,6 +39,11 @@ class Meta: ) skip = ma.fields.Boolean() generate = ma.fields.Boolean() + fields = ma.fields.Dict( + attribute="fields", + data_key="fields", + metadata={"doc": "Extra fields to add to the class"}, + ) class DraftParentRecordStateSchema(ma.Schema): @@ -166,6 +173,7 @@ def before_model_prepare(self, datatype, *, context, **kwargs): "base-classes", ["invenio_drafts_resources.records.api.ParentRecord"] ) draft_parent_record.setdefault("imports", []) + draft_parent_record.setdefault("fields", {}) draft_parent_record.setdefault("module", record_module) draft_parent_record.setdefault("generate", True) diff --git a/oarepo_model_builder_drafts/invenio/templates/invenio_drafts_parent_record.py.jinja2 b/oarepo_model_builder_drafts/invenio/templates/invenio_drafts_parent_record.py.jinja2 index 2778b6d..7889412 100644 --- a/oarepo_model_builder_drafts/invenio/templates/invenio_drafts_parent_record.py.jinja2 +++ b/oarepo_model_builder_drafts/invenio/templates/invenio_drafts_parent_record.py.jinja2 @@ -3,6 +3,15 @@ from invenio_records.systemfields import ConstantField {{ vars.draft_parent_record|imports }} {{ vars.draft_parent_record_metadata.class|generate_import }} +{% for extra_field_value in vars.draft_parent_record.fields.values() %} +{{ extra_field_value|code_imports }} +{% endfor %} + + class {{ vars.draft_parent_record|class_header }}: model_cls = {{ vars.draft_parent_record_metadata.class|base_name }} + +{% for extra_field_name, extra_field_value in vars.draft_parent_record.fields.items() %} + {{ extra_field_name }} = {{ extra_field_value|extra_code }} +{% endfor %} {% endif %} \ No newline at end of file diff --git a/run-tests.sh b/run-tests.sh index 8197504..27a406f 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e -OAREPO_VERSION=${OAREPO_VERSION:-11} +OAREPO_VERSION=${OAREPO_VERSION:-12} BUILDER_VENV=".venv-builder" if test -d $BUILDER_VENV ; then diff --git a/setup.cfg b/setup.cfg index d3e296c..d14dbdd 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = oarepo-model-builder-drafts -version = 4.0.30 +version = 4.0.31 description = authors = Ronald Krist readme = README.md