oarepo-runtime 2.0.0.dev12__py3-none-any.whl → 2.0.0.dev14__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 +1 -1
- oarepo_runtime/ext.py +4 -4
- oarepo_runtime/services/config/components.py +1 -1
- oarepo_runtime/services/config/permissions.py +16 -0
- oarepo_runtime/services/generators.py +77 -0
- oarepo_runtime/services/records/__init__.py +2 -2
- oarepo_runtime/services/records/links.py +16 -12
- {oarepo_runtime-2.0.0.dev12.dist-info → oarepo_runtime-2.0.0.dev14.dist-info}/METADATA +1 -1
- {oarepo_runtime-2.0.0.dev12.dist-info → oarepo_runtime-2.0.0.dev14.dist-info}/RECORD +12 -11
- {oarepo_runtime-2.0.0.dev12.dist-info → oarepo_runtime-2.0.0.dev14.dist-info}/WHEEL +0 -0
- {oarepo_runtime-2.0.0.dev12.dist-info → oarepo_runtime-2.0.0.dev14.dist-info}/entry_points.txt +0 -0
- {oarepo_runtime-2.0.0.dev12.dist-info → oarepo_runtime-2.0.0.dev14.dist-info}/licenses/LICENSE +0 -0
oarepo_runtime/__init__.py
CHANGED
oarepo_runtime/ext.py
CHANGED
@@ -182,17 +182,17 @@ class OARepoRuntime:
|
|
182
182
|
|
183
183
|
@cached_property
|
184
184
|
def published_indices(self) -> set[str]:
|
185
|
-
"""Return the set of published indices."""
|
185
|
+
"""Return the set of published indices for RDM-compatible records only."""
|
186
186
|
indices = set()
|
187
|
-
for model in self.
|
187
|
+
for model in self.rdm_models:
|
188
188
|
indices.add(model.record_cls.index.search_alias) # type: ignore[attr-defined]
|
189
189
|
return indices
|
190
190
|
|
191
191
|
@cached_property
|
192
192
|
def draft_indices(self) -> set[str]:
|
193
|
-
"""Return the set of draft indices."""
|
193
|
+
"""Return the set of draft indices for RDM-compatible records only."""
|
194
194
|
indices = set()
|
195
|
-
for model in self.
|
195
|
+
for model in self.rdm_models:
|
196
196
|
if model.draft_cls is not None:
|
197
197
|
indices.add(model.draft_cls.index.search_alias) # type: ignore[attr-defined]
|
198
198
|
return indices
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Copyright (c) 2025 CESNET z.s.p.o.
|
3
3
|
#
|
4
|
-
# This file is a part of oarepo-runtime (see
|
4
|
+
# This file is a part of oarepo-runtime (see https://github.com/oarepo/oarepo-runtime).
|
5
5
|
#
|
6
6
|
# oarepo-runtime is free software; you can redistribute it and/or modify it
|
7
7
|
# under the terms of the MIT License; see LICENSE file for more details.
|
@@ -60,3 +60,19 @@ class EveryonePermissionPolicy(RecordPermissionPolicy):
|
|
60
60
|
can_read_deleted: GeneratorList = (SystemProcess(), AnyUser())
|
61
61
|
can_manage_record_access: GeneratorList = (SystemProcess(), AnyUser())
|
62
62
|
can_lift_embargo: GeneratorList = (SystemProcess(), AnyUser())
|
63
|
+
|
64
|
+
can_draft_media_create_files: GeneratorList = (SystemProcess(), AnyUser())
|
65
|
+
can_draft_media_read_files: GeneratorList = (SystemProcess(), AnyUser())
|
66
|
+
can_draft_media_set_content_files: GeneratorList = (SystemProcess(), AnyUser())
|
67
|
+
can_draft_media_get_content_files: GeneratorList = (SystemProcess(), AnyUser())
|
68
|
+
can_draft_media_commit_files: GeneratorList = (SystemProcess(), AnyUser())
|
69
|
+
can_draft_media_update_files: GeneratorList = (SystemProcess(), AnyUser())
|
70
|
+
can_draft_media_delete_files: GeneratorList = (SystemProcess(), AnyUser())
|
71
|
+
|
72
|
+
can_media_read_files: GeneratorList = (SystemProcess(), AnyUser())
|
73
|
+
can_media_get_content_files: GeneratorList = (SystemProcess(), AnyUser())
|
74
|
+
can_media_create_files: GeneratorList = (SystemProcess(), AnyUser())
|
75
|
+
can_media_set_content_files: GeneratorList = (SystemProcess(), AnyUser())
|
76
|
+
can_media_commit_files: GeneratorList = (SystemProcess(), AnyUser())
|
77
|
+
can_media_update_files: GeneratorList = (SystemProcess(), AnyUser())
|
78
|
+
can_media_delete_files: GeneratorList = (SystemProcess(), AnyUser())
|
@@ -0,0 +1,77 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2025 CESNET z.s.p.o.
|
3
|
+
#
|
4
|
+
# This file is a part of oarepo-runtime (see https://github.com/oarepo/oarepo-runtime).
|
5
|
+
#
|
6
|
+
# oarepo-runtime is free software; you can redistribute it and/or modify it
|
7
|
+
# under the terms of the MIT License; see LICENSE file for more details.
|
8
|
+
#
|
9
|
+
"""Typed invenio generators."""
|
10
|
+
|
11
|
+
from __future__ import annotations
|
12
|
+
|
13
|
+
from abc import abstractmethod
|
14
|
+
from typing import TYPE_CHECKING, Any, override
|
15
|
+
|
16
|
+
from invenio_records_permissions.generators import (
|
17
|
+
ConditionalGenerator as InvenioConditionalGenerator,
|
18
|
+
)
|
19
|
+
from invenio_records_permissions.generators import Generator as InvenioGenerator
|
20
|
+
|
21
|
+
if TYPE_CHECKING:
|
22
|
+
from collections.abc import Sequence
|
23
|
+
|
24
|
+
from flask_principal import Need
|
25
|
+
from invenio_records_resources.records.api import Record
|
26
|
+
from invenio_search.engine import dsl
|
27
|
+
|
28
|
+
|
29
|
+
class Generator(InvenioGenerator):
|
30
|
+
"""Custom generator for the service.
|
31
|
+
|
32
|
+
This class will be removed when invenio has proper type stubs.
|
33
|
+
"""
|
34
|
+
|
35
|
+
@override
|
36
|
+
def needs(self, **kwargs: Any) -> Sequence[Need]: # type: ignore[reportIncompatibleMethodOverride]
|
37
|
+
return super().needs(**kwargs) # type: ignore[no-any-return]
|
38
|
+
|
39
|
+
@override
|
40
|
+
def excludes(self, **kwargs: Any) -> Sequence[Need]: # type: ignore[reportIncompatibleMethodOverride]
|
41
|
+
return super().excludes(**kwargs) # type: ignore[no-any-return]
|
42
|
+
|
43
|
+
@override
|
44
|
+
def query_filter(self, **kwargs: Any) -> dsl.query.Query: # type: ignore[reportIncompatibleMethodOverride]
|
45
|
+
return super().query_filter(**kwargs) # type: ignore[no-any-return]
|
46
|
+
|
47
|
+
|
48
|
+
class ConditionalGenerator(InvenioConditionalGenerator):
|
49
|
+
"""Typed conditional generator.
|
50
|
+
|
51
|
+
This class will be removed when invenio has proper type stubs.
|
52
|
+
"""
|
53
|
+
|
54
|
+
def __init__(self, then_: Sequence[InvenioGenerator], else_: Sequence[InvenioGenerator]) -> None:
|
55
|
+
"""Initialize the conditional generator."""
|
56
|
+
super().__init__(then_=then_, else_=else_)
|
57
|
+
|
58
|
+
@abstractmethod
|
59
|
+
def _condition(self, **kwargs: Any) -> bool:
|
60
|
+
"""Condition to choose generators set."""
|
61
|
+
raise NotImplementedError # pragma: nocover
|
62
|
+
|
63
|
+
def _generators(self, record: Record, **kwargs: Any) -> Sequence[InvenioGenerator]:
|
64
|
+
"""Get the "then" or "else" generators."""
|
65
|
+
return super()._generators(record=record, **kwargs) # type: ignore[no-any-return]
|
66
|
+
|
67
|
+
@override
|
68
|
+
def needs(self, **kwargs: Any) -> Sequence[Need]: # type: ignore[override]
|
69
|
+
return super().needs(**kwargs) # type: ignore[no-any-return]
|
70
|
+
|
71
|
+
@override
|
72
|
+
def excludes(self, **kwargs: Any) -> Sequence[Need]: # type: ignore[override]
|
73
|
+
return super().excludes(**kwargs) # type: ignore[no-any-return]
|
74
|
+
|
75
|
+
@override
|
76
|
+
def query_filter(self, **kwargs: Any) -> dsl.query.Query: # type: ignore[reportIncompatibleMethodOverride]
|
77
|
+
return super().query_filter(**kwargs) # type: ignore[no-any-return]
|
@@ -11,21 +11,25 @@
|
|
11
11
|
|
12
12
|
from __future__ import annotations
|
13
13
|
|
14
|
-
from
|
14
|
+
from typing import Any
|
15
15
|
|
16
|
+
from invenio_records_resources.services.base.links import EndpointLink
|
16
17
|
|
17
|
-
|
18
|
-
|
18
|
+
|
19
|
+
def pagination_endpoint_links_html(endpoint: str, params: dict[str, Any] | None = None) -> dict[str, EndpointLink]:
|
20
|
+
"""Create pagination links (prev/self/next) from the same endpoint."""
|
19
21
|
return {
|
20
|
-
"prev_html":
|
21
|
-
|
22
|
-
when=lambda pagination,
|
23
|
-
vars=lambda pagination,
|
22
|
+
"prev_html": EndpointLink(
|
23
|
+
endpoint,
|
24
|
+
when=lambda pagination, _ctx: pagination.has_prev,
|
25
|
+
vars=lambda pagination, _vars: _vars["args"].update({"page": pagination.prev_page.page}),
|
26
|
+
params=params,
|
24
27
|
),
|
25
|
-
"self_html":
|
26
|
-
"next_html":
|
27
|
-
|
28
|
-
when=lambda pagination,
|
29
|
-
vars=lambda pagination,
|
28
|
+
"self_html": EndpointLink(endpoint, params=params),
|
29
|
+
"next_html": EndpointLink(
|
30
|
+
endpoint,
|
31
|
+
when=lambda pagination, _ctx: pagination.has_next,
|
32
|
+
vars=lambda pagination, _vars: _vars["args"].update({"page": pagination.next_page.page}),
|
33
|
+
params=params,
|
30
34
|
),
|
31
35
|
}
|
@@ -1,7 +1,7 @@
|
|
1
|
-
oarepo_runtime/__init__.py,sha256=
|
1
|
+
oarepo_runtime/__init__.py,sha256=JwxRF8hZCrcuc6EyZKISir_JbAV8dOb6Fptw2UcekyM,686
|
2
2
|
oarepo_runtime/api.py,sha256=b4v9YTPLK5EsEXzKuEqnymh148GwxCKNpy34kpxWYrI,11842
|
3
3
|
oarepo_runtime/config.py,sha256=RUEPFn_5bKp9Wb0OY-Fb3VK30m35vF5IsLjYaQHhP3g,3838
|
4
|
-
oarepo_runtime/ext.py,sha256=
|
4
|
+
oarepo_runtime/ext.py,sha256=CtUb3tkXsJv7l7lDq9yOeP1rDKaPhM2ULMIwqoJrBKo,7887
|
5
5
|
oarepo_runtime/proxies.py,sha256=PXaRiBh5qs5-h8M81cJOgtqypFQcYUSjiSn2TLSujRw,648
|
6
6
|
oarepo_runtime/py.typed,sha256=RznSCjXReEUI9zkmD25E8XniG_MvPpLBF6MyNZA8MmE,42
|
7
7
|
oarepo_runtime/cli/__init__.py,sha256=H7GOeOBf0udgKWOdlAQswIMvRrD8BwcEjOVxIqP0Suw,731
|
@@ -16,21 +16,22 @@ oarepo_runtime/records/systemfields/publication_status.py,sha256=1g3VXNPh0FsiPCp
|
|
16
16
|
oarepo_runtime/resources/__init__.py,sha256=voynQULXoOEviADkbOpekMphZPTAz4IOTg5BF9xPwTM,453
|
17
17
|
oarepo_runtime/resources/config.py,sha256=hJewyZ2FlEm4TtYnQS9JsnKnA6hhtSbvo1PC24-7f7Y,980
|
18
18
|
oarepo_runtime/services/__init__.py,sha256=OGtBgEeaDTyk2RPDNXuKbU9_7egFBZr42SM0gN5FrF4,341
|
19
|
+
oarepo_runtime/services/generators.py,sha256=B_4GXzKS8RUDGVzR_EZOYSD2uAC7P-xpmoYxo_52BTw,2888
|
19
20
|
oarepo_runtime/services/results.py,sha256=fk-Enx_LwZLbw81yZ7CXVTku86vd3_fjprnb8l5sFHk,6657
|
20
21
|
oarepo_runtime/services/config/__init__.py,sha256=SX1kfIGk8HkohdLQrNpRQUTltksEyDcCa-kFXxrX4e8,711
|
21
|
-
oarepo_runtime/services/config/components.py,sha256=
|
22
|
+
oarepo_runtime/services/config/components.py,sha256=cyU-JeMzLuBL-9JkUKbUQuu527WAq0yptGs6806XSho,23039
|
22
23
|
oarepo_runtime/services/config/link_conditions.py,sha256=raqf4yaBNLqNYgBxVNblo8MRJneVIFkwVNW7IW3AVYI,4309
|
23
|
-
oarepo_runtime/services/config/permissions.py,sha256=
|
24
|
+
oarepo_runtime/services/config/permissions.py,sha256=9_706Yyz7X6IXhSaRBnkmGOr7c8kLnEXNkGZxxgNafE,4138
|
24
25
|
oarepo_runtime/services/facets/__init__.py,sha256=k39ZYt1dMVOW01QRSTgx3CfuTYwvEWmL0VYTR3huVsE,349
|
25
26
|
oarepo_runtime/services/facets/params.py,sha256=BxAmPmHlPs5ILQsKR98jZUFOWBSeiF454vOSIVIJj40,4697
|
26
|
-
oarepo_runtime/services/records/__init__.py,sha256=
|
27
|
-
oarepo_runtime/services/records/links.py,sha256=
|
27
|
+
oarepo_runtime/services/records/__init__.py,sha256=Mpohx3xEXTmoodTEHbCih6I97JIofgqa_bf_Ysq4e2g,446
|
28
|
+
oarepo_runtime/services/records/links.py,sha256=oTKE9HXByQWEy8J6vT4KGjneeM_16MStwlXXglnnQSo,1254
|
28
29
|
oarepo_runtime/services/records/mapping.py,sha256=y3oeToKEnaRYpMV3q2-2cXNzyzyL3XXGvY26BifybpE,1332
|
29
30
|
oarepo_runtime/services/schema/__init__.py,sha256=jgAPI_uKC6Ug4KQWnwQVg3-aNaw-eHja323AUFo5ELo,351
|
30
31
|
oarepo_runtime/services/schema/i18n.py,sha256=9D1zOQaPKAnYzejB0vO-m2BJYnam0N0Lrq4jID7twfE,3174
|
31
32
|
oarepo_runtime/services/schema/i18n_ui.py,sha256=DbusphhGDeaobTt4nuwNgKZ6Houlu4Sv3SuMGkdjRRY,3582
|
32
|
-
oarepo_runtime-2.0.0.
|
33
|
-
oarepo_runtime-2.0.0.
|
34
|
-
oarepo_runtime-2.0.0.
|
35
|
-
oarepo_runtime-2.0.0.
|
36
|
-
oarepo_runtime-2.0.0.
|
33
|
+
oarepo_runtime-2.0.0.dev14.dist-info/METADATA,sha256=r9YSaqRKd3AA6uXS4FiuQQD3hkJZjgN1yV3hRfdJltE,4495
|
34
|
+
oarepo_runtime-2.0.0.dev14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
35
|
+
oarepo_runtime-2.0.0.dev14.dist-info/entry_points.txt,sha256=rOfs8R1oXFN_dLH9zAZ6ydkvr83mDajegc6NBIRsCMQ,318
|
36
|
+
oarepo_runtime-2.0.0.dev14.dist-info/licenses/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
|
37
|
+
oarepo_runtime-2.0.0.dev14.dist-info/RECORD,,
|
File without changes
|
{oarepo_runtime-2.0.0.dev12.dist-info → oarepo_runtime-2.0.0.dev14.dist-info}/entry_points.txt
RENAMED
File without changes
|
{oarepo_runtime-2.0.0.dev12.dist-info → oarepo_runtime-2.0.0.dev14.dist-info}/licenses/LICENSE
RENAMED
File without changes
|