oarepo-runtime 1.5.68__py3-none-any.whl → 1.5.70__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.
@@ -51,7 +51,7 @@ class AttachmentsServiceWriter(BaseWriter):
51
51
 
52
52
  with BulkUnitOfWork() as uow:
53
53
  for entry in batch.entries:
54
- if not entry.ok or entry.deleted:
54
+ if not entry.ok or entry.deleted or not entry.entry["files"]["enabled"]:
55
55
  continue
56
56
  with record_invenio_exceptions(entry):
57
57
  self._write_attachments(entry, uow)
File without changes
@@ -0,0 +1,14 @@
1
+ from invenio_records_resources.services.base.config import ServiceConfig
2
+
3
+ from ..results import ArrayRecordItem, ArrayRecordList
4
+ from .schema import KeywordEntitySchema
5
+
6
+
7
+ class EntityServiceConfig(ServiceConfig):
8
+ links_item = {}
9
+ result_item_cls = ArrayRecordItem
10
+ result_list_cls = ArrayRecordList
11
+
12
+
13
+ class KeywordEntityServiceConfig(EntityServiceConfig):
14
+ schema = KeywordEntitySchema
@@ -0,0 +1,9 @@
1
+ from marshmallow import Schema, fields
2
+
3
+
4
+ #
5
+ # The default record schema
6
+ #
7
+ class KeywordEntitySchema(Schema):
8
+ keyword = fields.Str()
9
+ id = fields.Str()
@@ -0,0 +1,48 @@
1
+ import abc
2
+ from typing import Iterable
3
+
4
+ from invenio_records_resources.services.base.links import LinksTemplate
5
+ from invenio_records_resources.services.base.service import Service
6
+ from invenio_records_resources.services.records.schema import ServiceSchemaWrapper
7
+
8
+
9
+ class EntityService(Service):
10
+ @property
11
+ def links_item_tpl(self):
12
+ """Item links template."""
13
+ return LinksTemplate(
14
+ self.config.links_item,
15
+ )
16
+
17
+ @property
18
+ def schema(self):
19
+ """Returns the data schema instance."""
20
+ return ServiceSchemaWrapper(self, schema=self.config.schema)
21
+
22
+ @abc.abstractmethod
23
+ def read(self, identity, id_, **kwargs):
24
+ raise NotImplementedError()
25
+
26
+ @abc.abstractmethod
27
+ def read_many(self, identity, ids: Iterable[str], fields=None, **kwargs):
28
+ raise NotImplementedError()
29
+
30
+
31
+ class KeywordEntityService(EntityService):
32
+
33
+ def read(self, identity, id_, **kwargs):
34
+ result = {"keyword": self.config.keyword, "id": id_}
35
+ return self.result_item(
36
+ self, identity, record=result, links_tpl=self.links_item_tpl
37
+ )
38
+
39
+ def read_many(self, identity, ids: Iterable[str], fields=None, **kwargs):
40
+ if not ids:
41
+ return []
42
+ results = [{"keyword": self.config.keyword, "id": id} for id in ids]
43
+ return self.result_list(
44
+ self,
45
+ identity,
46
+ results=results,
47
+ links_item_tpl=self.links_item_tpl,
48
+ )
@@ -88,3 +88,53 @@ class RecordList(BaseRecordList):
88
88
  expand=self._expand,
89
89
  )
90
90
  yield projection
91
+
92
+
93
+ class ArrayRecordItem(RecordItem):
94
+ """Single record result."""
95
+
96
+ @property
97
+ def id(self):
98
+ """Get the record id."""
99
+ return self._record["id"]
100
+
101
+
102
+ class ArrayRecordList(RecordList):
103
+ # move to runtime
104
+
105
+ @property
106
+ def total(self):
107
+ """Get total number of hits."""
108
+ return len(self._results)
109
+
110
+ @property
111
+ def aggregations(self):
112
+ """Get the search result aggregations."""
113
+ return None
114
+
115
+ @property
116
+ def hits(self):
117
+ """Iterator over the hits."""
118
+ for hit in self._results:
119
+ # Project the record
120
+ projection = self._schema.dump(
121
+ hit,
122
+ context=dict(
123
+ identity=self._identity,
124
+ record=hit,
125
+ ),
126
+ )
127
+ if self._links_item_tpl:
128
+ projection["links"] = self._links_item_tpl.expand(self._identity, hit)
129
+ if self._nested_links_item:
130
+ for link in self._nested_links_item:
131
+ link.expand(self._identity, hit, projection)
132
+
133
+ for c in self.components:
134
+ c.update_data(
135
+ identity=self._identity,
136
+ record=hit,
137
+ projection=projection,
138
+ expand=self._expand,
139
+ )
140
+ yield projection
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oarepo-runtime
3
- Version: 1.5.68
3
+ Version: 1.5.70
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -35,7 +35,7 @@ oarepo_runtime/datastreams/readers/service.py,sha256=izIMcrsUr4_qRZXHKQZs7Tyn1Op
35
35
  oarepo_runtime/datastreams/readers/yaml.py,sha256=U4nyJQ8ocM_ohp-eUN1RjVoNzYV9z7xQ1XiQKG_B9Kk,408
36
36
  oarepo_runtime/datastreams/writers/__init__.py,sha256=PWufWNrixFhXv5wSv3_pzmrimroqVB2DVgTxVtY5FCg,526
37
37
  oarepo_runtime/datastreams/writers/attachments_file.py,sha256=kV_IPAWawJ9PX-IfoncmLQXpdTbzRMsJie8uKX1vNp0,3161
38
- oarepo_runtime/datastreams/writers/attachments_service.py,sha256=Ot-kBHILo9JLwwYZ_HxDYoCNpf9nLzp4_q1TU-EQRGA,4113
38
+ oarepo_runtime/datastreams/writers/attachments_service.py,sha256=g_tbjUA3YnTE5gP21zlG2kIxneZsn0q95EVjlxB8s1M,4152
39
39
  oarepo_runtime/datastreams/writers/service.py,sha256=PvCxYASDxOqT6iyL6cjw0aH41LaC1vwob4W3vnE9XmA,3920
40
40
  oarepo_runtime/datastreams/writers/utils.py,sha256=Lk_ZLNeXTLuFEn04lw1-6bJ7duG6kwA8X4wf9c_GiL4,1067
41
41
  oarepo_runtime/datastreams/writers/validation_errors.py,sha256=wOCXdniR6so_4ExpdFYYgBRyENp7_6kVFZM2L-Hy3G8,661
@@ -73,13 +73,17 @@ oarepo_runtime/resources/localized_ui_json_serializer.py,sha256=3V9cJaG_e1PMXKVX
73
73
  oarepo_runtime/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  oarepo_runtime/services/components.py,sha256=zaZroTqzV5fz8yVAtRFLbbkTT9iD_dx9jFYANm3JIfI,3285
75
75
  oarepo_runtime/services/generators.py,sha256=j87HitHA_w2awsz0C5IAAJ0qjg9JMtvdO3dvh6FQyfg,250
76
- oarepo_runtime/services/results.py,sha256=gPmQ7DzX4da5zuvqQE7u-AUn_Yvz-YHt8W8DaxPbQ-M,2706
76
+ oarepo_runtime/services/results.py,sha256=_Din6CxQH7E5TP0TVZjIXJb2vyJRL_o_97jkUQo-GOc,4062
77
77
  oarepo_runtime/services/search.py,sha256=9xGTN5Yg6eTdptQ9qjO_umbacf9ooMuHYGXWYfla4-M,6227
78
78
  oarepo_runtime/services/config/__init__.py,sha256=dtlD84pJ6xI77UF22IPrCOt7tHD3g5DAEDApUdjDVFE,406
79
79
  oarepo_runtime/services/config/permissions_presets.py,sha256=zApeA-2DYAlD--SzVz3vq_OFjq48Ko0pe08e4o2vxr4,6114
80
80
  oarepo_runtime/services/config/service.py,sha256=s-dVbGkLICpsce6jgu7b5kzYFz9opWjSQFDBgbIhKio,4002
81
81
  oarepo_runtime/services/custom_fields/__init__.py,sha256=_gqMcA_I3rdEZcBtCuDjO4wdVCqFML5NzaccuPx5a3o,2565
82
82
  oarepo_runtime/services/custom_fields/mappings.py,sha256=tg9CAdxGOkd_n6RB5Z2_wSwo_A0wqEey8RMcZ79AHo0,6906
83
+ oarepo_runtime/services/entity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ oarepo_runtime/services/entity/config.py,sha256=1jfdPrxSbMuKj7eOUNKRWTCPbBPyRV6MrWE4Vgf9rX0,399
85
+ oarepo_runtime/services/entity/schema.py,sha256=8TBpUFRITaBO7qCMz36cly1Hj4I1nLa9PeSAfWSa2YM,157
86
+ oarepo_runtime/services/entity/service.py,sha256=Y8QJ4sWZpX89IKTyo90pJlRfEN-iWg9tFN_5_RGMiaQ,1475
83
87
  oarepo_runtime/services/expansions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
88
  oarepo_runtime/services/expansions/expandable_fields.py,sha256=7DWKFL6ml8J7zGI6wm9LO7Xd6R0LSylsuq4lyRumNHQ,745
85
89
  oarepo_runtime/services/expansions/service.py,sha256=HaEy76XOhDf__sQ91hi-8iH1hthM9q07pRhOmyZyVrs,144
@@ -126,9 +130,9 @@ tests/marshmallow_to_json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
126
130
  tests/marshmallow_to_json/test_datacite_ui_schema.py,sha256=82iLj8nW45lZOUewpWbLX3mpSkpa9lxo-vK-Qtv_1bU,48552
127
131
  tests/marshmallow_to_json/test_simple_schema.py,sha256=izZN9p0v6kovtSZ6AdxBYmK_c6ZOti2_z_wPT_zXIr0,1500
128
132
  tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
- oarepo_runtime-1.5.68.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
130
- oarepo_runtime-1.5.68.dist-info/METADATA,sha256=wGz7WMd-5Hw2XeQV-s5bEJyosJ9wbO-eKW0GdetW_uY,4720
131
- oarepo_runtime-1.5.68.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
132
- oarepo_runtime-1.5.68.dist-info/entry_points.txt,sha256=0cschM0RHc6UJ1uudhu4EP0hrVStPGpgMO-XEDGRtY4,430
133
- oarepo_runtime-1.5.68.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
134
- oarepo_runtime-1.5.68.dist-info/RECORD,,
133
+ oarepo_runtime-1.5.70.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
134
+ oarepo_runtime-1.5.70.dist-info/METADATA,sha256=cTigl40zh7RbRJmxmOuElSMoWYL8OaKTlTfqgVTjVtY,4720
135
+ oarepo_runtime-1.5.70.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
136
+ oarepo_runtime-1.5.70.dist-info/entry_points.txt,sha256=0cschM0RHc6UJ1uudhu4EP0hrVStPGpgMO-XEDGRtY4,430
137
+ oarepo_runtime-1.5.70.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
138
+ oarepo_runtime-1.5.70.dist-info/RECORD,,