-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Ronald Krist
committed
Feb 13, 2024
1 parent
584286e
commit 3671cad
Showing
15 changed files
with
485 additions
and
198 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
88 changes: 88 additions & 0 deletions
88
oarepo_model_builder/datatypes/components/model/record_item.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
import marshmallow as ma | ||
|
||
from oarepo_model_builder.datatypes import DataTypeComponent, ModelDataType | ||
from oarepo_model_builder.utils.python_name import ( | ||
convert_config_to_qualified_name, | ||
package_name, | ||
) | ||
from oarepo_model_builder.validation.utils import ImportSchema | ||
|
||
from .service import ServiceModelComponent | ||
|
||
# from .app import AppModelComponent | ||
# from .defaults import DefaultsModelComponent | ||
from .utils import set_default | ||
|
||
|
||
class RecordItemClassSchema(ma.Schema): | ||
class Meta: | ||
unknown = ma.RAISE | ||
|
||
generate = ma.fields.Bool(metadata={"doc": "Generate the service config"}) | ||
class_ = ma.fields.Str( | ||
attribute="class", | ||
data_key="class", | ||
metadata={"doc": "Qualified name of the service config class"}, | ||
) | ||
base_classes = ma.fields.List( | ||
ma.fields.Str(), | ||
attribute="base-classes", | ||
data_key="base-classes", | ||
metadata={"doc": "List of base classes"}, | ||
) | ||
extra_code = ma.fields.Str( | ||
attribute="extra-code", | ||
data_key="extra-code", | ||
metadata={"doc": "Extra code to be put below the service config class"}, | ||
) | ||
components = ma.fields.List( | ||
ma.fields.String(), metadata={"doc": "List of service components"} | ||
) | ||
module = ma.fields.String(metadata={"doc": "Class module"}) | ||
imports = ma.fields.List( | ||
ma.fields.Nested(ImportSchema), metadata={"doc": "List of python imports"} | ||
) | ||
skip = ma.fields.Boolean() | ||
|
||
|
||
class RecordItemModelComponent(DataTypeComponent): | ||
eligible_datatypes = [ModelDataType] | ||
depends_on = [ServiceModelComponent] | ||
|
||
class ModelSchema(ma.Schema): | ||
record_item = ma.fields.Nested( | ||
RecordItemClassSchema, | ||
attribute="record-item", | ||
data_key="record-item", | ||
metadata={"doc": "Record item class settings"}, | ||
) | ||
|
||
def before_model_prepare(self, datatype, *, context, **kwargs): | ||
record_prefix = datatype.definition["module"]["prefix"] | ||
|
||
service_package = package_name(datatype.definition["service-config"]["module"]) | ||
|
||
record_item_config = set_default(datatype, "record-item", {}) | ||
|
||
record_item_config.setdefault("generate", True) | ||
record_item_module = record_item_config.setdefault( | ||
"module", | ||
f"{service_package}.results", | ||
) | ||
record_item_config.setdefault( | ||
"class", | ||
f"{record_item_module}.{record_prefix}RecordItem", | ||
) | ||
record_item_config.setdefault("extra-code", "") | ||
record_item_config.setdefault( | ||
"base-classes", | ||
[ | ||
"oarepo_runtime.services.results.RecordItem", | ||
], | ||
) | ||
record_item_config.setdefault("components", []) | ||
record_item_config.setdefault( | ||
"imports", | ||
[], | ||
) | ||
convert_config_to_qualified_name(record_item_config) |
87 changes: 87 additions & 0 deletions
87
oarepo_model_builder/datatypes/components/model/record_list.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
import marshmallow as ma | ||
|
||
from oarepo_model_builder.datatypes import DataTypeComponent, ModelDataType | ||
from oarepo_model_builder.utils.python_name import ( | ||
convert_config_to_qualified_name, | ||
package_name, | ||
) | ||
from oarepo_model_builder.validation.utils import ImportSchema | ||
|
||
from .app import AppModelComponent | ||
from .defaults import DefaultsModelComponent | ||
from .service import ServiceModelComponent | ||
from .utils import set_default | ||
|
||
|
||
class RecordListClassSchema(ma.Schema): | ||
class Meta: | ||
unknown = ma.RAISE | ||
|
||
generate = ma.fields.Bool(metadata={"doc": "Generate the service config"}) | ||
class_ = ma.fields.Str( | ||
attribute="class", | ||
data_key="class", | ||
metadata={"doc": "Qualified name of the service config class"}, | ||
) | ||
base_classes = ma.fields.List( | ||
ma.fields.Str(), | ||
attribute="base-classes", | ||
data_key="base-classes", | ||
metadata={"doc": "List of base classes"}, | ||
) | ||
extra_code = ma.fields.Str( | ||
attribute="extra-code", | ||
data_key="extra-code", | ||
metadata={"doc": "Extra code to be put below the service config class"}, | ||
) | ||
components = ma.fields.List( | ||
ma.fields.String(), metadata={"doc": "List of service components"} | ||
) | ||
module = ma.fields.String(metadata={"doc": "Class module"}) | ||
imports = ma.fields.List( | ||
ma.fields.Nested(ImportSchema), metadata={"doc": "List of python imports"} | ||
) | ||
skip = ma.fields.Boolean() | ||
|
||
|
||
class RecordListModelComponent(DataTypeComponent): | ||
eligible_datatypes = [ModelDataType] | ||
depends_on = [DefaultsModelComponent, AppModelComponent, ServiceModelComponent] | ||
|
||
class ModelSchema(ma.Schema): | ||
record_list = ma.fields.Nested( | ||
RecordListClassSchema, | ||
attribute="record-list", | ||
data_key="record-list", | ||
metadata={"doc": "Record list class settings"}, | ||
) | ||
|
||
def before_model_prepare(self, datatype, *, context, **kwargs): | ||
record_prefix = datatype.definition["module"]["prefix"] | ||
|
||
service_package = package_name(datatype.definition["service-config"]["module"]) | ||
|
||
record_list_config = set_default(datatype, "record-list", {}) | ||
|
||
record_list_config.setdefault("generate", True) | ||
record_list_module = record_list_config.setdefault( | ||
"module", | ||
f"{service_package}.results", | ||
) | ||
record_list_config.setdefault( | ||
"class", | ||
f"{record_list_module}.{record_prefix}RecordList", | ||
) | ||
record_list_config.setdefault("extra-code", "") | ||
record_list_config.setdefault( | ||
"base-classes", | ||
[ | ||
"oarepo_runtime.services.results.RecordList", | ||
], | ||
) | ||
record_list_config.setdefault("components", []) | ||
record_list_config.setdefault( | ||
"imports", | ||
[], | ||
) | ||
convert_config_to_qualified_name(record_list_config) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
from .invenio_base import InvenioBaseClassPythonBuilder | ||
|
||
|
||
class InvenioRecordItemBuilder(InvenioBaseClassPythonBuilder): | ||
TYPE = "invenio_record_item" | ||
section = "record-item" | ||
template = "record-item" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
from .invenio_base import InvenioBaseClassPythonBuilder | ||
|
||
|
||
class InvenioRecordListBuilder(InvenioBaseClassPythonBuilder): | ||
TYPE = "invenio_record_list" | ||
section = "record-list" | ||
template = "record-list" |
10 changes: 10 additions & 0 deletions
10
oarepo_model_builder/invenio/templates/record_item.py.jinja2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{{ vars.record_item|imports }} | ||
{% for c in vars.record_item.components %} | ||
{{ c|code_imports }} | ||
{% endfor %} | ||
|
||
class {{ vars.record_item|class_header }}: | ||
"""{{ vars.record.class|base_name }} record item.""" | ||
components = [ {% for b in vars.record_item.base_classes %}*{{ b|base_name }}.components{% if not loop.last %}, {% endif %}{% endfor %}{% for c in vars.record_item.components %}, {{ c|extra_code }} {% endfor %}] | ||
|
||
{{ vars.record_item|extra_code }} |
10 changes: 10 additions & 0 deletions
10
oarepo_model_builder/invenio/templates/record_list.py.jinja2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{{ vars.record_list|imports }} | ||
{% for c in vars.record_list.components %} | ||
{{ c|code_imports }} | ||
{% endfor %} | ||
|
||
class {{ vars.record_list|class_header }}: | ||
"""{{ vars.record.class|base_name }} record list.""" | ||
components = [ {% for b in vars.record_list.base_classes %}*{{ b|base_name }}.components{% if not loop.last %}, {% endif %}{% endfor %}{% for c in vars.record_list.components %}, {{ c|extra_code }} {% endfor %}] | ||
|
||
{{ vars.record_list|extra_code }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.