oarepo-runtime 1.5.92__py3-none-any.whl → 1.5.94__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/services/permissions/__init__.py +2 -2
- oarepo_runtime/services/permissions/generators.py +58 -4
- oarepo_runtime/services/schema/marshmallow.py +9 -1
- oarepo_runtime/services/schema/ui.py +49 -0
- oarepo_runtime/services/search.py +67 -8
- oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
- oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +16 -0
- oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
- oarepo_runtime/translations/en/LC_MESSAGES/messages.po +16 -0
- oarepo_runtime/translations/messages.pot +32 -16
- {oarepo_runtime-1.5.92.dist-info → oarepo_runtime-1.5.94.dist-info}/METADATA +1 -1
- {oarepo_runtime-1.5.92.dist-info → oarepo_runtime-1.5.94.dist-info}/RECORD +16 -16
- {oarepo_runtime-1.5.92.dist-info → oarepo_runtime-1.5.94.dist-info}/LICENSE +0 -0
- {oarepo_runtime-1.5.92.dist-info → oarepo_runtime-1.5.94.dist-info}/WHEEL +0 -0
- {oarepo_runtime-1.5.92.dist-info → oarepo_runtime-1.5.94.dist-info}/entry_points.txt +0 -0
- {oarepo_runtime-1.5.92.dist-info → oarepo_runtime-1.5.94.dist-info}/top_level.txt +0 -0
@@ -1,3 +1,3 @@
|
|
1
|
-
from .generators import RecordOwners, UserWithRole
|
1
|
+
from .generators import IfDraftType, RecordOwners, UserWithRole
|
2
2
|
|
3
|
-
__all__ = ("RecordOwners", "UserWithRole")
|
3
|
+
__all__ = ("RecordOwners", "UserWithRole", "IfDraftType")
|
@@ -1,7 +1,14 @@
|
|
1
|
+
from typing import Literal
|
2
|
+
|
3
|
+
from flask import current_app
|
1
4
|
from flask_principal import RoleNeed, UserNeed
|
2
|
-
from invenio_records_permissions.generators import
|
5
|
+
from invenio_records_permissions.generators import (
|
6
|
+
ConditionalGenerator,
|
7
|
+
Disable,
|
8
|
+
Generator,
|
9
|
+
)
|
3
10
|
from invenio_search.engine import dsl
|
4
|
-
|
11
|
+
|
5
12
|
|
6
13
|
class RecordOwners(Generator):
|
7
14
|
"""Allows record owners."""
|
@@ -12,7 +19,7 @@ class RecordOwners(Generator):
|
|
12
19
|
# 'record' is required, so if not passed we default to empty array,
|
13
20
|
# i.e. superuser-access.
|
14
21
|
return []
|
15
|
-
if current_app.config.get(
|
22
|
+
if current_app.config.get("INVENIO_RDM_ENABLED", False):
|
16
23
|
owners = getattr(record.parent.access, "owned_by", None)
|
17
24
|
if owners is not None:
|
18
25
|
owners_list = owners if isinstance(owners, list) else [owners]
|
@@ -27,11 +34,12 @@ class RecordOwners(Generator):
|
|
27
34
|
"""Filters for current identity as owner."""
|
28
35
|
users = [n.value for n in identity.provides if n.method == "id"]
|
29
36
|
if users:
|
30
|
-
if current_app.config.get(
|
37
|
+
if current_app.config.get("INVENIO_RDM_ENABLED", False):
|
31
38
|
return dsl.Q("terms", **{"parent.access.owned_by.user": users})
|
32
39
|
else:
|
33
40
|
return dsl.Q("terms", **{"parent.owners.user": users})
|
34
41
|
|
42
|
+
|
35
43
|
class UserWithRole(Generator):
|
36
44
|
def __init__(self, *roles):
|
37
45
|
self.roles = roles
|
@@ -46,3 +54,49 @@ class UserWithRole(Generator):
|
|
46
54
|
if provide.method == "role" and provide.value in self.roles:
|
47
55
|
return dsl.Q("match_all")
|
48
56
|
return dsl.Q("match_none")
|
57
|
+
|
58
|
+
|
59
|
+
class IfDraftType(ConditionalGenerator):
|
60
|
+
def __init__(
|
61
|
+
self,
|
62
|
+
draft_types: list[
|
63
|
+
Literal["initial"] | Literal["metadata"] | Literal["new_version"]
|
64
|
+
]
|
65
|
+
| Literal["initial"]
|
66
|
+
| Literal["metadata"]
|
67
|
+
| Literal["new_version"],
|
68
|
+
then_=None,
|
69
|
+
else_=None,
|
70
|
+
):
|
71
|
+
if not isinstance(draft_types, (list, tuple)):
|
72
|
+
draft_types = [draft_types]
|
73
|
+
self._draft_types = draft_types
|
74
|
+
if not then_:
|
75
|
+
then_ = [Disable()]
|
76
|
+
if not else_:
|
77
|
+
else_ = [Disable()]
|
78
|
+
if not isinstance(then_, (list, tuple)):
|
79
|
+
then_ = [then_]
|
80
|
+
if not isinstance(else_, (list, tuple)):
|
81
|
+
else_ = [else_]
|
82
|
+
super().__init__(then_, else_)
|
83
|
+
|
84
|
+
def _condition(self, record=None, **kwargs):
|
85
|
+
if not record:
|
86
|
+
return False
|
87
|
+
|
88
|
+
index = record.versions.index
|
89
|
+
is_latest = record.versions.is_latest
|
90
|
+
is_draft = record.is_draft
|
91
|
+
|
92
|
+
if not is_draft:
|
93
|
+
return False
|
94
|
+
|
95
|
+
if index == 1 and not is_latest:
|
96
|
+
draft_type = "initial"
|
97
|
+
elif index > 1 and not is_latest:
|
98
|
+
draft_type = "new_version"
|
99
|
+
else:
|
100
|
+
draft_type = "metadata"
|
101
|
+
|
102
|
+
return draft_type in self._draft_types
|
@@ -1,10 +1,12 @@
|
|
1
1
|
import typing
|
2
2
|
|
3
|
-
|
3
|
+
from invenio_rdm_records.services.schemas.record import RDMRecordSchema
|
4
4
|
from invenio_records_resources.services.records.schema import (
|
5
5
|
BaseRecordSchema as InvenioBaseRecordSchema,
|
6
6
|
)
|
7
7
|
|
8
|
+
import marshmallow as ma
|
9
|
+
|
8
10
|
|
9
11
|
class BaseRecordSchema(InvenioBaseRecordSchema):
|
10
12
|
"""Base record schema - in addition to invenio exposes $schema as well."""
|
@@ -12,6 +14,12 @@ class BaseRecordSchema(InvenioBaseRecordSchema):
|
|
12
14
|
_schema = ma.fields.Str(attribute="$schema", data_key="$schema")
|
13
15
|
|
14
16
|
|
17
|
+
class RDMBaseRecordSchema(RDMRecordSchema):
|
18
|
+
"""Base record schema - in addition to invenio exposes $schema as well."""
|
19
|
+
|
20
|
+
_schema = ma.fields.Str(attribute="$schema", data_key="$schema")
|
21
|
+
|
22
|
+
|
15
23
|
class DictOnlySchema(ma.Schema):
|
16
24
|
def get_attribute(self, obj: typing.Any, attr: str, default: typing.Any):
|
17
25
|
if not isinstance(attr, int) and "." in attr:
|
@@ -5,6 +5,12 @@ import marshmallow as ma
|
|
5
5
|
from babel.dates import format_date
|
6
6
|
from babel_edtf import format_edtf
|
7
7
|
from flask import current_app
|
8
|
+
from invenio_rdm_records.records.systemfields.access.field.record import (
|
9
|
+
AccessStatusEnum,
|
10
|
+
)
|
11
|
+
from invenio_rdm_records.resources.serializers.ui.fields import (
|
12
|
+
UIObjectAccessStatus as InvenioUIObjectAccessStatus,
|
13
|
+
)
|
8
14
|
from marshmallow_utils.fields import (
|
9
15
|
BabelGettextDictField,
|
10
16
|
FormatDate,
|
@@ -15,6 +21,9 @@ from marshmallow_utils.fields import (
|
|
15
21
|
from marshmallow_utils.fields.babel import BabelFormatField
|
16
22
|
|
17
23
|
from oarepo_runtime.i18n import gettext
|
24
|
+
from oarepo_runtime.i18n import lazy_gettext as _
|
25
|
+
|
26
|
+
from .marshmallow import RDMBaseRecordSchema
|
18
27
|
|
19
28
|
|
20
29
|
def current_default_locale():
|
@@ -131,3 +140,43 @@ class InvenioUISchema(ma.Schema):
|
|
131
140
|
links = ma.fields.Raw(dump_only=True)
|
132
141
|
revision_id = ma.fields.Integer(dump_only=True)
|
133
142
|
expanded = ma.fields.Raw(dump_only=True)
|
143
|
+
|
144
|
+
|
145
|
+
# seems not possible to avoid, as they have this hardcoded in their object,
|
146
|
+
# and translation keys are i.e. open, which gets translated to otevret
|
147
|
+
class UIObjectAccessStatus(InvenioUIObjectAccessStatus):
|
148
|
+
@property
|
149
|
+
def title(self):
|
150
|
+
"""Access status title."""
|
151
|
+
return {
|
152
|
+
AccessStatusEnum.OPEN: _("access.status.open"),
|
153
|
+
AccessStatusEnum.EMBARGOED: _("access.status.embargoed"),
|
154
|
+
AccessStatusEnum.RESTRICTED: _("access.status.restricted"),
|
155
|
+
AccessStatusEnum.METADATA_ONLY: _("access.status.metadata-only"),
|
156
|
+
}.get(self.access_status)
|
157
|
+
|
158
|
+
|
159
|
+
class AccessStatusField(ma.fields.Field):
|
160
|
+
"""Record access status."""
|
161
|
+
|
162
|
+
def _serialize(self, value, attr, obj, **kwargs):
|
163
|
+
"""Serialise access status."""
|
164
|
+
record_access_dict = obj.get("access")
|
165
|
+
_files = obj.get("files", {})
|
166
|
+
has_files = _files is not None and _files.get("enabled", False)
|
167
|
+
if record_access_dict:
|
168
|
+
record_access_status_ui = UIObjectAccessStatus(
|
169
|
+
record_access_dict, has_files
|
170
|
+
)
|
171
|
+
return {
|
172
|
+
"id": record_access_status_ui.id,
|
173
|
+
"title_l10n": record_access_status_ui.title,
|
174
|
+
"description_l10n": record_access_status_ui.description,
|
175
|
+
"icon": record_access_status_ui.icon,
|
176
|
+
"embargo_date_l10n": record_access_status_ui.embargo_date,
|
177
|
+
"message_class": record_access_status_ui.message_class,
|
178
|
+
}
|
179
|
+
|
180
|
+
|
181
|
+
class InvenioRDMUISchema(InvenioUISchema, RDMBaseRecordSchema):
|
182
|
+
is_draft = ma.fields.Boolean(dump_only=True)
|
@@ -2,11 +2,16 @@ import dataclasses
|
|
2
2
|
import inspect
|
3
3
|
from typing import List
|
4
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
|
5
9
|
from invenio_records_resources.proxies import current_service_registry
|
6
10
|
from invenio_records_resources.services.records import (
|
7
11
|
SearchOptions as InvenioSearchOptions,
|
8
12
|
)
|
9
13
|
from invenio_records_resources.services.records.params import (
|
14
|
+
FacetsParam,
|
10
15
|
PaginationParam,
|
11
16
|
QueryStrParam,
|
12
17
|
SortParam,
|
@@ -17,9 +22,10 @@ from invenio_search.engine import dsl
|
|
17
22
|
# TODO: integrate this to invenio_records_resources.services.records and remove SearchOptions class
|
18
23
|
from oarepo_runtime.i18n import lazy_gettext as _
|
19
24
|
from oarepo_runtime.records.systemfields.icu import ICUSuggestField
|
25
|
+
from oarepo_runtime.utils.functools import class_property
|
20
26
|
|
21
27
|
from .facets.params import GroupedFacetsParam
|
22
|
-
|
28
|
+
|
23
29
|
try:
|
24
30
|
from invenio_i18n import get_locale
|
25
31
|
except ImportError:
|
@@ -47,13 +53,16 @@ class FuzzySuggestQueryParser(SuggestQueryParser):
|
|
47
53
|
return dsl.Q("bool", should=[multi_match_with_bool_prefix, multi_match_fuzzy])
|
48
54
|
|
49
55
|
|
50
|
-
class
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
GroupedFacetsParam
|
56
|
-
|
56
|
+
class SearchOptionsMixin:
|
57
|
+
@class_property
|
58
|
+
def params_interpreters_cls(cls):
|
59
|
+
"""Replaces FacetsParam with GroupedFacetsParam."""
|
60
|
+
param_interpreters = [*super(SearchOptionsMixin, cls).params_interpreters_cls]
|
61
|
+
# replace FacetsParam with GroupedFacetsParam
|
62
|
+
for idx, interpreter in enumerate(param_interpreters):
|
63
|
+
if interpreter == FacetsParam:
|
64
|
+
param_interpreters[idx] = GroupedFacetsParam
|
65
|
+
return param_interpreters
|
57
66
|
|
58
67
|
sort_options = {
|
59
68
|
"title": dict(
|
@@ -75,6 +84,53 @@ class SearchOptions(InvenioSearchOptions):
|
|
75
84
|
}
|
76
85
|
|
77
86
|
|
87
|
+
class SearchOptionsDraftMixin(SearchOptionsMixin):
|
88
|
+
sort_options = {
|
89
|
+
"bestmatch": dict(
|
90
|
+
title=_("Best match"),
|
91
|
+
fields=["_score"], # search defaults to desc on `_score` field
|
92
|
+
),
|
93
|
+
"updated-desc": dict(
|
94
|
+
title=_("Recently updated"),
|
95
|
+
fields=["-updated"],
|
96
|
+
),
|
97
|
+
"updated-asc": dict(
|
98
|
+
title=_("Least recently updated"),
|
99
|
+
fields=["updated"],
|
100
|
+
),
|
101
|
+
"newest": dict(
|
102
|
+
title=_("Newest"),
|
103
|
+
fields=["-created"],
|
104
|
+
),
|
105
|
+
"oldest": dict(
|
106
|
+
title=_("Oldest"),
|
107
|
+
fields=["created"],
|
108
|
+
),
|
109
|
+
"version": dict(
|
110
|
+
title=_("Version"),
|
111
|
+
fields=["-versions.index"],
|
112
|
+
),
|
113
|
+
}
|
114
|
+
|
115
|
+
|
116
|
+
class SearchOptions(SearchOptionsMixin, InvenioSearchOptions):
|
117
|
+
# TODO: should be changed
|
118
|
+
params_interpreters_cls = [
|
119
|
+
QueryStrParam,
|
120
|
+
PaginationParam,
|
121
|
+
SortParam,
|
122
|
+
GroupedFacetsParam,
|
123
|
+
]
|
124
|
+
|
125
|
+
|
126
|
+
class RDMSearchOptions(SearchOptionsMixin, BaseRDMSearchOptions):
|
127
|
+
pass
|
128
|
+
|
129
|
+
|
130
|
+
class RDMSearchDraftsOptions(SearchOptionsDraftMixin, BaseRDMSearchDraftsOptions):
|
131
|
+
pass
|
132
|
+
|
133
|
+
|
78
134
|
@dataclasses.dataclass
|
79
135
|
class SuggestField:
|
80
136
|
field: str
|
@@ -188,14 +244,17 @@ class ICUSortOptions:
|
|
188
244
|
}
|
189
245
|
return ret
|
190
246
|
|
247
|
+
|
191
248
|
class I18nSearchOptions(SearchOptions):
|
192
249
|
extra_sort_options = {}
|
193
250
|
record_cls = None
|
194
251
|
|
252
|
+
|
195
253
|
class I18nRDMSearchOptions(RDMSearchOptions):
|
196
254
|
extra_sort_options = {}
|
197
255
|
record_cls = None
|
198
256
|
|
257
|
+
|
199
258
|
class I18nRDMDraftsSearchOptions(RDMSearchDraftsOptions):
|
200
259
|
extra_sort_options = {}
|
201
260
|
record_cls = None
|
Binary file
|
@@ -51,3 +51,19 @@ msgstr "Ne"
|
|
51
51
|
#, python-format
|
52
52
|
msgid "Invalid value %(identifier)s of identifier type %(type)s"
|
53
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"
|
Binary file
|
@@ -50,3 +50,19 @@ msgstr ""
|
|
50
50
|
#, python-format
|
51
51
|
msgid "Invalid value %(identifier)s of identifier type %(type)s"
|
52
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"
|
@@ -1,56 +1,72 @@
|
|
1
1
|
# Translations template for PROJECT.
|
2
|
-
# Copyright (C)
|
2
|
+
# Copyright (C) 2025 ORGANIZATION
|
3
3
|
# This file is distributed under the same license as the PROJECT project.
|
4
|
-
# FIRST AUTHOR <EMAIL@ADDRESS>,
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
5
5
|
#
|
6
6
|
#, fuzzy
|
7
7
|
msgid ""
|
8
8
|
msgstr ""
|
9
9
|
"Project-Id-Version: PROJECT VERSION\n"
|
10
10
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
11
|
-
"POT-Creation-Date:
|
11
|
+
"POT-Creation-Date: 2025-02-17 10:27+0100\n"
|
12
12
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13
13
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14
14
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
15
15
|
"MIME-Version: 1.0\n"
|
16
16
|
"Content-Type: text/plain; charset=utf-8\n"
|
17
17
|
"Content-Transfer-Encoding: 8bit\n"
|
18
|
-
"Generated-By: Babel 2.
|
18
|
+
"Generated-By: Babel 2.17.0\n"
|
19
19
|
|
20
|
-
#: /
|
21
|
-
#: /
|
20
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:71
|
21
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:175
|
22
22
|
msgid "By Title"
|
23
23
|
msgstr ""
|
24
24
|
|
25
|
-
#: /
|
26
|
-
#: /
|
25
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:75
|
26
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/translations/default_translations.py:5
|
27
27
|
msgid "Best match"
|
28
28
|
msgstr ""
|
29
29
|
|
30
|
-
#: /
|
31
|
-
#: /
|
30
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:79
|
31
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/translations/default_translations.py:3
|
32
32
|
msgid "Newest"
|
33
33
|
msgstr ""
|
34
34
|
|
35
|
-
#: /
|
36
|
-
#: /
|
35
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/search.py:83
|
36
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/translations/default_translations.py:4
|
37
37
|
msgid "Oldest"
|
38
38
|
msgstr ""
|
39
39
|
|
40
|
-
#: /
|
40
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:132
|
41
41
|
msgid "True"
|
42
42
|
msgstr ""
|
43
43
|
|
44
|
-
#: /
|
44
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:132
|
45
45
|
msgid "False"
|
46
46
|
msgstr ""
|
47
47
|
|
48
|
-
#: /
|
48
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:152
|
49
|
+
msgid "access.status.open"
|
50
|
+
msgstr ""
|
51
|
+
|
52
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:153
|
53
|
+
msgid "access.status.embargoed"
|
54
|
+
msgstr ""
|
55
|
+
|
56
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:154
|
57
|
+
msgid "access.status.restricted"
|
58
|
+
msgstr ""
|
59
|
+
|
60
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/ui.py:155
|
61
|
+
msgid "access.status.metadata-only"
|
62
|
+
msgstr ""
|
63
|
+
|
64
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/services/schema/validation.py:31
|
49
65
|
#, python-format
|
50
66
|
msgid "Invalid value %(identifier)s of identifier type %(type)s"
|
51
67
|
msgstr ""
|
52
68
|
|
53
|
-
#: /
|
69
|
+
#: /home/dusanst/Projects/oarepo-runtime/oarepo_runtime/translations/default_translations.py:6
|
54
70
|
msgid "Contact"
|
55
71
|
msgstr ""
|
56
72
|
|
@@ -76,7 +76,7 @@ oarepo_runtime/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
76
76
|
oarepo_runtime/services/components.py,sha256=h7oQNPueuPqBD6mCRCIr7ZuNvzeliXinHjOyVV3FBvw,10775
|
77
77
|
oarepo_runtime/services/generators.py,sha256=j87HitHA_w2awsz0C5IAAJ0qjg9JMtvdO3dvh6FQyfg,250
|
78
78
|
oarepo_runtime/services/results.py,sha256=Ap2mUJHl3V4BSduTrBWPuco0inQVq0QsuCbVhez48uY,5705
|
79
|
-
oarepo_runtime/services/search.py,sha256=
|
79
|
+
oarepo_runtime/services/search.py,sha256=mUycojDo26p54ZZPqXcXmdhUrzAP_eKCWls2XYJSM6c,8186
|
80
80
|
oarepo_runtime/services/config/__init__.py,sha256=559w4vphVAipa420OwTsxGUP-b7idoqSIX13FSJyVz0,783
|
81
81
|
oarepo_runtime/services/config/link_conditions.py,sha256=evPRd5XU76Ok4J-08bBfplbHZ019rl74FpJmO8iM5yg,3298
|
82
82
|
oarepo_runtime/services/config/permissions_presets.py,sha256=YF99Vjh1fGqSEXNw7qIfcUQFvzpE54_BafqkO6wlYHk,6668
|
@@ -102,8 +102,8 @@ oarepo_runtime/services/facets/year_histogram.py,sha256=kdfwx1lgw4UmfjdaqqeElJCB
|
|
102
102
|
oarepo_runtime/services/files/__init__.py,sha256=K8MStrEQf_BUhvzhwPTF93Hkhwrd1dtv35LDo7iZeTM,268
|
103
103
|
oarepo_runtime/services/files/components.py,sha256=x6Wd-vvkqTqB1phj2a6h42DNQksN8PuR2XKaOGoNHfw,2400
|
104
104
|
oarepo_runtime/services/files/service.py,sha256=8DH0Pefr9kilM2JnOb-UYsnqerE8Z1Mu4p6DOJ4j_ZU,608
|
105
|
-
oarepo_runtime/services/permissions/__init__.py,sha256=
|
106
|
-
oarepo_runtime/services/permissions/generators.py,sha256=
|
105
|
+
oarepo_runtime/services/permissions/__init__.py,sha256=33zqKGgRQmRfNZI8kAhue1bFoT1deYiVVNinP8Bvv0I,123
|
106
|
+
oarepo_runtime/services/permissions/generators.py,sha256=fuG0zp940l5AcAQmjGnOcF8vnCPmGUGKHsPYMOpGsYY,3288
|
107
107
|
oarepo_runtime/services/records/__init__.py,sha256=hIoa2fx1AkDr6c-MgY561U2oN9LFeUCtfbVnetpBUOg,78
|
108
108
|
oarepo_runtime/services/records/links.py,sha256=gVe-_hGkLtX7pd6sS6jTbRIhBby2FTn9PXyYPy3yxzs,737
|
109
109
|
oarepo_runtime/services/relations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -115,19 +115,19 @@ oarepo_runtime/services/schema/cf.py,sha256=-m9seIH5VYUdxDsJlPVXS0-8f7xkpN7YfW1q
|
|
115
115
|
oarepo_runtime/services/schema/i18n.py,sha256=NACu0SqXWuuwKVpBZdz4K8tVfBaCEI9YpcCtC1l1YGI,1669
|
116
116
|
oarepo_runtime/services/schema/i18n_ui.py,sha256=MnEDW0gcZPvEODbJ6XzldxNCJ2suhfmdHQ4wkcAG6zA,2179
|
117
117
|
oarepo_runtime/services/schema/i18n_validation.py,sha256=fyMTi2Rw-KiHv7c7HN61zGxRVa9sAjAEEkAL5wUyKNo,236
|
118
|
-
oarepo_runtime/services/schema/marshmallow.py,sha256=
|
118
|
+
oarepo_runtime/services/schema/marshmallow.py,sha256=iAMMH5MlYs59qetXAHOROvERNScfVqY9TrEIJejHCuw,1421
|
119
119
|
oarepo_runtime/services/schema/marshmallow_to_json_schema.py,sha256=VYLnVWHOoaxWCD_gqJO8-8u1SbaPEFBjDZ5HGgGr0Ow,2027
|
120
120
|
oarepo_runtime/services/schema/oneofschema.py,sha256=GnWH4Or_G5M0NgSmCoqMI6PBrJg5AC9RHrcB5QDKRq0,6661
|
121
121
|
oarepo_runtime/services/schema/polymorphic.py,sha256=bAbUoTIeDBiJPYPhpLEKKZekEdkHlpqkmNxk1hN3PDw,564
|
122
122
|
oarepo_runtime/services/schema/rdm.py,sha256=4gi44LIMWS9kWcZfEoHaJSq585qfZfMuUYM5IvL1nQo,531
|
123
|
-
oarepo_runtime/services/schema/ui.py,sha256=
|
123
|
+
oarepo_runtime/services/schema/ui.py,sha256=IojPiCBz08tzzjSTMRtzKbA98ZNlFwZKhOQ-YJLcvXM,5717
|
124
124
|
oarepo_runtime/services/schema/validation.py,sha256=VFOKSxQLHwFb7bW8BJAFXWe_iTAZFOfqOnb2Ko_Yxxc,2085
|
125
125
|
oarepo_runtime/translations/default_translations.py,sha256=060GBlA1ghWxfeumo6NqxCCZDb-6OezOuF6pr-_GEOQ,104
|
126
|
-
oarepo_runtime/translations/messages.pot,sha256=
|
127
|
-
oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo,sha256=
|
128
|
-
oarepo_runtime/translations/cs/LC_MESSAGES/messages.po,sha256=
|
129
|
-
oarepo_runtime/translations/en/LC_MESSAGES/messages.mo,sha256=
|
130
|
-
oarepo_runtime/translations/en/LC_MESSAGES/messages.po,sha256=
|
126
|
+
oarepo_runtime/translations/messages.pot,sha256=wr1vDKjsngqS9e5zQmSAsF3qUAtpQ41SUXwzEKRCnWw,2406
|
127
|
+
oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo,sha256=mhVcQhLPW0QG_l4sYDiaiKc67oEVWVVYlwBxeQyDZdY,1044
|
128
|
+
oarepo_runtime/translations/cs/LC_MESSAGES/messages.po,sha256=WZwTlVNrA9Ifr4NFL2c9X9mshltvy6ovRcj29i3kgeM,2067
|
129
|
+
oarepo_runtime/translations/en/LC_MESSAGES/messages.mo,sha256=tq5pTCpH7cuzdwrQlpTMjS1jlnoV0dWDlK9mGcKT338,673
|
130
|
+
oarepo_runtime/translations/en/LC_MESSAGES/messages.po,sha256=7-5S3iINOSFSI5gVdRvT5S2rbGScrheJiUJQH_fqXmY,1914
|
131
131
|
oarepo_runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
132
132
|
oarepo_runtime/utils/functools.py,sha256=gKS9YZtlIYcDvdNA9cmYO00yjiXBYV1jg8VpcRUyQyg,1324
|
133
133
|
oarepo_runtime/utils/path.py,sha256=V1NVyk3m12_YLbj7QHYvUpE1wScO78bYsX1LOLeXDkI,3108
|
@@ -135,9 +135,9 @@ tests/marshmallow_to_json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
135
135
|
tests/marshmallow_to_json/test_datacite_ui_schema.py,sha256=82iLj8nW45lZOUewpWbLX3mpSkpa9lxo-vK-Qtv_1bU,48552
|
136
136
|
tests/marshmallow_to_json/test_simple_schema.py,sha256=izZN9p0v6kovtSZ6AdxBYmK_c6ZOti2_z_wPT_zXIr0,1500
|
137
137
|
tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
138
|
-
oarepo_runtime-1.5.
|
139
|
-
oarepo_runtime-1.5.
|
140
|
-
oarepo_runtime-1.5.
|
141
|
-
oarepo_runtime-1.5.
|
142
|
-
oarepo_runtime-1.5.
|
143
|
-
oarepo_runtime-1.5.
|
138
|
+
oarepo_runtime-1.5.94.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
|
139
|
+
oarepo_runtime-1.5.94.dist-info/METADATA,sha256=3TTLbgQ9tQhZPbpHWa0auG91xxAEDHTxt5itndxPWWQ,4720
|
140
|
+
oarepo_runtime-1.5.94.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
141
|
+
oarepo_runtime-1.5.94.dist-info/entry_points.txt,sha256=k7O5LZUOGsVeSpB7ulU0txBUNp1CVQG7Q7TJIVTPbzU,491
|
142
|
+
oarepo_runtime-1.5.94.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
|
143
|
+
oarepo_runtime-1.5.94.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|