oarepo-runtime 1.5.92__tar.gz → 1.5.93__tar.gz
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-1.5.92/oarepo_runtime.egg-info → oarepo_runtime-1.5.93}/PKG-INFO +1 -1
- oarepo_runtime-1.5.93/oarepo_runtime/services/permissions/__init__.py +3 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/permissions/generators.py +58 -4
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/marshmallow.py +9 -1
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/search.py +40 -8
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93/oarepo_runtime.egg-info}/PKG-INFO +1 -1
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/setup.cfg +1 -1
- oarepo_runtime-1.5.92/oarepo_runtime/services/permissions/__init__.py +0 -3
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/LICENSE +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/MANIFEST.in +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/README.md +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/assets.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/base.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/cf.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/check.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/configuration.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/fixtures.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/index.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/validate.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/asynchronous.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/catalogue.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/datastreams.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/errors.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/ext.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/fixtures.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/json.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/excel.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/json.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/service.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/synchronous.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/transformers.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/types.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/utils.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/service.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/utils.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/ext.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/ext_config.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/i18n/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/info/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/info/check.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/info/views.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/profile.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/proxies.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/dumpers/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/mappings/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/mappings/rdm_parent_mapping.json +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/owners/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/owners/registry.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/base.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/internal.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/lookup.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/pid_relation.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/icu.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/mapping.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/owner.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/record_status.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/selectors.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/synthetic.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/resources/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/resources/file_resource.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/resources/json_serializer.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/components.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/config/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/config/link_conditions.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/config/permissions_presets.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/config/service.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/custom_fields/mappings.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/entity/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/entity/config.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/entity/schema.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/entity/service.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/expansions/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/expansions/service.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/base.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/date.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/enum.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/max_facet.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/nested_facet.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/params.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/year_histogram.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/files/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/files/components.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/files/service.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/generators.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/records/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/records/links.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/components.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/errors.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/mapping.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/results.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/cf.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/i18n.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/marshmallow_to_json_schema.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/oneofschema.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/polymorphic.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/rdm.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/ui.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/validation.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/tasks.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/default_translations.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/messages.pot +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/uow.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/utils/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/utils/functools.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/utils/path.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/SOURCES.txt +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/entry_points.txt +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/requires.txt +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/top_level.txt +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/pyproject.toml +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/setup.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/tests/marshmallow_to_json/__init__.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/tests/marshmallow_to_json/test_datacite_ui_schema.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/tests/marshmallow_to_json/test_simple_schema.py +0 -0
- {oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/tests/pkg_data/__init__.py +0 -0
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/permissions/generators.py
RENAMED
@@ -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
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/marshmallow.py
RENAMED
@@ -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:
|
@@ -2,11 +2,18 @@ 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 (
|
9
|
+
RDMSearchOptions as BaseRDMSearchOptions,
|
10
|
+
)
|
5
11
|
from invenio_records_resources.proxies import current_service_registry
|
6
12
|
from invenio_records_resources.services.records import (
|
7
13
|
SearchOptions as InvenioSearchOptions,
|
8
14
|
)
|
9
15
|
from invenio_records_resources.services.records.params import (
|
16
|
+
FacetsParam,
|
10
17
|
PaginationParam,
|
11
18
|
QueryStrParam,
|
12
19
|
SortParam,
|
@@ -17,9 +24,10 @@ from invenio_search.engine import dsl
|
|
17
24
|
# TODO: integrate this to invenio_records_resources.services.records and remove SearchOptions class
|
18
25
|
from oarepo_runtime.i18n import lazy_gettext as _
|
19
26
|
from oarepo_runtime.records.systemfields.icu import ICUSuggestField
|
27
|
+
from oarepo_runtime.utils.functools import class_property
|
20
28
|
|
21
29
|
from .facets.params import GroupedFacetsParam
|
22
|
-
|
30
|
+
|
23
31
|
try:
|
24
32
|
from invenio_i18n import get_locale
|
25
33
|
except ImportError:
|
@@ -47,13 +55,16 @@ class FuzzySuggestQueryParser(SuggestQueryParser):
|
|
47
55
|
return dsl.Q("bool", should=[multi_match_with_bool_prefix, multi_match_fuzzy])
|
48
56
|
|
49
57
|
|
50
|
-
class
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
GroupedFacetsParam
|
56
|
-
|
58
|
+
class SearchOptionsMixin:
|
59
|
+
@class_property
|
60
|
+
def params_interpreters_cls(cls):
|
61
|
+
"""Replaces FacetsParam with GroupedFacetsParam."""
|
62
|
+
param_interpreters = [*super(SearchOptionsMixin, cls).params_interpreters_cls]
|
63
|
+
# replace FacetsParam with GroupedFacetsParam
|
64
|
+
for idx, interpreter in enumerate(param_interpreters):
|
65
|
+
if interpreter == FacetsParam:
|
66
|
+
param_interpreters[idx] = GroupedFacetsParam
|
67
|
+
return param_interpreters
|
57
68
|
|
58
69
|
sort_options = {
|
59
70
|
"title": dict(
|
@@ -75,6 +86,24 @@ class SearchOptions(InvenioSearchOptions):
|
|
75
86
|
}
|
76
87
|
|
77
88
|
|
89
|
+
class SearchOptions(SearchOptionsMixin, InvenioSearchOptions):
|
90
|
+
# TODO: should be changed
|
91
|
+
params_interpreters_cls = [
|
92
|
+
QueryStrParam,
|
93
|
+
PaginationParam,
|
94
|
+
SortParam,
|
95
|
+
GroupedFacetsParam,
|
96
|
+
]
|
97
|
+
|
98
|
+
|
99
|
+
class RDMSearchOptions(SearchOptionsMixin, BaseRDMSearchOptions):
|
100
|
+
pass
|
101
|
+
|
102
|
+
|
103
|
+
class RDMSearchDraftsOptions(SearchOptionsMixin, BaseRDMSearchDraftsOptions):
|
104
|
+
pass
|
105
|
+
|
106
|
+
|
78
107
|
@dataclasses.dataclass
|
79
108
|
class SuggestField:
|
80
109
|
field: str
|
@@ -188,14 +217,17 @@ class ICUSortOptions:
|
|
188
217
|
}
|
189
218
|
return ret
|
190
219
|
|
220
|
+
|
191
221
|
class I18nSearchOptions(SearchOptions):
|
192
222
|
extra_sort_options = {}
|
193
223
|
record_cls = None
|
194
224
|
|
225
|
+
|
195
226
|
class I18nRDMSearchOptions(RDMSearchOptions):
|
196
227
|
extra_sort_options = {}
|
197
228
|
record_cls = None
|
198
229
|
|
230
|
+
|
199
231
|
class I18nRDMDraftsSearchOptions(RDMSearchDraftsOptions):
|
200
232
|
extra_sort_options = {}
|
201
233
|
record_cls = None
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/attachments.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/service.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/semi_asynchronous.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/dumpers/edtf_interval.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/entity_resolvers/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/entity_resolvers/proxies.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/__init__.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/internal.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/pid_relation.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/featured_file.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/mapping.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/owner.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/record_status.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/selectors.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/synthetic.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/config/link_conditions.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/custom_fields/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/custom_fields/mappings.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/expansions/__init__.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/expansions/service.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/facet_groups_names.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/nested_facet.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/year_histogram.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/components.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/mapping.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/i18n_validation.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/oneofschema.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/polymorphic.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/validation.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/default_translations.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/tests/marshmallow_to_json/test_datacite_ui_schema.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.92 → oarepo_runtime-1.5.93}/tests/marshmallow_to_json/test_simple_schema.py
RENAMED
File without changes
|
File without changes
|