oarepo-runtime 1.5.109__py3-none-any.whl → 1.5.111__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- oarepo_runtime/datastreams/writers/publish.py +49 -0
- oarepo_runtime/ext_config.py +2 -0
- oarepo_runtime/services/schema/rdm.py +2 -2
- oarepo_runtime/services/schema/rdm_ui.py +15 -4
- {oarepo_runtime-1.5.109.dist-info → oarepo_runtime-1.5.111.dist-info}/METADATA +1 -1
- {oarepo_runtime-1.5.109.dist-info → oarepo_runtime-1.5.111.dist-info}/RECORD +10 -9
- {oarepo_runtime-1.5.109.dist-info → oarepo_runtime-1.5.111.dist-info}/LICENSE +0 -0
- {oarepo_runtime-1.5.109.dist-info → oarepo_runtime-1.5.111.dist-info}/WHEEL +0 -0
- {oarepo_runtime-1.5.109.dist-info → oarepo_runtime-1.5.111.dist-info}/entry_points.txt +0 -0
- {oarepo_runtime-1.5.109.dist-info → oarepo_runtime-1.5.111.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
from invenio_access.permissions import system_identity
|
2
|
+
from invenio_records_resources.proxies import current_service_registry
|
3
|
+
|
4
|
+
from oarepo_runtime.datastreams.types import StreamBatch, StreamEntry
|
5
|
+
from oarepo_runtime.datastreams.writers import BaseWriter
|
6
|
+
from oarepo_runtime.datastreams.writers.utils import record_invenio_exceptions
|
7
|
+
|
8
|
+
|
9
|
+
class PublishWriter(BaseWriter):
|
10
|
+
def __init__(
|
11
|
+
self, *, service, request_name="publish_draft", identity=None, **kwargs
|
12
|
+
):
|
13
|
+
if isinstance(service, str):
|
14
|
+
service = current_service_registry.get(service)
|
15
|
+
|
16
|
+
self._service = service
|
17
|
+
self._identity = identity or system_identity
|
18
|
+
self._request_name = request_name
|
19
|
+
|
20
|
+
def write(self, batch: StreamBatch) -> StreamBatch:
|
21
|
+
for entry in batch.ok_entries:
|
22
|
+
if entry.deleted:
|
23
|
+
continue
|
24
|
+
|
25
|
+
with record_invenio_exceptions(entry):
|
26
|
+
self._write_entry(entry)
|
27
|
+
|
28
|
+
def _write_entry(self, entry: StreamEntry):
|
29
|
+
from invenio_requests.proxies import (
|
30
|
+
current_requests_service as current_invenio_requests_service,
|
31
|
+
)
|
32
|
+
from oarepo_requests.proxies import current_oarepo_requests_service
|
33
|
+
|
34
|
+
draft = self._service.read_draft(self._identity, entry.id)
|
35
|
+
request = current_oarepo_requests_service.create(
|
36
|
+
identity=self._identity,
|
37
|
+
data=None,
|
38
|
+
request_type=self._request_name,
|
39
|
+
topic=draft._record,
|
40
|
+
)
|
41
|
+
|
42
|
+
submit_result = current_invenio_requests_service.execute_action(
|
43
|
+
self._identity, request.id, "submit"
|
44
|
+
)
|
45
|
+
accept_result = current_invenio_requests_service.execute_action(
|
46
|
+
self._identity, request.id, "accept"
|
47
|
+
)
|
48
|
+
|
49
|
+
self._service.read(self._identity, draft["id"])
|
oarepo_runtime/ext_config.py
CHANGED
@@ -9,6 +9,7 @@ from oarepo_runtime.datastreams.writers.attachments_file import AttachmentsFileW
|
|
9
9
|
from oarepo_runtime.datastreams.writers.attachments_service import (
|
10
10
|
AttachmentsServiceWriter,
|
11
11
|
)
|
12
|
+
from oarepo_runtime.datastreams.writers.publish import PublishWriter
|
12
13
|
from oarepo_runtime.datastreams.writers.service import ServiceWriter
|
13
14
|
from oarepo_runtime.datastreams.writers.yaml import YamlWriter
|
14
15
|
from oarepo_runtime.records.entity_resolvers import UserResolver
|
@@ -50,6 +51,7 @@ DATASTREAMS_WRITERS = {
|
|
50
51
|
"attachments_service": AttachmentsServiceWriter,
|
51
52
|
"yaml": YamlWriter,
|
52
53
|
"attachments_file": AttachmentsFileWriter,
|
54
|
+
"publish": PublishWriter,
|
53
55
|
}
|
54
56
|
|
55
57
|
DATASTREAMS_TRANSFORMERS = {}
|
@@ -10,8 +10,8 @@ from invenio_vocabularies.contrib.awards.schema import AwardRelationSchema
|
|
10
10
|
from invenio_vocabularies.contrib.funders.schema import FunderRelationSchema
|
11
11
|
from invenio_i18n.selectors import get_locale
|
12
12
|
|
13
|
-
class RDMRecordMixin(ma.Schema):
|
14
13
|
|
14
|
+
class RDMRecordMixin(ma.Schema):
|
15
15
|
versions = NestedAttribute(VersionsSchema, dump_only=True)
|
16
16
|
deletion_status = ma_fields.Nested(DeletionStatusSchema, dump_only=True)
|
17
17
|
|
@@ -22,7 +22,7 @@ class MultilingualAwardSchema(AwardRelationSchema):
|
|
22
22
|
|
23
23
|
@pre_load()
|
24
24
|
def convert_to_multilingual(self, data, many, **kwargs):
|
25
|
-
if "title" in data:
|
25
|
+
if "title" in data and type(data["title"]) is str:
|
26
26
|
lang = get_locale()
|
27
27
|
data["title"] = {lang: data["title"]}
|
28
28
|
return data
|
@@ -2,20 +2,24 @@ import marshmallow as ma
|
|
2
2
|
from oarepo_runtime.services.schema.marshmallow import DictOnlySchema
|
3
3
|
from oarepo_vocabularies.services.ui_schema import VocabularyI18nStrUIField
|
4
4
|
|
5
|
+
|
5
6
|
class RDMIdentifierWithSchemaUISchema(ma.Schema):
|
6
7
|
scheme = ma.fields.String(
|
7
8
|
required=True,
|
8
9
|
)
|
9
10
|
identifier = ma.fields.String(required=True)
|
10
11
|
|
12
|
+
|
11
13
|
class RDMAwardIdentifierUISchema(ma.Schema):
|
12
14
|
identifier = ma.fields.String()
|
13
15
|
|
16
|
+
|
14
17
|
class RDMAwardSubjectUISchema(ma.Schema):
|
15
18
|
_id = ma.fields.String(data_key="id")
|
16
19
|
|
17
20
|
subject = ma.fields.String()
|
18
21
|
|
22
|
+
|
19
23
|
class RDMAwardOrganizationUISchema(ma.Schema):
|
20
24
|
schema = ma.fields.String()
|
21
25
|
|
@@ -23,6 +27,7 @@ class RDMAwardOrganizationUISchema(ma.Schema):
|
|
23
27
|
|
24
28
|
organization = ma.fields.String()
|
25
29
|
|
30
|
+
|
26
31
|
class RDMFunderVocabularyUISchema(DictOnlySchema):
|
27
32
|
class Meta:
|
28
33
|
unknown = ma.INCLUDE
|
@@ -31,7 +36,7 @@ class RDMFunderVocabularyUISchema(DictOnlySchema):
|
|
31
36
|
|
32
37
|
_version = ma.fields.String(data_key="@v", attribute="@v")
|
33
38
|
|
34
|
-
name =
|
39
|
+
name = ma.fields.String()
|
35
40
|
|
36
41
|
identifiers = ma.fields.List(ma.fields.Nested(RDMIdentifierWithSchemaUISchema()))
|
37
42
|
|
@@ -44,6 +49,7 @@ class RDMRoleVocabularyUISchema(DictOnlySchema):
|
|
44
49
|
|
45
50
|
_version = ma.fields.String(data_key="@v", attribute="@v")
|
46
51
|
|
52
|
+
|
47
53
|
class RDMAwardVocabularyUISchema(DictOnlySchema):
|
48
54
|
class Meta:
|
49
55
|
unknown = ma.INCLUDE
|
@@ -69,6 +75,7 @@ class RDMAwardVocabularyUISchema(DictOnlySchema):
|
|
69
75
|
|
70
76
|
class RDMFundersUISchema(ma.Schema):
|
71
77
|
"""Funding ui schema."""
|
78
|
+
|
72
79
|
class Meta:
|
73
80
|
unknown = ma.RAISE
|
74
81
|
|
@@ -100,15 +107,19 @@ class RDMAffiliationVocabularyUISchema(DictOnlySchema):
|
|
100
107
|
|
101
108
|
_version = ma.fields.String(data_key="@v", attribute="@v")
|
102
109
|
|
103
|
-
name =
|
110
|
+
name = ma.fields.String()
|
111
|
+
|
104
112
|
|
105
113
|
class RDMCreatorsUISchema(ma.Schema):
|
106
114
|
"""Funding ui schema."""
|
115
|
+
|
107
116
|
class Meta:
|
108
117
|
unknown = ma.RAISE
|
109
118
|
|
110
119
|
role = ma.fields.Nested(lambda: RDMRoleVocabularyUISchema())
|
111
120
|
|
112
|
-
affiliations = ma.fields.List(
|
121
|
+
affiliations = ma.fields.List(
|
122
|
+
ma.fields.Nested(lambda: RDMAffiliationVocabularyUISchema())
|
123
|
+
)
|
113
124
|
|
114
|
-
person_or_org = ma.fields.Nested(RDMPersonOrOrganizationUISchema())
|
125
|
+
person_or_org = ma.fields.Nested(RDMPersonOrOrganizationUISchema())
|
@@ -1,6 +1,6 @@
|
|
1
1
|
oarepo_runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
oarepo_runtime/ext.py,sha256=6w6bpTpNjjj3txgVu0nfpmPa9CnDS6Zl6U2DCNs9Usc,2565
|
3
|
-
oarepo_runtime/ext_config.py,sha256=
|
3
|
+
oarepo_runtime/ext_config.py,sha256=ERpi6uJqDE6OpqebB_vuusmoB3xaAziuKeGVxVI5Q-w,2155
|
4
4
|
oarepo_runtime/profile.py,sha256=QzrQoZncjoN74ZZnpkEKakNk08KCzBU7m6y42RN8AMY,1637
|
5
5
|
oarepo_runtime/proxies.py,sha256=NN_WNj1xuKc-OveoZmzvTFlUonNjSmLIGsv_JUcHGls,285
|
6
6
|
oarepo_runtime/tasks.py,sha256=AciXN1fUq6tzfzNSICh1S6XoHGWiuH76bUqXyzTsOPU,140
|
@@ -41,6 +41,7 @@ oarepo_runtime/datastreams/readers/yaml.py,sha256=U4nyJQ8ocM_ohp-eUN1RjVoNzYV9z7
|
|
41
41
|
oarepo_runtime/datastreams/writers/__init__.py,sha256=PWufWNrixFhXv5wSv3_pzmrimroqVB2DVgTxVtY5FCg,526
|
42
42
|
oarepo_runtime/datastreams/writers/attachments_file.py,sha256=kV_IPAWawJ9PX-IfoncmLQXpdTbzRMsJie8uKX1vNp0,3161
|
43
43
|
oarepo_runtime/datastreams/writers/attachments_service.py,sha256=g_tbjUA3YnTE5gP21zlG2kIxneZsn0q95EVjlxB8s1M,4152
|
44
|
+
oarepo_runtime/datastreams/writers/publish.py,sha256=rU1HgIR2OO1CyA_QBe1MGHiZmcfKthrLYYlw6Laj9Gk,1795
|
44
45
|
oarepo_runtime/datastreams/writers/service.py,sha256=PvCxYASDxOqT6iyL6cjw0aH41LaC1vwob4W3vnE9XmA,3920
|
45
46
|
oarepo_runtime/datastreams/writers/utils.py,sha256=Lk_ZLNeXTLuFEn04lw1-6bJ7duG6kwA8X4wf9c_GiL4,1067
|
46
47
|
oarepo_runtime/datastreams/writers/validation_errors.py,sha256=wOCXdniR6so_4ExpdFYYgBRyENp7_6kVFZM2L-Hy3G8,661
|
@@ -129,8 +130,8 @@ oarepo_runtime/services/schema/marshmallow.py,sha256=iAMMH5MlYs59qetXAHOROvERNSc
|
|
129
130
|
oarepo_runtime/services/schema/marshmallow_to_json_schema.py,sha256=VYLnVWHOoaxWCD_gqJO8-8u1SbaPEFBjDZ5HGgGr0Ow,2027
|
130
131
|
oarepo_runtime/services/schema/oneofschema.py,sha256=GnWH4Or_G5M0NgSmCoqMI6PBrJg5AC9RHrcB5QDKRq0,6661
|
131
132
|
oarepo_runtime/services/schema/polymorphic.py,sha256=bAbUoTIeDBiJPYPhpLEKKZekEdkHlpqkmNxk1hN3PDw,564
|
132
|
-
oarepo_runtime/services/schema/rdm.py,sha256=
|
133
|
-
oarepo_runtime/services/schema/rdm_ui.py,sha256=
|
133
|
+
oarepo_runtime/services/schema/rdm.py,sha256=dBy1KCJ_XYAN_cffoRqLfQVEdZOKwmSpqGdEP4OL64k,1280
|
134
|
+
oarepo_runtime/services/schema/rdm_ui.py,sha256=KO7UGrejhaFa65CdcQ96K7jpQSdj_35CYa2pwpgxf1s,3051
|
134
135
|
oarepo_runtime/services/schema/ui.py,sha256=hHbj1S-DW1WqgYX31f6UjarY4wrE-qFLpH3oUhvGLyE,6192
|
135
136
|
oarepo_runtime/services/schema/validation.py,sha256=VFOKSxQLHwFb7bW8BJAFXWe_iTAZFOfqOnb2Ko_Yxxc,2085
|
136
137
|
oarepo_runtime/translations/default_translations.py,sha256=060GBlA1ghWxfeumo6NqxCCZDb-6OezOuF6pr-_GEOQ,104
|
@@ -146,9 +147,9 @@ tests/marshmallow_to_json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
146
147
|
tests/marshmallow_to_json/test_datacite_ui_schema.py,sha256=82iLj8nW45lZOUewpWbLX3mpSkpa9lxo-vK-Qtv_1bU,48552
|
147
148
|
tests/marshmallow_to_json/test_simple_schema.py,sha256=izZN9p0v6kovtSZ6AdxBYmK_c6ZOti2_z_wPT_zXIr0,1500
|
148
149
|
tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
149
|
-
oarepo_runtime-1.5.
|
150
|
-
oarepo_runtime-1.5.
|
151
|
-
oarepo_runtime-1.5.
|
152
|
-
oarepo_runtime-1.5.
|
153
|
-
oarepo_runtime-1.5.
|
154
|
-
oarepo_runtime-1.5.
|
150
|
+
oarepo_runtime-1.5.111.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
|
151
|
+
oarepo_runtime-1.5.111.dist-info/METADATA,sha256=siwU9jj_7KHqtqhGWSUur7Z0LEKf3_h4PXd-3xr0J58,4721
|
152
|
+
oarepo_runtime-1.5.111.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
153
|
+
oarepo_runtime-1.5.111.dist-info/entry_points.txt,sha256=k7O5LZUOGsVeSpB7ulU0txBUNp1CVQG7Q7TJIVTPbzU,491
|
154
|
+
oarepo_runtime-1.5.111.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
|
155
|
+
oarepo_runtime-1.5.111.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|