oarepo-runtime 1.5.91__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.
Files changed (151) hide show
  1. {oarepo_runtime-1.5.91/oarepo_runtime.egg-info → oarepo_runtime-1.5.93}/PKG-INFO +1 -1
  2. oarepo_runtime-1.5.93/oarepo_runtime/services/permissions/__init__.py +3 -0
  3. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/permissions/generators.py +58 -4
  4. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/marshmallow.py +9 -1
  5. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/search.py +46 -7
  6. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93/oarepo_runtime.egg-info}/PKG-INFO +1 -1
  7. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/setup.cfg +1 -1
  8. oarepo_runtime-1.5.91/oarepo_runtime/services/permissions/__init__.py +0 -3
  9. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/LICENSE +0 -0
  10. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/MANIFEST.in +0 -0
  11. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/README.md +0 -0
  12. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/__init__.py +0 -0
  13. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/__init__.py +0 -0
  14. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/assets.py +0 -0
  15. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/base.py +0 -0
  16. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/cf.py +0 -0
  17. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/check.py +0 -0
  18. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/configuration.py +0 -0
  19. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/fixtures.py +0 -0
  20. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/index.py +0 -0
  21. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/cli/validate.py +0 -0
  22. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/__init__.py +0 -0
  23. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/asynchronous.py +0 -0
  24. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/catalogue.py +0 -0
  25. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/datastreams.py +0 -0
  26. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/errors.py +0 -0
  27. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/ext.py +0 -0
  28. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/fixtures.py +0 -0
  29. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/json.py +0 -0
  30. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
  31. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
  32. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/excel.py +0 -0
  33. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/json.py +0 -0
  34. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/service.py +0 -0
  35. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
  36. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
  37. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/synchronous.py +0 -0
  38. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/transformers.py +0 -0
  39. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/types.py +0 -0
  40. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/utils.py +0 -0
  41. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
  42. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
  43. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
  44. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/service.py +0 -0
  45. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/utils.py +0 -0
  46. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
  47. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
  48. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/ext.py +0 -0
  49. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/ext_config.py +0 -0
  50. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/i18n/__init__.py +0 -0
  51. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/info/__init__.py +0 -0
  52. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/info/check.py +0 -0
  53. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/info/views.py +0 -0
  54. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/profile.py +0 -0
  55. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/proxies.py +0 -0
  56. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/__init__.py +0 -0
  57. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/dumpers/__init__.py +0 -0
  58. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
  59. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
  60. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
  61. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
  62. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/mappings/__init__.py +0 -0
  63. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/mappings/rdm_parent_mapping.json +0 -0
  64. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/owners/__init__.py +0 -0
  65. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/owners/registry.py +0 -0
  66. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/__init__.py +0 -0
  67. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/base.py +0 -0
  68. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/internal.py +0 -0
  69. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/lookup.py +0 -0
  70. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/relations/pid_relation.py +0 -0
  71. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/__init__.py +0 -0
  72. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
  73. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
  74. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/icu.py +0 -0
  75. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/mapping.py +0 -0
  76. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/owner.py +0 -0
  77. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/record_status.py +0 -0
  78. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/selectors.py +0 -0
  79. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/records/systemfields/synthetic.py +0 -0
  80. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/resources/__init__.py +0 -0
  81. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/resources/file_resource.py +0 -0
  82. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/resources/json_serializer.py +0 -0
  83. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
  84. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/__init__.py +0 -0
  85. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/components.py +0 -0
  86. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/config/__init__.py +0 -0
  87. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/config/link_conditions.py +0 -0
  88. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/config/permissions_presets.py +0 -0
  89. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/config/service.py +0 -0
  90. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
  91. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/custom_fields/mappings.py +0 -0
  92. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/entity/__init__.py +0 -0
  93. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/entity/config.py +0 -0
  94. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/entity/schema.py +0 -0
  95. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/entity/service.py +0 -0
  96. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/expansions/__init__.py +0 -0
  97. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
  98. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/expansions/service.py +0 -0
  99. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/__init__.py +0 -0
  100. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/base.py +0 -0
  101. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/date.py +0 -0
  102. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/enum.py +0 -0
  103. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
  104. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/max_facet.py +0 -0
  105. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/nested_facet.py +0 -0
  106. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/params.py +0 -0
  107. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/facets/year_histogram.py +0 -0
  108. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/files/__init__.py +0 -0
  109. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/files/components.py +0 -0
  110. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/files/service.py +0 -0
  111. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/generators.py +0 -0
  112. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/records/__init__.py +0 -0
  113. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/records/links.py +0 -0
  114. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/__init__.py +0 -0
  115. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/components.py +0 -0
  116. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/errors.py +0 -0
  117. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/relations/mapping.py +0 -0
  118. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/results.py +0 -0
  119. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/__init__.py +0 -0
  120. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/cf.py +0 -0
  121. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/i18n.py +0 -0
  122. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
  123. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
  124. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/marshmallow_to_json_schema.py +0 -0
  125. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/oneofschema.py +0 -0
  126. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/polymorphic.py +0 -0
  127. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/rdm.py +0 -0
  128. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/ui.py +0 -0
  129. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/services/schema/validation.py +0 -0
  130. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/tasks.py +0 -0
  131. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
  132. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -0
  133. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/default_translations.py +0 -0
  134. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
  135. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -0
  136. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/translations/messages.pot +0 -0
  137. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/uow.py +0 -0
  138. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/utils/__init__.py +0 -0
  139. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/utils/functools.py +0 -0
  140. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime/utils/path.py +0 -0
  141. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/SOURCES.txt +0 -0
  142. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
  143. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/entry_points.txt +0 -0
  144. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/requires.txt +0 -0
  145. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/oarepo_runtime.egg-info/top_level.txt +0 -0
  146. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/pyproject.toml +0 -0
  147. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/setup.py +0 -0
  148. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/tests/marshmallow_to_json/__init__.py +0 -0
  149. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/tests/marshmallow_to_json/test_datacite_ui_schema.py +0 -0
  150. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/tests/marshmallow_to_json/test_simple_schema.py +0 -0
  151. {oarepo_runtime-1.5.91 → oarepo_runtime-1.5.93}/tests/pkg_data/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: oarepo-runtime
3
- Version: 1.5.91
3
+ Version: 1.5.93
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -0,0 +1,3 @@
1
+ from .generators import IfDraftType, RecordOwners, UserWithRole
2
+
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 Generator
5
+ from invenio_records_permissions.generators import (
6
+ ConditionalGenerator,
7
+ Disable,
8
+ Generator,
9
+ )
3
10
  from invenio_search.engine import dsl
4
- from flask import current_app
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('INVENIO_RDM_ENABLED', False):
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('INVENIO_RDM_ENABLED', False):
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
- import marshmallow as ma
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,6 +24,7 @@ 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
 
@@ -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 SearchOptions(InvenioSearchOptions):
51
- params_interpreters_cls = [
52
- QueryStrParam,
53
- PaginationParam,
54
- SortParam,
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
@@ -192,3 +221,13 @@ class ICUSortOptions:
192
221
  class I18nSearchOptions(SearchOptions):
193
222
  extra_sort_options = {}
194
223
  record_cls = None
224
+
225
+
226
+ class I18nRDMSearchOptions(RDMSearchOptions):
227
+ extra_sort_options = {}
228
+ record_cls = None
229
+
230
+
231
+ class I18nRDMDraftsSearchOptions(RDMSearchDraftsOptions):
232
+ extra_sort_options = {}
233
+ record_cls = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: oarepo-runtime
3
- Version: 1.5.91
3
+ Version: 1.5.93
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = oarepo-runtime
3
- version = 1.5.91
3
+ version = 1.5.93
4
4
  description = A set of runtime extensions of Invenio repository
5
5
  authors = Alzbeta Pokorna
6
6
  readme = README.md
@@ -1,3 +0,0 @@
1
- from .generators import RecordOwners, UserWithRole
2
-
3
- __all__ = ("RecordOwners", "UserWithRole")
File without changes