oarepo-runtime 1.5.73__tar.gz → 1.5.75__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. {oarepo_runtime-1.5.73/oarepo_runtime.egg-info → oarepo_runtime-1.5.75}/PKG-INFO +1 -1
  2. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/utils.py +6 -2
  3. oarepo_runtime-1.5.75/oarepo_runtime/services/records/__init__.py +3 -0
  4. oarepo_runtime-1.5.75/oarepo_runtime/services/records/links.py +21 -0
  5. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/results.py +39 -0
  6. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/validation.py +12 -2
  7. oarepo_runtime-1.5.75/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
  8. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +5 -0
  9. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
  10. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +5 -0
  11. oarepo_runtime-1.5.75/oarepo_runtime/translations/messages.pot +56 -0
  12. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75/oarepo_runtime.egg-info}/PKG-INFO +1 -1
  13. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime.egg-info/SOURCES.txt +2 -1
  14. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime.egg-info/entry_points.txt +3 -0
  15. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/setup.cfg +3 -10
  16. oarepo_runtime-1.5.73/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
  17. oarepo_runtime-1.5.73/oarepo_runtime/translations/jinjax_messages.jinja +0 -0
  18. oarepo_runtime-1.5.73/oarepo_runtime/translations/messages.pot +0 -50
  19. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/LICENSE +0 -0
  20. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/MANIFEST.in +0 -0
  21. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/README.md +0 -0
  22. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/__init__.py +0 -0
  23. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/cli/__init__.py +0 -0
  24. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/cli/assets.py +0 -0
  25. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/cli/base.py +0 -0
  26. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/cli/cf.py +0 -0
  27. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/cli/check.py +0 -0
  28. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/cli/configuration.py +0 -0
  29. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/cli/fixtures.py +0 -0
  30. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/cli/index.py +0 -0
  31. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/cli/validate.py +0 -0
  32. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/__init__.py +0 -0
  33. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/asynchronous.py +0 -0
  34. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/catalogue.py +0 -0
  35. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/datastreams.py +0 -0
  36. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/errors.py +0 -0
  37. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/ext.py +0 -0
  38. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/fixtures.py +0 -0
  39. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/json.py +0 -0
  40. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
  41. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
  42. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/readers/excel.py +0 -0
  43. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/readers/json.py +0 -0
  44. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/readers/service.py +0 -0
  45. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
  46. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
  47. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/synchronous.py +0 -0
  48. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/transformers.py +0 -0
  49. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/types.py +0 -0
  50. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
  51. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
  52. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
  53. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/writers/service.py +0 -0
  54. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/writers/utils.py +0 -0
  55. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
  56. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
  57. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/ext.py +0 -0
  58. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/ext_config.py +0 -0
  59. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/i18n/__init__.py +0 -0
  60. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/info/__init__.py +0 -0
  61. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/info/check.py +0 -0
  62. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/info/views.py +0 -0
  63. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/profile.py +0 -0
  64. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/proxies.py +0 -0
  65. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/__init__.py +0 -0
  66. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/dumpers/__init__.py +0 -0
  67. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
  68. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
  69. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
  70. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
  71. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/owners/__init__.py +0 -0
  72. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/owners/registry.py +0 -0
  73. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/relations/__init__.py +0 -0
  74. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/relations/base.py +0 -0
  75. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/relations/internal.py +0 -0
  76. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/relations/lookup.py +0 -0
  77. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/relations/pid_relation.py +0 -0
  78. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/systemfields/__init__.py +0 -0
  79. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
  80. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
  81. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/systemfields/icu.py +0 -0
  82. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/systemfields/mapping.py +0 -0
  83. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/systemfields/owner.py +0 -0
  84. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/systemfields/record_status.py +0 -0
  85. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/systemfields/selectors.py +0 -0
  86. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/records/systemfields/synthetic.py +0 -0
  87. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/resources/__init__.py +0 -0
  88. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/resources/file_resource.py +0 -0
  89. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/resources/json_serializer.py +0 -0
  90. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
  91. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/__init__.py +0 -0
  92. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/components.py +0 -0
  93. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/config/__init__.py +0 -0
  94. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/config/permissions_presets.py +0 -0
  95. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/config/service.py +0 -0
  96. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
  97. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/custom_fields/mappings.py +0 -0
  98. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/entity/__init__.py +0 -0
  99. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/entity/config.py +0 -0
  100. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/entity/schema.py +0 -0
  101. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/entity/service.py +0 -0
  102. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/expansions/__init__.py +0 -0
  103. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
  104. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/expansions/service.py +0 -0
  105. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/facets/__init__.py +0 -0
  106. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/facets/base.py +0 -0
  107. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/facets/date.py +0 -0
  108. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/facets/enum.py +0 -0
  109. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
  110. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/facets/max_facet.py +0 -0
  111. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/facets/nested_facet.py +0 -0
  112. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/facets/params.py +0 -0
  113. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/facets/year_histogram.py +0 -0
  114. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/files/__init__.py +0 -0
  115. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/files/components.py +0 -0
  116. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/files/service.py +0 -0
  117. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/generators.py +0 -0
  118. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/permissions/__init__.py +0 -0
  119. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/permissions/generators.py +0 -0
  120. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/relations/__init__.py +0 -0
  121. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/relations/components.py +0 -0
  122. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/relations/errors.py +0 -0
  123. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/relations/mapping.py +0 -0
  124. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/__init__.py +0 -0
  125. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/cf.py +0 -0
  126. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/i18n.py +0 -0
  127. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
  128. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
  129. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/marshmallow.py +0 -0
  130. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/marshmallow_to_json_schema.py +0 -0
  131. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/oneofschema.py +0 -0
  132. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/polymorphic.py +0 -0
  133. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/rdm.py +0 -0
  134. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/schema/ui.py +0 -0
  135. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/services/search.py +0 -0
  136. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/tasks.py +0 -0
  137. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/translations/default_translations.py +0 -0
  138. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/uow.py +0 -0
  139. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/utils/__init__.py +0 -0
  140. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/utils/functools.py +0 -0
  141. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime/utils/path.py +0 -0
  142. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
  143. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime.egg-info/requires.txt +0 -0
  144. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/oarepo_runtime.egg-info/top_level.txt +0 -0
  145. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/pyproject.toml +0 -0
  146. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/setup.py +0 -0
  147. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/tests/marshmallow_to_json/__init__.py +0 -0
  148. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/tests/marshmallow_to_json/test_datacite_ui_schema.py +0 -0
  149. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/tests/marshmallow_to_json/test_simple_schema.py +0 -0
  150. {oarepo_runtime-1.5.73 → oarepo_runtime-1.5.75}/tests/pkg_data/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oarepo-runtime
3
- Version: 1.5.73
3
+ Version: 1.5.75
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -15,12 +15,16 @@ def get_record_service_for_record(record):
15
15
  if not record:
16
16
  return None
17
17
  if "OAREPO_PRIMARY_RECORD_SERVICE" in current_app.config:
18
- service_id = current_app.config["OAREPO_PRIMARY_RECORD_SERVICE"][type(record)]
19
- return current_service_registry.get(service_id)
18
+ return get_record_service_for_record_class(type(record))
20
19
  else:
21
20
  return get_record_service_for_record_deprecated(record)
22
21
 
23
22
 
23
+ def get_record_service_for_record_class(record_cls):
24
+ service_id = current_app.config["OAREPO_PRIMARY_RECORD_SERVICE"][record_cls]
25
+ return current_service_registry.get(service_id)
26
+
27
+
24
28
  @deprecated(
25
29
  version="1.5.43", reason="Please recompile model to remove this deprecation warning"
26
30
  )
@@ -0,0 +1,3 @@
1
+ from .links import pagination_links_html
2
+
3
+ __all__ = ("pagination_links_html",)
@@ -0,0 +1,21 @@
1
+ from invenio_records_resources.services.base.links import Link
2
+
3
+ def pagination_links_html(tpl: str)->dict[str, Link]:
4
+ """Create pagination links (prev/selv/next) from the same template."""
5
+ return {
6
+ "prev_html": Link(
7
+ tpl,
8
+ when=lambda pagination, ctx: pagination.has_prev,
9
+ vars=lambda pagination, vars: vars["args"].update(
10
+ {"page": pagination.prev_page.page}
11
+ ),
12
+ ),
13
+ "self_html": Link(tpl),
14
+ "next_html": Link(
15
+ tpl,
16
+ when=lambda pagination, ctx: pagination.has_next,
17
+ vars=lambda pagination, vars: vars["args"].update(
18
+ {"page": pagination.next_page.page}
19
+ ),
20
+ ),
21
+ }
@@ -1,3 +1,4 @@
1
+ from invenio_records_resources.errors import _iter_errors_dict
1
2
  from invenio_records_resources.services.records.results import (
2
3
  RecordItem as BaseRecordItem,
3
4
  )
@@ -30,6 +31,44 @@ class RecordItem(BaseRecordItem):
30
31
  )
31
32
  return _data
32
33
 
34
+ @property
35
+ def errors(self):
36
+ return postprocess_errors(self._errors)
37
+
38
+ def to_dict(self):
39
+ """Get a dictionary for the record."""
40
+ res = self.data
41
+ if self._errors:
42
+ res["errors"] = self.errors
43
+ return res
44
+
45
+
46
+ def postprocess_error_messages(field_path: str, messages: any):
47
+ """Postprocess error messages, looking for those that were not correctly processed by marshmallow/invenio.
48
+
49
+ """
50
+ if not isinstance(messages, list):
51
+ yield {"field": field_path, "messages": messages}
52
+ else:
53
+ str_messages = [ msg for msg in messages if isinstance(msg, str) ]
54
+ non_str_messages = [ msg for msg in messages if not isinstance(msg, str) ]
55
+
56
+ if str_messages:
57
+ yield {"field": field_path, "messages": str_messages}
58
+ else:
59
+ for non_str_msg in non_str_messages:
60
+ yield from _iter_errors_dict(non_str_msg, field_path)
61
+
62
+
63
+ def postprocess_errors(errors: list[dict]):
64
+ """Postprocess errors."""
65
+ converted_errors = []
66
+ for error in errors:
67
+ if error.get("messages"):
68
+ converted_errors.extend(postprocess_error_messages(error["field"], error["messages"]))
69
+ else:
70
+ converted_errors.append(error)
71
+ return converted_errors
33
72
 
34
73
  class RecordList(BaseRecordList):
35
74
  components = []
@@ -6,14 +6,24 @@ from idutils import normalize_pid
6
6
  from marshmallow.exceptions import ValidationError
7
7
  from marshmallow_utils.fields.edtfdatestring import EDTFValidator
8
8
 
9
+ from invenio_i18n import gettext as _
10
+
9
11
 
10
12
  def validate_identifier(value):
11
13
  try:
12
- value["identifier"] = normalize_pid(
14
+ original_identifier = (value["identifier"] or '').strip()
15
+ normalized_identifier = normalize_pid(
13
16
  value["identifier"], value["scheme"].lower()
14
17
  )
18
+ if original_identifier and not normalized_identifier:
19
+ # the normalize_pid library has problems with isbn - does not raise an exception
20
+ # but returns an empty string
21
+ raise ValueError()
22
+ value["identifier"] = normalized_identifier
15
23
  except:
16
- raise ValidationError(f"Invalid {value['scheme']} value {value['identifier']}")
24
+ raise ValidationError({
25
+ "identifier": _("Invalid value %(identifier)s of identifier type %(type)s") % {"identifier": value['identifier'], "type": value['scheme']}
26
+ })
17
27
  return value
18
28
 
19
29
 
@@ -46,3 +46,8 @@ msgstr "Dle názvu"
46
46
  #: oarepo_runtime/services/schema/ui.py:114
47
47
  msgid "False"
48
48
  msgstr "Ne"
49
+
50
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/validation.py:19
51
+ #, python-format
52
+ msgid "Invalid value %(identifier)s of identifier type %(type)s"
53
+ msgstr "%(type)s: Neplatná hodnota '%(identifier)s'"
@@ -45,3 +45,8 @@ msgstr ""
45
45
  #: oarepo_runtime/services/schema/ui.py:114
46
46
  msgid "False"
47
47
  msgstr ""
48
+
49
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/validation.py:19
50
+ #, python-format
51
+ msgid "Invalid value %(identifier)s of identifier type %(type)s"
52
+ msgstr ""
@@ -0,0 +1,56 @@
1
+ # Translations template for PROJECT.
2
+ # Copyright (C) 2024 ORGANIZATION
3
+ # This file is distributed under the same license as the PROJECT project.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: PROJECT VERSION\n"
10
+ "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11
+ "POT-Creation-Date: 2024-11-28 10:16+0100\n"
12
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+ "Language-Team: LANGUAGE <LL@li.org>\n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=utf-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Generated-By: Babel 2.15.0\n"
19
+
20
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:60
21
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:146
22
+ msgid "By Title"
23
+ msgstr ""
24
+
25
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:64
26
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:5
27
+ msgid "Best match"
28
+ msgstr ""
29
+
30
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:68
31
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:3
32
+ msgid "Newest"
33
+ msgstr ""
34
+
35
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/search.py:72
36
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:4
37
+ msgid "Oldest"
38
+ msgstr ""
39
+
40
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:123
41
+ msgid "True"
42
+ msgstr ""
43
+
44
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:123
45
+ msgid "False"
46
+ msgstr ""
47
+
48
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/validation.py:19
49
+ #, python-format
50
+ msgid "Invalid value %(identifier)s of identifier type %(type)s"
51
+ msgstr ""
52
+
53
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/translations/default_translations.py:6
54
+ msgid "Contact"
55
+ msgstr ""
56
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oarepo-runtime
3
- Version: 1.5.73
3
+ Version: 1.5.75
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -113,6 +113,8 @@ oarepo_runtime/services/files/components.py
113
113
  oarepo_runtime/services/files/service.py
114
114
  oarepo_runtime/services/permissions/__init__.py
115
115
  oarepo_runtime/services/permissions/generators.py
116
+ oarepo_runtime/services/records/__init__.py
117
+ oarepo_runtime/services/records/links.py
116
118
  oarepo_runtime/services/relations/__init__.py
117
119
  oarepo_runtime/services/relations/components.py
118
120
  oarepo_runtime/services/relations/errors.py
@@ -130,7 +132,6 @@ oarepo_runtime/services/schema/rdm.py
130
132
  oarepo_runtime/services/schema/ui.py
131
133
  oarepo_runtime/services/schema/validation.py
132
134
  oarepo_runtime/translations/default_translations.py
133
- oarepo_runtime/translations/jinjax_messages.jinja
134
135
  oarepo_runtime/translations/messages.pot
135
136
  oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo
136
137
  oarepo_runtime/translations/cs/LC_MESSAGES/messages.po
@@ -11,3 +11,6 @@ oarepo_runtime_info = oarepo_runtime.info.views:create_wellknown_blueprint
11
11
  [invenio_celery.tasks]
12
12
  oarepo_runtime_check = oarepo_runtime.tasks
13
13
  oarepo_runtime_datastreams = oarepo_runtime.datastreams
14
+
15
+ [invenio_i18n.translations]
16
+ oarepo_runtime = oarepo_runtime
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = oarepo-runtime
3
- version = 1.5.73
3
+ version = 1.5.75
4
4
  description = A set of runtime extensions of Invenio repository
5
5
  authors = Alzbeta Pokorna
6
6
  readme = README.md
@@ -54,15 +54,8 @@ invenio_celery.tasks =
54
54
  invenio_base.blueprints =
55
55
  oarepo_runtime_info = oarepo_runtime.info.views:create_wellknown_blueprint
56
56
  oarepo_runtime_check = oarepo_runtime.info.check:blueprint
57
-
58
- [oarepo.i18n]
59
- languages =
60
- cs
61
- en
62
- babel_source_paths =
63
- oarepo_runtime
64
- babel_output_translations =
65
- oarepo_runtime/translations
57
+ invenio_i18n.translations =
58
+ oarepo_runtime = oarepo_runtime
66
59
 
67
60
  [egg_info]
68
61
  tag_build =
@@ -1,50 +0,0 @@
1
- # Translations template for PROJECT.
2
- # Copyright (C) 2023 ORGANIZATION
3
- # This file is distributed under the same license as the PROJECT project.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
5
- #
6
- #, fuzzy
7
- msgid ""
8
- msgstr ""
9
- "Project-Id-Version: PROJECT VERSION\n"
10
- "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11
- "POT-Creation-Date: 2023-11-21 14:39+0100\n"
12
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
- "Language-Team: LANGUAGE <LL@li.org>\n"
15
- "MIME-Version: 1.0\n"
16
- "Content-Type: text/plain; charset=utf-8\n"
17
- "Content-Transfer-Encoding: 8bit\n"
18
- "Generated-By: Babel 2.13.1\n"
19
-
20
- #: oarepo_runtime/services/search.py:39 oarepo_runtime/services/search.py:127
21
- msgid "By Title"
22
- msgstr ""
23
-
24
- #: oarepo_runtime/services/search.py:43
25
- #: oarepo_runtime/translations/default_translations.py:5
26
- msgid "Best match"
27
- msgstr ""
28
-
29
- #: oarepo_runtime/services/search.py:47
30
- #: oarepo_runtime/translations/default_translations.py:3
31
- msgid "Newest"
32
- msgstr ""
33
-
34
- #: oarepo_runtime/services/search.py:51
35
- #: oarepo_runtime/translations/default_translations.py:4
36
- msgid "Oldest"
37
- msgstr ""
38
-
39
- #: oarepo_runtime/services/schema/ui.py:114
40
- msgid "True"
41
- msgstr ""
42
-
43
- #: oarepo_runtime/services/schema/ui.py:114
44
- msgid "False"
45
- msgstr ""
46
-
47
- #: oarepo_runtime/translations/default_translations.py:6
48
- msgid "Contact"
49
- msgstr ""
50
-
File without changes