Skip to content

Commit 7f2cdf9

Browse files
Alzbeta PokornaAlzbeta Pokorna
authored andcommitted
rdm builder
1 parent 4772e5d commit 7f2cdf9

File tree

15 files changed

+175
-7
lines changed

15 files changed

+175
-7
lines changed

build-tests/thesis.yaml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ record:
33
metadata:
44
properties:
55
title:
6-
type: fulltext
6+
type: keyword
77
status:
88
type: keyword
99
module:
@@ -13,5 +13,22 @@ record:
1313
use:
1414
- invenio
1515
- rdm
16+
files:
17+
properties:
18+
metadata:
19+
properties:
20+
title:
21+
type: keyword
22+
permissions:
23+
presets: [ 'everyone' ]
24+
25+
draft: { }
26+
27+
draft-files:
28+
permissions:
29+
presets: [ 'everyone' ]
1630
profiles:
1731
- record
32+
- draft
33+
- files
34+
- draft_files

oarepo_model_builder_rdm/builtin_models/rdm.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"access": {
44
"marshmallow": {
55
"generate": false,
6+
"field-class": "marshmallow_utils.fields.nestedattr.NestedAttribute",
67
"class": "invenio_rdm_records.services.schemas.access.AccessSchema"
78
},
89
"sample": {
@@ -42,7 +43,7 @@
4243
},
4344
"json-schema": {
4445
"type": [
45-
"date",
46+
"string",
4647
"null"
4748
]
4849
}
@@ -54,7 +55,7 @@
5455
},
5556
"json-schema": {
5657
"type": [
57-
"fulltext",
58+
"string",
5859
"null"
5960
]
6061
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1+
from .service import RDMServiceComponent
2+
from .record import RDMRecordModelComponent
3+
from .ext_resource import RDMExtResourceModelComponent
4+
from .draft_record import RDMDraftParentComponent
5+
from .marshmallow import RDMMarshmallowModelComponent
6+
from .published_service import RDMPublishedServiceComponent
17

8+
RDM_COMPONENTS = [
9+
RDMServiceComponent,
10+
RDMRecordModelComponent,
11+
RDMExtResourceModelComponent,
12+
RDMDraftParentComponent,
13+
RDMMarshmallowModelComponent,
14+
RDMPublishedServiceComponent
15+
]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from oarepo_model_builder.datatypes import DataTypeComponent, ModelDataType
2+
from oarepo_model_builder_drafts.datatypes.components import DraftParentComponent
3+
4+
class RDMDraftParentComponent(DataTypeComponent):
5+
eligible_datatypes = [ModelDataType]
6+
depends_on = [DraftParentComponent]
7+
8+
def process_mb_invenio_drafts_parent_additional_fields(
9+
self, datatype, section, **kwargs
10+
):
11+
obj = section.config.setdefault("additional-fields", {})
12+
if 'owners' in obj and obj['owners'] == '{{oarepo_runtime.records.systemfields.owner.OwnersField}}()':
13+
del obj['owners']
14+
15+
16+
def before_model_prepare(self, datatype, *, context, **kwargs):
17+
if "draft-parent-record" in datatype.definition:
18+
datatype.definition["draft-parent-record"]["base-classes"] = ["invenio_rdm_records.records.api.RDMParent"]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from oarepo_model_builder.datatypes import DataTypeComponent, ModelDataType
2+
from oarepo_model_builder.datatypes.components import ExtResourceModelComponent
3+
from oarepo_model_builder.datatypes.components import AppModelComponent
4+
class RDMExtResourceModelComponent(DataTypeComponent):
5+
eligible_datatypes = [ModelDataType]
6+
depends_on = [ExtResourceModelComponent, AppModelComponent]
7+
8+
def before_model_prepare(self, datatype, *, context, **kwargs):
9+
if not datatype.profile == "record":
10+
return
11+
ext_resource = datatype.definition['ext-resource']
12+
print(ext_resource)
13+
ext_resource['service-kwargs']["pids_service"] = "{{invenio_rdm_records.services.pids.PIDsService}}(config_class, {{invenio_rdm_records.services.pids.PIDManager}})"
14+
datatype.definition['ext-resource'] = ext_resource
15+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from oarepo_model_builder.datatypes import ModelDataType
2+
from oarepo_model_builder.datatypes.components import MarshmallowModelComponent
3+
from oarepo_model_builder.datatypes import DataTypeComponent
4+
5+
6+
class RDMMarshmallowModelComponent(DataTypeComponent):
7+
eligible_datatypes = [ModelDataType]
8+
depends_on = [MarshmallowModelComponent]
9+
10+
def before_model_prepare(self, datatype, *, context, **kwargs):
11+
if datatype.root.profile == "record":
12+
datatype.definition["marshmallow"]["base-classes"].append("oarepo_runtime.services.schema.rdm.RDMRecordMixin")
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from oarepo_model_builder.datatypes import ModelDataType
2+
from oarepo_model_builder_drafts.datatypes.components import PublishedServiceComponent
3+
from oarepo_model_builder.datatypes import DataTypeComponent
4+
5+
class RDMPublishedServiceComponent(DataTypeComponent):
6+
eligible_datatypes = [ModelDataType]
7+
depends_on = [PublishedServiceComponent]
8+
9+
def before_model_prepare(self, datatype, *, context, **kwargs):
10+
pass
11+
# datatype.definition["published-service"]["base-classes"] = ["invenio_rdm_records.services.services.RDMRecordService"]
12+
# datatype.definition["published-service-config"]["base-classes"] = [
13+
# "oarepo_runtime.services.config.service.PermissionsPresetsConfigMixin",
14+
# "invenio_rdm_records.services.config.RDMRecordServiceConfig"]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from oarepo_model_builder.datatypes import ModelDataType
2+
from oarepo_model_builder.datatypes.components import RecordModelComponent
3+
from oarepo_model_builder.datatypes import DataTypeComponent
4+
from oarepo_model_builder_drafts.datatypes.components import DraftRecordModelComponent
5+
6+
class RDMRecordModelComponent(DataTypeComponent):
7+
eligible_datatypes = [ModelDataType]
8+
depends_on = [RecordModelComponent, DraftRecordModelComponent]
9+
10+
def before_model_prepare(self, datatype, *, context, **kwargs):
11+
if datatype.root.profile == "draft":
12+
datatype.definition["record"]["base-classes"] = ["invenio_rdm_records.records.api.RDMDraft"]
13+
elif datatype.root.profile == "record":
14+
datatype.definition["record"]["base-classes"] = ["invenio_rdm_records.records.api.RDMRecord"]
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from oarepo_model_builder.datatypes import DataTypeComponent
2+
from oarepo_model_builder.datatypes.components.model import ServiceModelComponent
3+
from oarepo_model_builder.datatypes.model import ModelDataType
4+
from oarepo_model_builder.datatypes.components.model.utils import set_default
5+
6+
class RDMServiceComponent(DataTypeComponent):
7+
eligible_datatypes = [ModelDataType]
8+
depends_on = [ServiceModelComponent]
9+
10+
def before_model_prepare(self, datatype, *, context, **kwargs):
11+
if not datatype.profile in ["record", "draft"]:
12+
return
13+
datatype.definition["service"]["base-classes"] = ["invenio_rdm_records.services.services.RDMRecordService"]
14+
datatype.definition["service-config"]["base-classes"] = ["oarepo_runtime.services.config.service.PermissionsPresetsConfigMixin",
15+
"invenio_rdm_records.services.config.RDMRecordServiceConfig"]
16+
# service = set_default(datatype, "service", {})
17+
# service.setdefault(
18+
# "base-classes",
19+
# ["invenio_rdm_records.services.services.RDMRecordService"],
20+
# )
21+
# print("jej")
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
TEMPLATES = {
2+
"rdm-record-metadata": "templates/rdm_record_metadata.py.jinja2",
3+
}

0 commit comments

Comments
 (0)