oarepo-runtime 1.10.3__py3-none-any.whl → 2.0.0.dev3__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/__init__.py +24 -0
- oarepo_runtime/api.py +111 -0
- oarepo_runtime/cli/__init__.py +10 -21
- oarepo_runtime/cli/search.py +34 -0
- oarepo_runtime/config.py +86 -13
- oarepo_runtime/ext.py +64 -82
- oarepo_runtime/proxies.py +21 -5
- oarepo_runtime/records/__init__.py +11 -50
- oarepo_runtime/records/drafts.py +24 -18
- oarepo_runtime/records/mapping.py +84 -0
- oarepo_runtime/records/pid_providers.py +43 -7
- oarepo_runtime/records/systemfields/__init__.py +15 -33
- oarepo_runtime/records/systemfields/mapping.py +41 -24
- oarepo_runtime/records/systemfields/publication_status.py +59 -0
- oarepo_runtime/services/__init__.py +12 -0
- oarepo_runtime/services/config/__init__.py +15 -21
- oarepo_runtime/services/config/link_conditions.py +69 -75
- oarepo_runtime/services/config/permissions.py +62 -0
- oarepo_runtime/services/records/__init__.py +14 -1
- oarepo_runtime/services/records/links.py +21 -11
- oarepo_runtime/services/records/mapping.py +42 -0
- oarepo_runtime/services/results.py +98 -109
- oarepo_runtime/services/schema/__init__.py +12 -44
- oarepo_runtime/services/schema/i18n.py +47 -22
- oarepo_runtime/services/schema/i18n_ui.py +61 -24
- {oarepo_runtime-1.10.3.dist-info → oarepo_runtime-2.0.0.dev3.dist-info}/METADATA +9 -21
- oarepo_runtime-2.0.0.dev3.dist-info/RECORD +30 -0
- {oarepo_runtime-1.10.3.dist-info → oarepo_runtime-2.0.0.dev3.dist-info}/WHEEL +1 -2
- oarepo_runtime-2.0.0.dev3.dist-info/entry_points.txt +5 -0
- oarepo_runtime/cli/assets.py +0 -145
- oarepo_runtime/cli/base.py +0 -25
- oarepo_runtime/cli/cf.py +0 -15
- oarepo_runtime/cli/check.py +0 -167
- oarepo_runtime/cli/configuration.py +0 -51
- oarepo_runtime/cli/fixtures.py +0 -167
- oarepo_runtime/cli/index.py +0 -272
- oarepo_runtime/cli/permissions/__init__.py +0 -6
- oarepo_runtime/cli/permissions/base.py +0 -26
- oarepo_runtime/cli/permissions/evaluate.py +0 -63
- oarepo_runtime/cli/permissions/list.py +0 -239
- oarepo_runtime/cli/permissions/search.py +0 -121
- oarepo_runtime/cli/validate.py +0 -150
- oarepo_runtime/datastreams/__init__.py +0 -38
- oarepo_runtime/datastreams/asynchronous.py +0 -247
- oarepo_runtime/datastreams/catalogue.py +0 -150
- oarepo_runtime/datastreams/datastreams.py +0 -152
- oarepo_runtime/datastreams/errors.py +0 -54
- oarepo_runtime/datastreams/ext.py +0 -41
- oarepo_runtime/datastreams/fixtures.py +0 -265
- oarepo_runtime/datastreams/json.py +0 -4
- oarepo_runtime/datastreams/readers/__init__.py +0 -39
- oarepo_runtime/datastreams/readers/attachments.py +0 -51
- oarepo_runtime/datastreams/readers/excel.py +0 -123
- oarepo_runtime/datastreams/readers/json.py +0 -27
- oarepo_runtime/datastreams/readers/service.py +0 -54
- oarepo_runtime/datastreams/readers/yaml.py +0 -14
- oarepo_runtime/datastreams/semi_asynchronous.py +0 -91
- oarepo_runtime/datastreams/synchronous.py +0 -70
- oarepo_runtime/datastreams/transformers.py +0 -18
- oarepo_runtime/datastreams/types.py +0 -323
- oarepo_runtime/datastreams/utils.py +0 -131
- oarepo_runtime/datastreams/writers/__init__.py +0 -21
- oarepo_runtime/datastreams/writers/attachments_file.py +0 -92
- oarepo_runtime/datastreams/writers/attachments_service.py +0 -118
- oarepo_runtime/datastreams/writers/publish.py +0 -70
- oarepo_runtime/datastreams/writers/service.py +0 -175
- oarepo_runtime/datastreams/writers/utils.py +0 -30
- oarepo_runtime/datastreams/writers/validation_errors.py +0 -20
- oarepo_runtime/datastreams/writers/yaml.py +0 -56
- oarepo_runtime/ext_config.py +0 -67
- oarepo_runtime/i18n/__init__.py +0 -3
- oarepo_runtime/info/__init__.py +0 -0
- oarepo_runtime/info/check.py +0 -95
- oarepo_runtime/info/permissions/__init__.py +0 -0
- oarepo_runtime/info/permissions/debug.py +0 -191
- oarepo_runtime/info/views.py +0 -586
- oarepo_runtime/profile.py +0 -60
- oarepo_runtime/records/dumpers/__init__.py +0 -8
- oarepo_runtime/records/dumpers/edtf_interval.py +0 -38
- oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -34
- oarepo_runtime/records/entity_resolvers/__init__.py +0 -13
- oarepo_runtime/records/entity_resolvers/proxies.py +0 -57
- oarepo_runtime/records/mappings/__init__.py +0 -0
- oarepo_runtime/records/mappings/rdm_parent_mapping.json +0 -483
- oarepo_runtime/records/owners/__init__.py +0 -3
- oarepo_runtime/records/owners/registry.py +0 -22
- oarepo_runtime/records/relations/__init__.py +0 -22
- oarepo_runtime/records/relations/base.py +0 -296
- oarepo_runtime/records/relations/internal.py +0 -46
- oarepo_runtime/records/relations/lookup.py +0 -28
- oarepo_runtime/records/relations/pid_relation.py +0 -102
- oarepo_runtime/records/systemfields/featured_file.py +0 -45
- oarepo_runtime/records/systemfields/has_draftcheck.py +0 -47
- oarepo_runtime/records/systemfields/icu.py +0 -371
- oarepo_runtime/records/systemfields/owner.py +0 -115
- oarepo_runtime/records/systemfields/record_status.py +0 -35
- oarepo_runtime/records/systemfields/selectors.py +0 -98
- oarepo_runtime/records/systemfields/synthetic.py +0 -130
- oarepo_runtime/resources/__init__.py +0 -4
- oarepo_runtime/resources/config.py +0 -12
- oarepo_runtime/resources/file_resource.py +0 -15
- oarepo_runtime/resources/json_serializer.py +0 -27
- oarepo_runtime/resources/localized_ui_json_serializer.py +0 -54
- oarepo_runtime/resources/resource.py +0 -53
- oarepo_runtime/resources/responses.py +0 -20
- oarepo_runtime/services/components.py +0 -429
- oarepo_runtime/services/config/draft_link.py +0 -23
- oarepo_runtime/services/config/permissions_presets.py +0 -174
- oarepo_runtime/services/config/service.py +0 -117
- oarepo_runtime/services/custom_fields/__init__.py +0 -80
- oarepo_runtime/services/custom_fields/mappings.py +0 -188
- oarepo_runtime/services/entity/__init__.py +0 -0
- oarepo_runtime/services/entity/config.py +0 -14
- oarepo_runtime/services/entity/schema.py +0 -9
- oarepo_runtime/services/entity/service.py +0 -48
- oarepo_runtime/services/expansions/__init__.py +0 -0
- oarepo_runtime/services/expansions/expandable_fields.py +0 -21
- oarepo_runtime/services/expansions/service.py +0 -4
- oarepo_runtime/services/facets/__init__.py +0 -33
- oarepo_runtime/services/facets/base.py +0 -12
- oarepo_runtime/services/facets/date.py +0 -72
- oarepo_runtime/services/facets/enum.py +0 -11
- oarepo_runtime/services/facets/facet_groups_names.py +0 -17
- oarepo_runtime/services/facets/max_facet.py +0 -13
- oarepo_runtime/services/facets/multilingual_facet.py +0 -33
- oarepo_runtime/services/facets/nested_facet.py +0 -32
- oarepo_runtime/services/facets/params.py +0 -192
- oarepo_runtime/services/facets/year_histogram.py +0 -200
- oarepo_runtime/services/files/__init__.py +0 -8
- oarepo_runtime/services/files/components.py +0 -62
- oarepo_runtime/services/files/service.py +0 -16
- oarepo_runtime/services/generators.py +0 -10
- oarepo_runtime/services/permissions/__init__.py +0 -3
- oarepo_runtime/services/permissions/generators.py +0 -103
- oarepo_runtime/services/relations/__init__.py +0 -0
- oarepo_runtime/services/relations/components.py +0 -15
- oarepo_runtime/services/relations/errors.py +0 -18
- oarepo_runtime/services/relations/mapping.py +0 -38
- oarepo_runtime/services/schema/cf.py +0 -13
- oarepo_runtime/services/schema/i18n_validation.py +0 -7
- oarepo_runtime/services/schema/marshmallow.py +0 -44
- oarepo_runtime/services/schema/marshmallow_to_json_schema.py +0 -72
- oarepo_runtime/services/schema/oneofschema.py +0 -192
- oarepo_runtime/services/schema/polymorphic.py +0 -21
- oarepo_runtime/services/schema/rdm.py +0 -146
- oarepo_runtime/services/schema/rdm_ui.py +0 -156
- oarepo_runtime/services/schema/ui.py +0 -251
- oarepo_runtime/services/schema/validation.py +0 -70
- oarepo_runtime/services/search.py +0 -282
- oarepo_runtime/services/service.py +0 -61
- oarepo_runtime/tasks.py +0 -6
- oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
- oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -95
- oarepo_runtime/translations/default_translations.py +0 -6
- oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
- oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -97
- oarepo_runtime/translations/messages.pot +0 -100
- oarepo_runtime/uow.py +0 -146
- oarepo_runtime/utils/__init__.py +0 -0
- oarepo_runtime/utils/functools.py +0 -37
- oarepo_runtime/utils/identity_utils.py +0 -35
- oarepo_runtime/utils/index.py +0 -11
- oarepo_runtime/utils/path.py +0 -97
- oarepo_runtime-1.10.3.dist-info/RECORD +0 -163
- oarepo_runtime-1.10.3.dist-info/entry_points.txt +0 -16
- oarepo_runtime-1.10.3.dist-info/top_level.txt +0 -2
- tests/marshmallow_to_json/__init__.py +0 -0
- tests/marshmallow_to_json/test_datacite_ui_schema.py +0 -1410
- tests/marshmallow_to_json/test_simple_schema.py +0 -52
- tests/pkg_data/__init__.py +0 -0
- {oarepo_runtime-1.10.3.dist-info → oarepo_runtime-2.0.0.dev3.dist-info}/licenses/LICENSE +0 -0
@@ -1,282 +0,0 @@
|
|
1
|
-
import dataclasses
|
2
|
-
import inspect
|
3
|
-
from typing import List
|
4
|
-
|
5
|
-
from invenio_rdm_records.services.config import (
|
6
|
-
RDMSearchDraftsOptions as BaseRDMSearchDraftsOptions,
|
7
|
-
)
|
8
|
-
from invenio_rdm_records.services.config import RDMSearchOptions as BaseRDMSearchOptions
|
9
|
-
from invenio_records_resources.proxies import current_service_registry
|
10
|
-
from invenio_records_resources.services.records import (
|
11
|
-
SearchOptions as InvenioSearchOptions,
|
12
|
-
)
|
13
|
-
from invenio_drafts_resources.services.records.config import SearchDraftsOptions as InvenioSearchDraftsOptions
|
14
|
-
from invenio_records_resources.services.records.params import (
|
15
|
-
FacetsParam,
|
16
|
-
PaginationParam,
|
17
|
-
QueryStrParam,
|
18
|
-
SortParam,
|
19
|
-
)
|
20
|
-
from invenio_records_resources.services.records.queryparser import SuggestQueryParser
|
21
|
-
from invenio_search.engine import dsl
|
22
|
-
from invenio_drafts_resources.services.records.search_params import AllVersionsParam
|
23
|
-
# TODO: integrate this to invenio_records_resources.services.records and remove SearchOptions class
|
24
|
-
from oarepo_runtime.i18n import lazy_gettext as _
|
25
|
-
from oarepo_runtime.records.systemfields.icu import ICUSuggestField
|
26
|
-
from oarepo_runtime.utils.functools import class_property
|
27
|
-
|
28
|
-
from .facets.params import GroupedFacetsParam, OARepoAllVersionsParam, OARepoPublishedRecordsParam
|
29
|
-
from invenio_drafts_resources.services.records.search_params import AllVersionsParam
|
30
|
-
from invenio_rdm_records.services.search_params import PublishedRecordsParam
|
31
|
-
from functools import partial
|
32
|
-
try:
|
33
|
-
from invenio_i18n import get_locale
|
34
|
-
except ImportError:
|
35
|
-
from invenio_i18n.babel import get_locale
|
36
|
-
|
37
|
-
|
38
|
-
class FuzzySuggestQueryParser(SuggestQueryParser):
|
39
|
-
def __init__(self, identity=None, extra_params=None, **kwargs):
|
40
|
-
"""Constructor."""
|
41
|
-
super().__init__(identity=identity, extra_params=extra_params)
|
42
|
-
self.fields = self.extra_params.get("fields", [])
|
43
|
-
self.extra_params.setdefault("type", "bool_prefix")
|
44
|
-
|
45
|
-
def parse(self, query_str):
|
46
|
-
"""Parse the query."""
|
47
|
-
# default behavior
|
48
|
-
multi_match_with_bool_prefix = dsl.Q(
|
49
|
-
"multi_match", query=query_str, **self.extra_params
|
50
|
-
)
|
51
|
-
# fuzziness does not seem to work with bool_prefix multimatch query, so we turn this into
|
52
|
-
# should multi match query with two clauses
|
53
|
-
multi_match_fuzzy = dsl.Q(
|
54
|
-
"multi_match", query=query_str, fields=self.fields, fuzziness="AUTO"
|
55
|
-
)
|
56
|
-
return dsl.Q("bool", should=[multi_match_with_bool_prefix, multi_match_fuzzy])
|
57
|
-
|
58
|
-
|
59
|
-
class SearchOptionsMixin:
|
60
|
-
@class_property
|
61
|
-
def params_interpreters_cls(cls):
|
62
|
-
"""Replaces FacetsParam with GroupedFacetsParam."""
|
63
|
-
params_replace_map = {FacetsParam: GroupedFacetsParam, AllVersionsParam:
|
64
|
-
OARepoAllVersionsParam.factory(["versions.is_latest", "versions.is_latest_draft"]),
|
65
|
-
PublishedRecordsParam: OARepoPublishedRecordsParam}
|
66
|
-
|
67
|
-
param_interpreters = [*super(SearchOptionsMixin, cls).params_interpreters_cls]
|
68
|
-
# replace FacetsParam with GroupedFacetsParam
|
69
|
-
for idx, interpreter in enumerate(param_interpreters):
|
70
|
-
if interpreter in params_replace_map:
|
71
|
-
param_interpreters[idx] = params_replace_map[interpreter]
|
72
|
-
elif isinstance(interpreter, partial):
|
73
|
-
fn = interpreter.func
|
74
|
-
if fn in params_replace_map:
|
75
|
-
param_interpreters[idx] = params_replace_map[fn]
|
76
|
-
return param_interpreters
|
77
|
-
|
78
|
-
sort_options = {
|
79
|
-
"title": dict(
|
80
|
-
title=_("By Title"),
|
81
|
-
fields=["metadata.title"], # ES defaults to desc on `_score` field
|
82
|
-
),
|
83
|
-
"bestmatch": dict(
|
84
|
-
title=_("Best match"),
|
85
|
-
fields=["_score"], # ES defaults to desc on `_score` field
|
86
|
-
),
|
87
|
-
"newest": dict(
|
88
|
-
title=_("Newest"),
|
89
|
-
fields=["-created"],
|
90
|
-
),
|
91
|
-
"oldest": dict(
|
92
|
-
title=_("Oldest"),
|
93
|
-
fields=["created"],
|
94
|
-
),
|
95
|
-
}
|
96
|
-
|
97
|
-
|
98
|
-
class SearchOptionsDraftMixin(SearchOptionsMixin):
|
99
|
-
sort_options = {
|
100
|
-
"bestmatch": dict(
|
101
|
-
title=_("Best match"),
|
102
|
-
fields=["_score"], # search defaults to desc on `_score` field
|
103
|
-
),
|
104
|
-
"updated-desc": dict(
|
105
|
-
title=_("Recently updated"),
|
106
|
-
fields=["-updated"],
|
107
|
-
),
|
108
|
-
"updated-asc": dict(
|
109
|
-
title=_("Least recently updated"),
|
110
|
-
fields=["updated"],
|
111
|
-
),
|
112
|
-
"newest": dict(
|
113
|
-
title=_("Newest"),
|
114
|
-
fields=["-created"],
|
115
|
-
),
|
116
|
-
"oldest": dict(
|
117
|
-
title=_("Oldest"),
|
118
|
-
fields=["created"],
|
119
|
-
),
|
120
|
-
"version": dict(
|
121
|
-
title=_("Version"),
|
122
|
-
fields=["-versions.index"],
|
123
|
-
),
|
124
|
-
}
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
class SearchOptions(SearchOptionsMixin, InvenioSearchOptions):
|
129
|
-
# TODO: should be changed
|
130
|
-
params_interpreters_cls = [
|
131
|
-
QueryStrParam,
|
132
|
-
PaginationParam,
|
133
|
-
SortParam,
|
134
|
-
GroupedFacetsParam,
|
135
|
-
]
|
136
|
-
|
137
|
-
class SearchDraftsOptions(SearchOptionsMixin, InvenioSearchDraftsOptions):
|
138
|
-
# TODO: should be changed
|
139
|
-
params_interpreters_cls = [
|
140
|
-
QueryStrParam,
|
141
|
-
PaginationParam,
|
142
|
-
SortParam,
|
143
|
-
GroupedFacetsParam,
|
144
|
-
AllVersionsParam.factory("versions.is_latest_draft")
|
145
|
-
]
|
146
|
-
|
147
|
-
|
148
|
-
class RDMSearchOptions(SearchOptionsMixin, BaseRDMSearchOptions):
|
149
|
-
pass
|
150
|
-
|
151
|
-
|
152
|
-
class RDMSearchDraftsOptions(SearchOptionsDraftMixin, BaseRDMSearchDraftsOptions):
|
153
|
-
pass
|
154
|
-
|
155
|
-
|
156
|
-
@dataclasses.dataclass
|
157
|
-
class SuggestField:
|
158
|
-
field: str
|
159
|
-
boost: int
|
160
|
-
use_ngrams: bool = True
|
161
|
-
boost_exact: float = 5
|
162
|
-
boost_2gram: float = 1
|
163
|
-
boost_3gram: float = 1
|
164
|
-
boost_prefix: float = 1
|
165
|
-
|
166
|
-
|
167
|
-
class ICUSuggestParser:
|
168
|
-
def __init__(
|
169
|
-
self,
|
170
|
-
record_cls_or_service_name,
|
171
|
-
extra_fields: List[SuggestField] = None,
|
172
|
-
default_fields: List[SuggestField] = None,
|
173
|
-
):
|
174
|
-
self.record_cls_or_service_name = record_cls_or_service_name
|
175
|
-
self.extra_fields = extra_fields or []
|
176
|
-
self.default_fields = default_fields or []
|
177
|
-
|
178
|
-
@property
|
179
|
-
def record_cls(self):
|
180
|
-
if not isinstance(self.record_cls_or_service_name, str):
|
181
|
-
return self.record_cls_or_service_name
|
182
|
-
return current_service_registry.get(
|
183
|
-
self.record_cls_or_service_name
|
184
|
-
).config.record_cls
|
185
|
-
|
186
|
-
def __get__(self, instance, owner):
|
187
|
-
search_as_you_type_fields: List[SuggestField] = []
|
188
|
-
locale = get_locale()
|
189
|
-
if locale:
|
190
|
-
language = locale.language
|
191
|
-
|
192
|
-
for fld_name, fld in inspect.getmembers(
|
193
|
-
self.record_cls, lambda x: isinstance(x, ICUSuggestField)
|
194
|
-
):
|
195
|
-
search_as_you_type_fields.append(
|
196
|
-
SuggestField(f"{fld_name}.{language}.original", 2)
|
197
|
-
)
|
198
|
-
search_as_you_type_fields.append(
|
199
|
-
SuggestField(f"{fld_name}.{language}.no_accent", 1)
|
200
|
-
)
|
201
|
-
|
202
|
-
if not search_as_you_type_fields:
|
203
|
-
search_as_you_type_fields.extend(self.default_fields)
|
204
|
-
|
205
|
-
search_as_you_type_fields.extend(self.extra_fields)
|
206
|
-
|
207
|
-
fields = []
|
208
|
-
for fld in search_as_you_type_fields:
|
209
|
-
fields.append(f"{fld.field}^{fld.boost * fld.boost_exact}")
|
210
|
-
if fld.use_ngrams:
|
211
|
-
fields.append(f"{fld.field}._2gram^{fld.boost * fld.boost_2gram}")
|
212
|
-
fields.append(f"{fld.field}._3gram^{fld.boost * fld.boost_3gram}")
|
213
|
-
fields.append(
|
214
|
-
f"{fld.field}._index_prefix^{fld.boost * fld.boost_prefix}"
|
215
|
-
)
|
216
|
-
|
217
|
-
return FuzzySuggestQueryParser.factory(fields=fields)
|
218
|
-
|
219
|
-
|
220
|
-
@dataclasses.dataclass
|
221
|
-
class SortField:
|
222
|
-
option_name: str = "title"
|
223
|
-
icu_sort_field: str = "sort"
|
224
|
-
title: str = _("By Title")
|
225
|
-
|
226
|
-
|
227
|
-
class ICUSortOptions:
|
228
|
-
def __init__(self, record_cls_or_service_name, fields: List[SortField] = None):
|
229
|
-
self.record_cls_or_service_name = record_cls_or_service_name
|
230
|
-
self.fields = fields or [SortField()]
|
231
|
-
|
232
|
-
@property
|
233
|
-
def record_cls(self):
|
234
|
-
if not isinstance(self.record_cls_or_service_name, str):
|
235
|
-
return self.record_cls_or_service_name
|
236
|
-
return current_service_registry.get(
|
237
|
-
self.record_cls_or_service_name
|
238
|
-
).config.record_cls
|
239
|
-
|
240
|
-
def __get__(self, instance, owner):
|
241
|
-
if not inspect.isclass(owner):
|
242
|
-
owner = type(owner)
|
243
|
-
super_options = {}
|
244
|
-
for mro in list(owner.mro())[1:]:
|
245
|
-
if hasattr(mro, "sort_options"):
|
246
|
-
super_options = mro.sort_options
|
247
|
-
break
|
248
|
-
|
249
|
-
ret = {
|
250
|
-
**super_options,
|
251
|
-
**getattr(owner, "extra_sort_options", {}),
|
252
|
-
}
|
253
|
-
|
254
|
-
# transform the sort options by the current language
|
255
|
-
locale = get_locale()
|
256
|
-
if not locale:
|
257
|
-
return ret
|
258
|
-
|
259
|
-
language = locale.language
|
260
|
-
|
261
|
-
for sort_field in self.fields:
|
262
|
-
icu_field = getattr(self.record_cls, sort_field.icu_sort_field)
|
263
|
-
ret[sort_field.option_name] = {
|
264
|
-
"title": sort_field.title,
|
265
|
-
"fields": [f"{icu_field.key}.{language}"],
|
266
|
-
}
|
267
|
-
return ret
|
268
|
-
|
269
|
-
|
270
|
-
class I18nSearchOptions(SearchOptions):
|
271
|
-
extra_sort_options = {}
|
272
|
-
record_cls = None
|
273
|
-
|
274
|
-
|
275
|
-
class I18nRDMSearchOptions(RDMSearchOptions):
|
276
|
-
extra_sort_options = {}
|
277
|
-
record_cls = None
|
278
|
-
|
279
|
-
|
280
|
-
class I18nRDMDraftsSearchOptions(RDMSearchDraftsOptions):
|
281
|
-
extra_sort_options = {}
|
282
|
-
record_cls = None
|
@@ -1,61 +0,0 @@
|
|
1
|
-
"""An extension to invenio RDM service that includes a search across all records
|
2
|
-
(published, draft and deleted).
|
3
|
-
without any filtering. Permission `can_read_all_records` and `search_all_records`
|
4
|
-
were added and must be used to filter the results so that no information is leaked.
|
5
|
-
"""
|
6
|
-
|
7
|
-
from invenio_rdm_records.services import RDMRecordService
|
8
|
-
from invenio_records_resources.services import LinksTemplate
|
9
|
-
|
10
|
-
|
11
|
-
class SearchAllRecordsService(RDMRecordService):
|
12
|
-
def search_all_records(
|
13
|
-
self,
|
14
|
-
identity,
|
15
|
-
params=None,
|
16
|
-
search_preference=None,
|
17
|
-
expand=False,
|
18
|
-
extra_filter=None,
|
19
|
-
**kwargs,
|
20
|
-
):
|
21
|
-
"""Search for drafts records matching the querystring."""
|
22
|
-
self.require_permission(
|
23
|
-
identity,
|
24
|
-
"search_all_records",
|
25
|
-
params=params,
|
26
|
-
extra_filter=extra_filter,
|
27
|
-
**kwargs,
|
28
|
-
)
|
29
|
-
# Prepare and execute the search
|
30
|
-
params = params or {}
|
31
|
-
|
32
|
-
search_opts = (
|
33
|
-
getattr(self.config, "search_all", None) or self.config.search
|
34
|
-
)
|
35
|
-
|
36
|
-
search_result = self._search(
|
37
|
-
"search_all",
|
38
|
-
identity,
|
39
|
-
params,
|
40
|
-
search_preference,
|
41
|
-
record_cls=self.draft_cls,
|
42
|
-
search_opts=search_opts,
|
43
|
-
extra_filter=extra_filter,
|
44
|
-
permission_action="read_all_records",
|
45
|
-
**kwargs,
|
46
|
-
).execute()
|
47
|
-
|
48
|
-
return self.result_list(
|
49
|
-
self,
|
50
|
-
identity,
|
51
|
-
search_result,
|
52
|
-
params,
|
53
|
-
links_tpl=LinksTemplate(
|
54
|
-
getattr(self.config, "links_search_drafts")
|
55
|
-
or self.config.links_search_drafts,
|
56
|
-
context={"args": params},
|
57
|
-
),
|
58
|
-
links_item_tpl=self.links_item_tpl,
|
59
|
-
expandable_fields=self.expandable_fields,
|
60
|
-
expand=expand,
|
61
|
-
)
|
oarepo_runtime/tasks.py
DELETED
Binary file
|
@@ -1,95 +0,0 @@
|
|
1
|
-
# Czech translations for PROJECT.
|
2
|
-
# Copyright (C) 2023 ORGANIZATION
|
3
|
-
# This file is distributed under the same license as the PROJECT project.
|
4
|
-
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
|
5
|
-
#
|
6
|
-
msgid ""
|
7
|
-
msgstr ""
|
8
|
-
"Project-Id-Version: PROJECT VERSION\n"
|
9
|
-
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
10
|
-
"POT-Creation-Date: 2023-05-11 12:49+0200\n"
|
11
|
-
"PO-Revision-Date: 2023-05-11 12:50+0200\n"
|
12
|
-
"Last-Translator: \n"
|
13
|
-
"Language-Team: cs <LL@li.org>\n"
|
14
|
-
"Language: cs\n"
|
15
|
-
"MIME-Version: 1.0\n"
|
16
|
-
"Content-Type: text/plain; charset=utf-8\n"
|
17
|
-
"Content-Transfer-Encoding: 8bit\n"
|
18
|
-
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
|
19
|
-
"Generated-By: Babel 2.12.1\n"
|
20
|
-
"X-Generator: Poedit 3.2.2\n"
|
21
|
-
|
22
|
-
#: oarepo_runtime/i18n/default_translations.py:3
|
23
|
-
msgid "Newest"
|
24
|
-
msgstr "Nejnovější"
|
25
|
-
|
26
|
-
#: oarepo_runtime/i18n/default_translations.py:4
|
27
|
-
msgid "Oldest"
|
28
|
-
msgstr "Nejstarší"
|
29
|
-
|
30
|
-
#: oarepo_runtime/i18n/default_translations.py:5
|
31
|
-
msgid "Best match"
|
32
|
-
msgstr "Nejlepší shoda"
|
33
|
-
|
34
|
-
#: oarepo_runtime/i18n/default_translations.py:6
|
35
|
-
msgid "Contact"
|
36
|
-
msgstr "Kontakt"
|
37
|
-
|
38
|
-
#: oarepo_runtime/ui/marshmallow.py:81
|
39
|
-
msgid "True"
|
40
|
-
msgstr "Ano"
|
41
|
-
|
42
|
-
#: oarepo_runtime/services/search.py:39 oarepo_runtime/services/search.py:127
|
43
|
-
msgid "By Title"
|
44
|
-
msgstr "Dle názvu"
|
45
|
-
|
46
|
-
#: oarepo_runtime/services/schema/ui.py:114
|
47
|
-
msgid "False"
|
48
|
-
msgstr "Ne"
|
49
|
-
|
50
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/validation.py:19
|
51
|
-
#, python-format
|
52
|
-
msgid "Invalid value %(identifier)s of identifier type %(type)s"
|
53
|
-
msgstr "%(type)s: Neplatná hodnota '%(identifier)s'"
|
54
|
-
|
55
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:152
|
56
|
-
msgid "access.status.open"
|
57
|
-
msgstr "otevřený přístup"
|
58
|
-
|
59
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:153
|
60
|
-
msgid "access.status.embargoed"
|
61
|
-
msgstr "odložené zpřístupnění"
|
62
|
-
|
63
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:154
|
64
|
-
msgid "access.status.restricted"
|
65
|
-
msgstr "omezený přístup"
|
66
|
-
|
67
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:155
|
68
|
-
msgid "access.status.metadata-only"
|
69
|
-
msgstr "pouze metadata"
|
70
|
-
|
71
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:105
|
72
|
-
msgid "Recently updated"
|
73
|
-
msgstr ""
|
74
|
-
|
75
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:109
|
76
|
-
msgid "Least recently updated"
|
77
|
-
msgstr ""
|
78
|
-
|
79
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:121
|
80
|
-
msgid "Version"
|
81
|
-
msgstr ""
|
82
|
-
|
83
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/i18n.py:28
|
84
|
-
msgid "Both language and text must be provided."
|
85
|
-
msgstr "Musí být vyplněn jazyk i hodnota."
|
86
|
-
|
87
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/rdm.py:103
|
88
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/rdm.py:127
|
89
|
-
msgid ""
|
90
|
-
"It is necessary to choose organization from the controlled vocabulary. To "
|
91
|
-
"add organization, please go to https://nusl.techlib.cz/cs/migrace-"
|
92
|
-
"nusl/navrh-novych-hesel/"
|
93
|
-
msgstr ""
|
94
|
-
"Organizaci je nutné vybrat ze slovníku. Pro doplnění nové, vyplňte formulář "
|
95
|
-
"na https://nusl.techlib.cz/cs/migrace-nusl/navrh-novych-hesel/"
|
Binary file
|
@@ -1,97 +0,0 @@
|
|
1
|
-
# English translations for PROJECT.
|
2
|
-
# Copyright (C) 2023 ORGANIZATION
|
3
|
-
# This file is distributed under the same license as the PROJECT project.
|
4
|
-
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
|
5
|
-
#
|
6
|
-
msgid ""
|
7
|
-
msgstr ""
|
8
|
-
"Project-Id-Version: PROJECT VERSION\n"
|
9
|
-
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
10
|
-
"POT-Creation-Date: 2023-05-11 12:49+0200\n"
|
11
|
-
"PO-Revision-Date: 2023-05-11 12:27+0200\n"
|
12
|
-
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13
|
-
"Language-Team: en <LL@li.org>\n"
|
14
|
-
"Language: en\n"
|
15
|
-
"MIME-Version: 1.0\n"
|
16
|
-
"Content-Type: text/plain; charset=utf-8\n"
|
17
|
-
"Content-Transfer-Encoding: 8bit\n"
|
18
|
-
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
19
|
-
"Generated-By: Babel 2.12.1\n"
|
20
|
-
|
21
|
-
#: oarepo_runtime/i18n/default_translations.py:3
|
22
|
-
msgid "Newest"
|
23
|
-
msgstr ""
|
24
|
-
|
25
|
-
#: oarepo_runtime/i18n/default_translations.py:4
|
26
|
-
msgid "Oldest"
|
27
|
-
msgstr ""
|
28
|
-
|
29
|
-
#: oarepo_runtime/i18n/default_translations.py:5
|
30
|
-
msgid "Best match"
|
31
|
-
msgstr ""
|
32
|
-
|
33
|
-
#: oarepo_runtime/i18n/default_translations.py:6
|
34
|
-
msgid "Contact"
|
35
|
-
msgstr ""
|
36
|
-
|
37
|
-
#: oarepo_runtime/ui/marshmallow.py:81
|
38
|
-
msgid "True"
|
39
|
-
msgstr ""
|
40
|
-
|
41
|
-
#: oarepo_runtime/services/search.py:39 oarepo_runtime/services/search.py:127
|
42
|
-
msgid "By Title"
|
43
|
-
msgstr ""
|
44
|
-
|
45
|
-
#: oarepo_runtime/services/schema/ui.py:114
|
46
|
-
msgid "False"
|
47
|
-
msgstr ""
|
48
|
-
|
49
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/validation.py:19
|
50
|
-
#, python-format
|
51
|
-
msgid "Invalid value %(identifier)s of identifier type %(type)s"
|
52
|
-
msgstr ""
|
53
|
-
|
54
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:152
|
55
|
-
msgid "access.status.open"
|
56
|
-
msgstr "open access"
|
57
|
-
|
58
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:153
|
59
|
-
msgid "access.status.embargoed"
|
60
|
-
msgstr "embargoed access"
|
61
|
-
|
62
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:154
|
63
|
-
msgid "access.status.restricted"
|
64
|
-
msgstr "restricted access"
|
65
|
-
|
66
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:155
|
67
|
-
msgid "access.status.metadata-only"
|
68
|
-
msgstr "metadata only access"
|
69
|
-
|
70
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:105
|
71
|
-
msgid "Recently updated"
|
72
|
-
msgstr ""
|
73
|
-
|
74
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:109
|
75
|
-
msgid "Least recently updated"
|
76
|
-
msgstr ""
|
77
|
-
|
78
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:121
|
79
|
-
msgid "Version"
|
80
|
-
msgstr ""
|
81
|
-
|
82
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/i18n.py:30
|
83
|
-
#, python-brace-format
|
84
|
-
msgid "Both '{lang_name}' and '{value_name}' fields must be provided."
|
85
|
-
msgstr ""
|
86
|
-
|
87
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/i18n.py:28
|
88
|
-
msgid "Both language and text must be provided."
|
89
|
-
msgstr ""
|
90
|
-
|
91
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/rdm.py:103
|
92
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/rdm.py:127
|
93
|
-
msgid ""
|
94
|
-
"It is necessary to choose organization from the controlled vocabulary. To "
|
95
|
-
"add organization, please go to https://nusl.techlib.cz/cs/migrace-"
|
96
|
-
"nusl/navrh-novych-hesel/"
|
97
|
-
msgstr ""
|
@@ -1,100 +0,0 @@
|
|
1
|
-
# Translations template for PROJECT.
|
2
|
-
# Copyright (C) 2025 ORGANIZATION
|
3
|
-
# This file is distributed under the same license as the PROJECT project.
|
4
|
-
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
5
|
-
#
|
6
|
-
#, fuzzy
|
7
|
-
msgid ""
|
8
|
-
msgstr ""
|
9
|
-
"Project-Id-Version: PROJECT VERSION\n"
|
10
|
-
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
11
|
-
"POT-Creation-Date: 2025-08-05 11:53+0200\n"
|
12
|
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13
|
-
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14
|
-
"Language-Team: LANGUAGE <LL@li.org>\n"
|
15
|
-
"MIME-Version: 1.0\n"
|
16
|
-
"Content-Type: text/plain; charset=utf-8\n"
|
17
|
-
"Content-Transfer-Encoding: 8bit\n"
|
18
|
-
"Generated-By: Babel 2.17.0\n"
|
19
|
-
|
20
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:80
|
21
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:224
|
22
|
-
msgid "By Title"
|
23
|
-
msgstr ""
|
24
|
-
|
25
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:84
|
26
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:101
|
27
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:5
|
28
|
-
msgid "Best match"
|
29
|
-
msgstr ""
|
30
|
-
|
31
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:88
|
32
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:113
|
33
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:3
|
34
|
-
msgid "Newest"
|
35
|
-
msgstr ""
|
36
|
-
|
37
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:92
|
38
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:117
|
39
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:4
|
40
|
-
msgid "Oldest"
|
41
|
-
msgstr ""
|
42
|
-
|
43
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:105
|
44
|
-
msgid "Recently updated"
|
45
|
-
msgstr ""
|
46
|
-
|
47
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:109
|
48
|
-
msgid "Least recently updated"
|
49
|
-
msgstr ""
|
50
|
-
|
51
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:121
|
52
|
-
msgid "Version"
|
53
|
-
msgstr ""
|
54
|
-
|
55
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/i18n.py:28
|
56
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/i18n.py:29
|
57
|
-
msgid "Both language and text must be provided."
|
58
|
-
msgstr ""
|
59
|
-
|
60
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/rdm.py:103
|
61
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/rdm.py:127
|
62
|
-
msgid ""
|
63
|
-
"It is necessary to choose organization from the controlled vocabulary. To"
|
64
|
-
" add organization, please go to https://nusl.techlib.cz/cs/migrace-nusl"
|
65
|
-
"/navrh-novych-hesel/"
|
66
|
-
msgstr ""
|
67
|
-
|
68
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:155
|
69
|
-
msgid "True"
|
70
|
-
msgstr ""
|
71
|
-
|
72
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:155
|
73
|
-
msgid "False"
|
74
|
-
msgstr ""
|
75
|
-
|
76
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:175
|
77
|
-
msgid "access.status.open"
|
78
|
-
msgstr ""
|
79
|
-
|
80
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:176
|
81
|
-
msgid "access.status.embargoed"
|
82
|
-
msgstr ""
|
83
|
-
|
84
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:177
|
85
|
-
msgid "access.status.restricted"
|
86
|
-
msgstr ""
|
87
|
-
|
88
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:178
|
89
|
-
msgid "access.status.metadata-only"
|
90
|
-
msgstr ""
|
91
|
-
|
92
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/validation.py:35
|
93
|
-
#, python-format
|
94
|
-
msgid "Invalid value %(identifier)s of identifier type %(type)s"
|
95
|
-
msgstr ""
|
96
|
-
|
97
|
-
#: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:6
|
98
|
-
msgid "Contact"
|
99
|
-
msgstr ""
|
100
|
-
|