oarepo-runtime 1.5.69__py3-none-any.whl → 1.5.70__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- oarepo_runtime/services/entity/__init__.py +0 -0
- oarepo_runtime/services/entity/config.py +14 -0
- oarepo_runtime/services/entity/schema.py +9 -0
- oarepo_runtime/services/entity/service.py +48 -0
- oarepo_runtime/services/results.py +50 -0
- {oarepo_runtime-1.5.69.dist-info → oarepo_runtime-1.5.70.dist-info}/METADATA +1 -1
- {oarepo_runtime-1.5.69.dist-info → oarepo_runtime-1.5.70.dist-info}/RECORD +11 -7
- {oarepo_runtime-1.5.69.dist-info → oarepo_runtime-1.5.70.dist-info}/LICENSE +0 -0
- {oarepo_runtime-1.5.69.dist-info → oarepo_runtime-1.5.70.dist-info}/WHEEL +0 -0
- {oarepo_runtime-1.5.69.dist-info → oarepo_runtime-1.5.70.dist-info}/entry_points.txt +0 -0
- {oarepo_runtime-1.5.69.dist-info → oarepo_runtime-1.5.70.dist-info}/top_level.txt +0 -0
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,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
|
@@ -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=
|
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.
|
130
|
-
oarepo_runtime-1.5.
|
131
|
-
oarepo_runtime-1.5.
|
132
|
-
oarepo_runtime-1.5.
|
133
|
-
oarepo_runtime-1.5.
|
134
|
-
oarepo_runtime-1.5.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|