oarepo-runtime 1.5.116__tar.gz → 1.5.117__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 (165) hide show
  1. {oarepo_runtime-1.5.116/oarepo_runtime.egg-info → oarepo_runtime-1.5.117}/PKG-INFO +1 -1
  2. oarepo_runtime-1.5.117/oarepo_runtime/datastreams/json.py +4 -0
  3. oarepo_runtime-1.5.117/oarepo_runtime/datastreams/writers/publish.py +59 -0
  4. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/service.py +62 -9
  5. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/permissions/generators.py +7 -6
  6. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117/oarepo_runtime.egg-info}/PKG-INFO +1 -1
  7. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/setup.cfg +1 -1
  8. oarepo_runtime-1.5.116/oarepo_runtime/datastreams/json.py +0 -4
  9. oarepo_runtime-1.5.116/oarepo_runtime/datastreams/writers/publish.py +0 -49
  10. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/LICENSE +0 -0
  11. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/MANIFEST.in +0 -0
  12. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/README.md +0 -0
  13. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/__init__.py +0 -0
  14. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/__init__.py +0 -0
  15. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/assets.py +0 -0
  16. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/base.py +0 -0
  17. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/cf.py +0 -0
  18. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/check.py +0 -0
  19. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/configuration.py +0 -0
  20. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/fixtures.py +0 -0
  21. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/index.py +0 -0
  22. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/__init__.py +0 -0
  23. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/base.py +0 -0
  24. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/evaluate.py +0 -0
  25. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/list.py +0 -0
  26. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/search.py +0 -0
  27. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/validate.py +0 -0
  28. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/__init__.py +0 -0
  29. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/asynchronous.py +0 -0
  30. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/catalogue.py +0 -0
  31. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/datastreams.py +0 -0
  32. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/errors.py +0 -0
  33. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/ext.py +0 -0
  34. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/fixtures.py +0 -0
  35. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
  36. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
  37. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/excel.py +0 -0
  38. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/json.py +0 -0
  39. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/service.py +0 -0
  40. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
  41. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
  42. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/synchronous.py +0 -0
  43. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/transformers.py +0 -0
  44. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/types.py +0 -0
  45. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/utils.py +0 -0
  46. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
  47. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
  48. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
  49. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/utils.py +0 -0
  50. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
  51. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
  52. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/ext.py +0 -0
  53. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/ext_config.py +0 -0
  54. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/i18n/__init__.py +0 -0
  55. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/__init__.py +0 -0
  56. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/check.py +0 -0
  57. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/permissions/__init__.py +0 -0
  58. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/permissions/debug.py +0 -0
  59. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/views.py +0 -0
  60. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/profile.py +0 -0
  61. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/proxies.py +0 -0
  62. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/__init__.py +0 -0
  63. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/dumpers/__init__.py +0 -0
  64. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
  65. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
  66. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
  67. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
  68. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/mappings/__init__.py +0 -0
  69. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/mappings/rdm_parent_mapping.json +0 -0
  70. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/owners/__init__.py +0 -0
  71. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/owners/registry.py +0 -0
  72. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/__init__.py +0 -0
  73. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/base.py +0 -0
  74. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/internal.py +0 -0
  75. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/lookup.py +0 -0
  76. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/pid_relation.py +0 -0
  77. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/__init__.py +0 -0
  78. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
  79. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
  80. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/icu.py +0 -0
  81. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/mapping.py +0 -0
  82. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/owner.py +0 -0
  83. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/record_status.py +0 -0
  84. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/selectors.py +0 -0
  85. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/synthetic.py +0 -0
  86. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/__init__.py +0 -0
  87. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/config.py +0 -0
  88. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/file_resource.py +0 -0
  89. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/json_serializer.py +0 -0
  90. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
  91. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/resource.py +0 -0
  92. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/responses.py +0 -0
  93. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/__init__.py +0 -0
  94. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/components.py +0 -0
  95. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/__init__.py +0 -0
  96. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/link_conditions.py +0 -0
  97. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/permissions_presets.py +0 -0
  98. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/service.py +0 -0
  99. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
  100. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/custom_fields/mappings.py +0 -0
  101. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/entity/__init__.py +0 -0
  102. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/entity/config.py +0 -0
  103. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/entity/schema.py +0 -0
  104. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/entity/service.py +0 -0
  105. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/expansions/__init__.py +0 -0
  106. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
  107. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/expansions/service.py +0 -0
  108. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/__init__.py +0 -0
  109. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/base.py +0 -0
  110. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/date.py +0 -0
  111. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/enum.py +0 -0
  112. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
  113. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/max_facet.py +0 -0
  114. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/nested_facet.py +0 -0
  115. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/params.py +0 -0
  116. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/year_histogram.py +0 -0
  117. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/files/__init__.py +0 -0
  118. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/files/components.py +0 -0
  119. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/files/service.py +0 -0
  120. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/generators.py +0 -0
  121. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/permissions/__init__.py +0 -0
  122. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/records/__init__.py +0 -0
  123. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/records/links.py +0 -0
  124. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/__init__.py +0 -0
  125. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/components.py +0 -0
  126. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/errors.py +0 -0
  127. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/mapping.py +0 -0
  128. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/results.py +0 -0
  129. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/__init__.py +0 -0
  130. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/cf.py +0 -0
  131. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/i18n.py +0 -0
  132. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
  133. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
  134. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/marshmallow.py +0 -0
  135. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/marshmallow_to_json_schema.py +0 -0
  136. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/oneofschema.py +0 -0
  137. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/polymorphic.py +0 -0
  138. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/rdm.py +0 -0
  139. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/rdm_ui.py +0 -0
  140. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/ui.py +0 -0
  141. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/validation.py +0 -0
  142. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/search.py +0 -0
  143. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/service.py +0 -0
  144. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/tasks.py +0 -0
  145. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
  146. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -0
  147. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/default_translations.py +0 -0
  148. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
  149. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -0
  150. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/messages.pot +0 -0
  151. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/uow.py +0 -0
  152. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/utils/__init__.py +0 -0
  153. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/utils/functools.py +0 -0
  154. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/utils/path.py +0 -0
  155. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/SOURCES.txt +0 -0
  156. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
  157. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/entry_points.txt +0 -0
  158. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/requires.txt +0 -0
  159. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/top_level.txt +0 -0
  160. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/pyproject.toml +0 -0
  161. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/setup.py +0 -0
  162. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/tests/marshmallow_to_json/__init__.py +0 -0
  163. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/tests/marshmallow_to_json/test_datacite_ui_schema.py +0 -0
  164. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/tests/marshmallow_to_json/test_simple_schema.py +0 -0
  165. {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/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.116
3
+ Version: 1.5.117
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,4 @@
1
+ from typing import Union
2
+
3
+ JSON = Union[str, int, float, bool, None, dict[str, "JSON"], list["JSON"]]
4
+ JSONObject = dict[str, "JSON"]
@@ -0,0 +1,59 @@
1
+ from invenio_access.permissions import system_identity
2
+ from invenio_records_resources.proxies import current_service_registry
3
+
4
+ from oarepo_runtime.datastreams.types import StreamBatch, StreamEntry
5
+ from oarepo_runtime.datastreams.writers import BaseWriter
6
+ from oarepo_runtime.datastreams.writers.utils import record_invenio_exceptions
7
+
8
+
9
+ class PublishWriter(BaseWriter):
10
+ def __init__(
11
+ self,
12
+ *,
13
+ service,
14
+ request_name="publish_draft",
15
+ identity=None,
16
+ direct_call=False,
17
+ **kwargs
18
+ ):
19
+ if isinstance(service, str):
20
+ service = current_service_registry.get(service)
21
+
22
+ self._service = service
23
+ self._identity = identity or system_identity
24
+ self._request_name = request_name
25
+ self._direct_call = direct_call
26
+
27
+ def write(self, batch: StreamBatch) -> StreamBatch:
28
+ for entry in batch.ok_entries:
29
+ if entry.deleted:
30
+ continue
31
+
32
+ with record_invenio_exceptions(entry):
33
+ self._write_entry(entry)
34
+
35
+ def _write_entry(self, entry: StreamEntry):
36
+ if self._direct_call:
37
+ self._service.publish(self._identity, entry.id)
38
+ else:
39
+ from invenio_requests.proxies import (
40
+ current_requests_service as current_invenio_requests_service,
41
+ )
42
+ from oarepo_requests.proxies import current_oarepo_requests_service
43
+
44
+ draft = self._service.read_draft(self._identity, entry.id)
45
+ request = current_oarepo_requests_service.create(
46
+ identity=self._identity,
47
+ data=None,
48
+ request_type=self._request_name,
49
+ topic=draft._record,
50
+ )
51
+
52
+ submit_result = current_invenio_requests_service.execute_action(
53
+ self._identity, request.id, "submit"
54
+ )
55
+ accept_result = current_invenio_requests_service.execute_action(
56
+ self._identity, request.id, "accept"
57
+ )
58
+
59
+ self._service.read(self._identity, draft["id"])
@@ -4,7 +4,7 @@ from invenio_records_resources.proxies import current_service_registry
4
4
  from invenio_records_resources.services.uow import UnitOfWork
5
5
 
6
6
  from ...uow import BulkUnitOfWork
7
- from ..types import StreamBatch, StreamEntry
7
+ from ..types import StreamBatch, StreamEntry, StreamEntryError
8
8
  from . import BaseWriter
9
9
  from .utils import record_invenio_exceptions
10
10
 
@@ -38,10 +38,26 @@ class ServiceWriter(BaseWriter):
38
38
  self._update = update
39
39
 
40
40
  def _resolve(self, id_):
41
- try:
42
- return self._service.read(self._identity, id_)
43
- except PIDDoesNotExistError:
44
- return None
41
+ if hasattr(self._service, "read_draft"):
42
+ try:
43
+ # try to read the draft first
44
+ return self._service.read_draft(self._identity, id_)
45
+ except PIDDoesNotExistError:
46
+ pass
47
+ try:
48
+ # if the draft does not exist, read the published record
49
+ # and create a draft for it
50
+ rec = self._service.read(self._identity, id_)
51
+ return self._service.edit(self._identity, id_)
52
+ except PIDDoesNotExistError:
53
+ pass
54
+
55
+ else:
56
+ try:
57
+ return self._service.read(self._identity, id_)
58
+ except PIDDoesNotExistError:
59
+ pass
60
+ return None
45
61
 
46
62
  def _get_stream_entry_id(self, entry: StreamEntry):
47
63
  return entry.id
@@ -92,6 +108,16 @@ class ServiceWriter(BaseWriter):
92
108
  stream_entry.id = repository_entry.id
93
109
 
94
110
  stream_entry.context["revision_id"] = repository_entry._record.revision_id
111
+ if repository_entry.errors:
112
+ for err in repository_entry.errors:
113
+ field = err.get("field")
114
+ messages = err.get("messages")
115
+ for message in messages:
116
+ stream_entry.errors.append(
117
+ StreamEntryError(
118
+ code="validation", message=message, location=field
119
+ )
120
+ )
95
121
 
96
122
  def try_update(self, entry_id, entry, **service_kwargs):
97
123
  current = self._resolve(entry_id)
@@ -99,9 +125,15 @@ class ServiceWriter(BaseWriter):
99
125
  updated = dict(current.to_dict(), **entry)
100
126
  # might raise exception here but that's ok - we know that the entry
101
127
  # exists in db as it was _resolved
102
- return self._service.update(
103
- self._identity, entry_id, updated, **service_kwargs
104
- )
128
+ if hasattr(self._service, "update_draft"):
129
+ # try to update draft first
130
+ return self._service.update_draft(
131
+ self._identity, entry_id, updated, **service_kwargs
132
+ )
133
+ else:
134
+ return self._service.update(
135
+ self._identity, entry_id, updated, **service_kwargs
136
+ )
105
137
 
106
138
  def _delete_entry(self, stream_entry: StreamEntry, uow=None):
107
139
  entry_id = self._get_stream_entry_id(stream_entry)
@@ -110,4 +142,25 @@ class ServiceWriter(BaseWriter):
110
142
  service_kwargs = {}
111
143
  if uow:
112
144
  service_kwargs["uow"] = uow
113
- self._service.delete(self._identity, entry_id, **service_kwargs)
145
+ deletion_exceptions = []
146
+ deletion_tries = 0
147
+
148
+ # if the service has drafts, try to delete it first
149
+ if hasattr(self._service, "delete_draft"):
150
+ # delete draft
151
+ deletion_tries += 1
152
+ try:
153
+ self._service.delete_draft(self._identity, entry_id, **service_kwargs)
154
+ except Exception as e:
155
+ deletion_exceptions.append(e)
156
+
157
+ # delete the record if it was published
158
+ deletion_tries += 1
159
+ try:
160
+ self._service.delete(self._identity, entry_id, **service_kwargs)
161
+ except Exception as e:
162
+ deletion_exceptions.append(e)
163
+
164
+ if len(deletion_exceptions) == deletion_tries:
165
+ # all deletion attempts failed
166
+ raise deletion_exceptions[-1]
@@ -38,6 +38,7 @@ class RecordOwners(Generator):
38
38
  return dsl.Q("terms", **{"parent.access.owned_by.user": users})
39
39
  else:
40
40
  return dsl.Q("terms", **{"parent.owners.user": users})
41
+ return dsl.Q("match_none")
41
42
 
42
43
 
43
44
  class UserWithRole(Generator):
@@ -59,12 +60,12 @@ class UserWithRole(Generator):
59
60
  class IfDraftType(ConditionalGenerator):
60
61
  def __init__(
61
62
  self,
62
- draft_types: list[
63
- Literal["initial"] | Literal["metadata"] | Literal["new_version"]
64
- ]
65
- | Literal["initial"]
66
- | Literal["metadata"]
67
- | Literal["new_version"],
63
+ draft_types: (
64
+ list[Literal["initial"] | Literal["metadata"] | Literal["new_version"]]
65
+ | Literal["initial"]
66
+ | Literal["metadata"]
67
+ | Literal["new_version"]
68
+ ),
68
69
  then_=None,
69
70
  else_=None,
70
71
  ):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: oarepo-runtime
3
- Version: 1.5.116
3
+ Version: 1.5.117
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.116
3
+ version = 1.5.117
4
4
  description = A set of runtime extensions of Invenio repository
5
5
  authors = Alzbeta Pokorna
6
6
  readme = README.md
@@ -1,4 +0,0 @@
1
- from typing import List, Mapping, Union
2
-
3
- JSON = Union[str, int, float, bool, None, Mapping[str, "JSON"], List["JSON"]]
4
- JSONObject = Mapping[str, "JSON"]
@@ -1,49 +0,0 @@
1
- from invenio_access.permissions import system_identity
2
- from invenio_records_resources.proxies import current_service_registry
3
-
4
- from oarepo_runtime.datastreams.types import StreamBatch, StreamEntry
5
- from oarepo_runtime.datastreams.writers import BaseWriter
6
- from oarepo_runtime.datastreams.writers.utils import record_invenio_exceptions
7
-
8
-
9
- class PublishWriter(BaseWriter):
10
- def __init__(
11
- self, *, service, request_name="publish_draft", identity=None, **kwargs
12
- ):
13
- if isinstance(service, str):
14
- service = current_service_registry.get(service)
15
-
16
- self._service = service
17
- self._identity = identity or system_identity
18
- self._request_name = request_name
19
-
20
- def write(self, batch: StreamBatch) -> StreamBatch:
21
- for entry in batch.ok_entries:
22
- if entry.deleted:
23
- continue
24
-
25
- with record_invenio_exceptions(entry):
26
- self._write_entry(entry)
27
-
28
- def _write_entry(self, entry: StreamEntry):
29
- from invenio_requests.proxies import (
30
- current_requests_service as current_invenio_requests_service,
31
- )
32
- from oarepo_requests.proxies import current_oarepo_requests_service
33
-
34
- draft = self._service.read_draft(self._identity, entry.id)
35
- request = current_oarepo_requests_service.create(
36
- identity=self._identity,
37
- data=None,
38
- request_type=self._request_name,
39
- topic=draft._record,
40
- )
41
-
42
- submit_result = current_invenio_requests_service.execute_action(
43
- self._identity, request.id, "submit"
44
- )
45
- accept_result = current_invenio_requests_service.execute_action(
46
- self._identity, request.id, "accept"
47
- )
48
-
49
- self._service.read(self._identity, draft["id"])