oarepo-runtime 1.5.110__tar.gz → 1.5.112__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 (162) hide show
  1. {oarepo_runtime-1.5.110/oarepo_runtime.egg-info → oarepo_runtime-1.5.112}/PKG-INFO +1 -1
  2. oarepo_runtime-1.5.112/oarepo_runtime/datastreams/writers/publish.py +49 -0
  3. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/ext_config.py +2 -0
  4. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/relations/__init__.py +4 -1
  5. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/relations/base.py +26 -0
  6. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/relations/pid_relation.py +18 -2
  7. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112/oarepo_runtime.egg-info}/PKG-INFO +1 -1
  8. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime.egg-info/SOURCES.txt +1 -0
  9. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/setup.cfg +1 -1
  10. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/LICENSE +0 -0
  11. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/MANIFEST.in +0 -0
  12. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/README.md +0 -0
  13. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/__init__.py +0 -0
  14. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/__init__.py +0 -0
  15. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/assets.py +0 -0
  16. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/base.py +0 -0
  17. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/cf.py +0 -0
  18. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/check.py +0 -0
  19. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/configuration.py +0 -0
  20. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/fixtures.py +0 -0
  21. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/index.py +0 -0
  22. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/permissions/__init__.py +0 -0
  23. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/permissions/base.py +0 -0
  24. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/permissions/evaluate.py +0 -0
  25. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/permissions/list.py +0 -0
  26. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/permissions/search.py +0 -0
  27. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/cli/validate.py +0 -0
  28. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/__init__.py +0 -0
  29. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/asynchronous.py +0 -0
  30. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/catalogue.py +0 -0
  31. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/datastreams.py +0 -0
  32. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/errors.py +0 -0
  33. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/ext.py +0 -0
  34. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/fixtures.py +0 -0
  35. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/json.py +0 -0
  36. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
  37. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
  38. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/readers/excel.py +0 -0
  39. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/readers/json.py +0 -0
  40. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/readers/service.py +0 -0
  41. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
  42. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
  43. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/synchronous.py +0 -0
  44. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/transformers.py +0 -0
  45. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/types.py +0 -0
  46. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/utils.py +0 -0
  47. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
  48. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
  49. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
  50. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/writers/service.py +0 -0
  51. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/writers/utils.py +0 -0
  52. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
  53. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
  54. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/ext.py +0 -0
  55. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/i18n/__init__.py +0 -0
  56. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/info/__init__.py +0 -0
  57. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/info/check.py +0 -0
  58. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/info/permissions/__init__.py +0 -0
  59. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/info/permissions/debug.py +0 -0
  60. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/info/views.py +0 -0
  61. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/profile.py +0 -0
  62. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/proxies.py +0 -0
  63. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/__init__.py +0 -0
  64. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/dumpers/__init__.py +0 -0
  65. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
  66. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
  67. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
  68. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
  69. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/mappings/__init__.py +0 -0
  70. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/mappings/rdm_parent_mapping.json +0 -0
  71. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/owners/__init__.py +0 -0
  72. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/owners/registry.py +0 -0
  73. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/relations/internal.py +0 -0
  74. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/relations/lookup.py +0 -0
  75. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/systemfields/__init__.py +0 -0
  76. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
  77. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
  78. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/systemfields/icu.py +0 -0
  79. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/systemfields/mapping.py +0 -0
  80. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/systemfields/owner.py +0 -0
  81. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/systemfields/record_status.py +0 -0
  82. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/systemfields/selectors.py +0 -0
  83. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/records/systemfields/synthetic.py +0 -0
  84. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/resources/__init__.py +0 -0
  85. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/resources/config.py +0 -0
  86. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/resources/file_resource.py +0 -0
  87. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/resources/json_serializer.py +0 -0
  88. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
  89. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/resources/resource.py +0 -0
  90. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/__init__.py +0 -0
  91. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/components.py +0 -0
  92. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/config/__init__.py +0 -0
  93. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/config/link_conditions.py +0 -0
  94. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/config/permissions_presets.py +0 -0
  95. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/config/service.py +0 -0
  96. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
  97. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/custom_fields/mappings.py +0 -0
  98. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/entity/__init__.py +0 -0
  99. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/entity/config.py +0 -0
  100. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/entity/schema.py +0 -0
  101. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/entity/service.py +0 -0
  102. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/expansions/__init__.py +0 -0
  103. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
  104. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/expansions/service.py +0 -0
  105. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/facets/__init__.py +0 -0
  106. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/facets/base.py +0 -0
  107. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/facets/date.py +0 -0
  108. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/facets/enum.py +0 -0
  109. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
  110. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/facets/max_facet.py +0 -0
  111. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/facets/nested_facet.py +0 -0
  112. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/facets/params.py +0 -0
  113. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/facets/year_histogram.py +0 -0
  114. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/files/__init__.py +0 -0
  115. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/files/components.py +0 -0
  116. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/files/service.py +0 -0
  117. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/generators.py +0 -0
  118. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/permissions/__init__.py +0 -0
  119. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/permissions/generators.py +0 -0
  120. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/records/__init__.py +0 -0
  121. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/records/links.py +0 -0
  122. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/relations/__init__.py +0 -0
  123. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/relations/components.py +0 -0
  124. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/relations/errors.py +0 -0
  125. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/relations/mapping.py +0 -0
  126. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/results.py +0 -0
  127. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/__init__.py +0 -0
  128. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/cf.py +0 -0
  129. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/i18n.py +0 -0
  130. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
  131. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
  132. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/marshmallow.py +0 -0
  133. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/marshmallow_to_json_schema.py +0 -0
  134. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/oneofschema.py +0 -0
  135. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/polymorphic.py +0 -0
  136. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/rdm.py +0 -0
  137. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/rdm_ui.py +0 -0
  138. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/ui.py +0 -0
  139. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/schema/validation.py +0 -0
  140. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/search.py +0 -0
  141. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/services/service.py +0 -0
  142. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/tasks.py +0 -0
  143. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
  144. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -0
  145. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/translations/default_translations.py +0 -0
  146. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
  147. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -0
  148. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/translations/messages.pot +0 -0
  149. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/uow.py +0 -0
  150. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/utils/__init__.py +0 -0
  151. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/utils/functools.py +0 -0
  152. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime/utils/path.py +0 -0
  153. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
  154. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime.egg-info/entry_points.txt +0 -0
  155. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime.egg-info/requires.txt +0 -0
  156. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/oarepo_runtime.egg-info/top_level.txt +0 -0
  157. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/pyproject.toml +0 -0
  158. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/setup.py +0 -0
  159. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/tests/marshmallow_to_json/__init__.py +0 -0
  160. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/tests/marshmallow_to_json/test_datacite_ui_schema.py +0 -0
  161. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/tests/marshmallow_to_json/test_simple_schema.py +0 -0
  162. {oarepo_runtime-1.5.110 → oarepo_runtime-1.5.112}/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.110
3
+ Version: 1.5.112
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,49 @@
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"])
@@ -9,6 +9,7 @@ from oarepo_runtime.datastreams.writers.attachments_file import AttachmentsFileW
9
9
  from oarepo_runtime.datastreams.writers.attachments_service import (
10
10
  AttachmentsServiceWriter,
11
11
  )
12
+ from oarepo_runtime.datastreams.writers.publish import PublishWriter
12
13
  from oarepo_runtime.datastreams.writers.service import ServiceWriter
13
14
  from oarepo_runtime.datastreams.writers.yaml import YamlWriter
14
15
  from oarepo_runtime.records.entity_resolvers import UserResolver
@@ -50,6 +51,7 @@ DATASTREAMS_WRITERS = {
50
51
  "attachments_service": AttachmentsServiceWriter,
51
52
  "yaml": YamlWriter,
52
53
  "attachments_file": AttachmentsFileWriter,
54
+ "publish": PublishWriter,
53
55
  }
54
56
 
55
57
  DATASTREAMS_TRANSFORMERS = {}
@@ -4,9 +4,10 @@ from .base import (
4
4
  Relation,
5
5
  RelationResult,
6
6
  RelationsField,
7
+ UnstrictRelationResult
7
8
  )
8
9
  from .internal import InternalRelation
9
- from .pid_relation import PIDRelation
10
+ from .pid_relation import PIDRelation, UnstrictPIDRelation
10
11
 
11
12
  __all__ = (
12
13
  "Relation",
@@ -16,4 +17,6 @@ __all__ = (
16
17
  "RelationsField",
17
18
  "InternalRelation",
18
19
  "PIDRelation",
20
+ "UnstrictPIDRelation",
21
+ "UnstrictRelationResult"
19
22
  )
@@ -173,6 +173,32 @@ class RelationResult:
173
173
 
174
174
  def resolve(self, id_):
175
175
  raise NotImplementedError("Please implement this method in your subclass")
176
+ class UnstrictRelationResult(RelationResult):
177
+
178
+ def _resolve_lookup_result(self, relation):
179
+ if not isinstance(relation.value, dict):
180
+ raise InvalidRelationValue(
181
+ f"Value at path {relation.path} must be dict, found {relation.value}"
182
+ )
183
+ relation_id = self._lookup_id(relation)
184
+ resolved_object = self.resolve(relation_id, relation.value)
185
+ if not resolved_object:
186
+ raise InvalidRelationValue(f"Could not resolve relation id {relation_id}.")
187
+ return resolved_object
188
+
189
+ def _dereference_one(self, relation: LookupResult):
190
+ """Dereference a single object into a dict."""
191
+ if not self._needs_update_relation_value(relation):
192
+ return
193
+
194
+ data = relation.value
195
+ obj = self._resolve_lookup_result(relation)
196
+ if type(obj) is not dict:
197
+ self._get_dereferenced_value(data, obj, relation)
198
+
199
+ return data
200
+
201
+
176
202
 
177
203
 
178
204
  class Relation:
@@ -1,12 +1,13 @@
1
1
  from invenio_db import db
2
2
 
3
3
  from oarepo_runtime.services.relations.errors import InvalidRelationError
4
+ from sqlalchemy.exc import NoResultFound
4
5
 
5
- from .base import Relation, RelationResult
6
+ from .base import Relation, RelationResult, UnstrictRelationResult
6
7
  from .lookup import LookupResult
7
8
 
8
9
  class PIDRelationResult(RelationResult):
9
- def resolve(self, id_):
10
+ def resolve(self, id_, data = None):
10
11
  """Resolve the value using the record class."""
11
12
  # TODO: handle permissions here !!!!!!
12
13
  try:
@@ -65,6 +66,15 @@ class PIDRelationResult(RelationResult):
65
66
  def _add_version_info(self, data, relation: LookupResult, resolved_object):
66
67
  data["@v"] = f"{resolved_object.id}::{resolved_object.revision_id}"
67
68
 
69
+ class UnstrictPIDRelationResult(PIDRelationResult, UnstrictRelationResult):
70
+
71
+ def resolve(self, id_, data):
72
+ try:
73
+ return super().resolve(id_, data)
74
+ except InvalidRelationError as e:
75
+ if isinstance(e.__cause__, NoResultFound):
76
+ return data
77
+ raise
68
78
 
69
79
  class PIDRelation(Relation):
70
80
  result_cls = PIDRelationResult
@@ -73,6 +83,12 @@ class PIDRelation(Relation):
73
83
  super().__init__(key=key, **kwargs)
74
84
  self.pid_field = pid_field
75
85
 
86
+ class UnstrictPIDRelation(Relation):
87
+ result_cls = UnstrictPIDRelationResult
88
+
89
+ def __init__(self, key=None, pid_field=None, **kwargs):
90
+ super().__init__(key=key, **kwargs)
91
+ self.pid_field = pid_field
76
92
 
77
93
  class MetadataRelationResult(PIDRelationResult):
78
94
  def _dereference_one(self, relation: LookupResult):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: oarepo-runtime
3
- Version: 1.5.110
3
+ Version: 1.5.112
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -53,6 +53,7 @@ oarepo_runtime/datastreams/readers/yaml.py
53
53
  oarepo_runtime/datastreams/writers/__init__.py
54
54
  oarepo_runtime/datastreams/writers/attachments_file.py
55
55
  oarepo_runtime/datastreams/writers/attachments_service.py
56
+ oarepo_runtime/datastreams/writers/publish.py
56
57
  oarepo_runtime/datastreams/writers/service.py
57
58
  oarepo_runtime/datastreams/writers/utils.py
58
59
  oarepo_runtime/datastreams/writers/validation_errors.py
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = oarepo-runtime
3
- version = 1.5.110
3
+ version = 1.5.112
4
4
  description = A set of runtime extensions of Invenio repository
5
5
  authors = Alzbeta Pokorna
6
6
  readme = README.md