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.
@@ -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"])
@@ -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 = VocabularyI18nStrUIField()
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 = VocabularyI18nStrUIField()
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(ma.fields.Nested(lambda: RDMAffiliationVocabularyUISchema()))
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
  Metadata-Version: 2.2
2
2
  Name: oarepo-runtime
3
- Version: 1.5.109
3
+ Version: 1.5.111
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -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=NiXqgag3QJABf06r5NiDYjd9AvoYoRY9UWiplo8Vcg4,2056
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=BDmjWrBQmBN4QbQE9t7EUNUuZ4uCtAAtJ0bQvJWQLtc,1249
133
- oarepo_runtime/services/schema/rdm_ui.py,sha256=zXdaS6-YUaIcTkZDustqLufoHtpVKp5PcgUnwgJ0skE,3043
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.109.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
150
- oarepo_runtime-1.5.109.dist-info/METADATA,sha256=mUMQ-D-mCSYUFtvaX5WL18tv1L4a6JrclX6bua5RncI,4721
151
- oarepo_runtime-1.5.109.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
152
- oarepo_runtime-1.5.109.dist-info/entry_points.txt,sha256=k7O5LZUOGsVeSpB7ulU0txBUNp1CVQG7Q7TJIVTPbzU,491
153
- oarepo_runtime-1.5.109.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
154
- oarepo_runtime-1.5.109.dist-info/RECORD,,
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,,