oarepo-runtime 1.5.73__py3-none-any.whl → 1.5.74__py3-none-any.whl

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.
@@ -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 ""
@@ -1,50 +1,56 @@
1
1
  # Translations template for PROJECT.
2
- # Copyright (C) 2023 ORGANIZATION
2
+ # Copyright (C) 2024 ORGANIZATION
3
3
  # This file is distributed under the same license as the PROJECT project.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
5
5
  #
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
9
  "Project-Id-Version: PROJECT VERSION\n"
10
10
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11
- "POT-Creation-Date: 2023-11-21 14:39+0100\n"
11
+ "POT-Creation-Date: 2024-11-28 10:16+0100\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
15
  "MIME-Version: 1.0\n"
16
16
  "Content-Type: text/plain; charset=utf-8\n"
17
17
  "Content-Transfer-Encoding: 8bit\n"
18
- "Generated-By: Babel 2.13.1\n"
18
+ "Generated-By: Babel 2.15.0\n"
19
19
 
20
- #: oarepo_runtime/services/search.py:39 oarepo_runtime/services/search.py:127
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
21
22
  msgid "By Title"
22
23
  msgstr ""
23
24
 
24
- #: oarepo_runtime/services/search.py:43
25
- #: oarepo_runtime/translations/default_translations.py:5
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
26
27
  msgid "Best match"
27
28
  msgstr ""
28
29
 
29
- #: oarepo_runtime/services/search.py:47
30
- #: oarepo_runtime/translations/default_translations.py:3
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
31
32
  msgid "Newest"
32
33
  msgstr ""
33
34
 
34
- #: oarepo_runtime/services/search.py:51
35
- #: oarepo_runtime/translations/default_translations.py:4
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
36
37
  msgid "Oldest"
37
38
  msgstr ""
38
39
 
39
- #: oarepo_runtime/services/schema/ui.py:114
40
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:123
40
41
  msgid "True"
41
42
  msgstr ""
42
43
 
43
- #: oarepo_runtime/services/schema/ui.py:114
44
+ #: /Users/m/w/cesnet/oarepo-runtime/oarepo_runtime/services/schema/ui.py:123
44
45
  msgid "False"
45
46
  msgstr ""
46
47
 
47
- #: oarepo_runtime/translations/default_translations.py:6
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
48
54
  msgid "Contact"
49
55
  msgstr ""
50
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.74
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -73,7 +73,7 @@ oarepo_runtime/resources/localized_ui_json_serializer.py,sha256=3V9cJaG_e1PMXKVX
73
73
  oarepo_runtime/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  oarepo_runtime/services/components.py,sha256=k--zu1RinwoKzg5qHp4H-Ddp9AFyjMJ97fydQ0DvI-A,4238
75
75
  oarepo_runtime/services/generators.py,sha256=j87HitHA_w2awsz0C5IAAJ0qjg9JMtvdO3dvh6FQyfg,250
76
- oarepo_runtime/services/results.py,sha256=_Din6CxQH7E5TP0TVZjIXJb2vyJRL_o_97jkUQo-GOc,4062
76
+ oarepo_runtime/services/results.py,sha256=HVBEPAMFwwCJDqBhaP3t3ekH1CpNDtE6ovVNKgWxuw8,5409
77
77
  oarepo_runtime/services/search.py,sha256=9xGTN5Yg6eTdptQ9qjO_umbacf9ooMuHYGXWYfla4-M,6227
78
78
  oarepo_runtime/services/config/__init__.py,sha256=dtlD84pJ6xI77UF22IPrCOt7tHD3g5DAEDApUdjDVFE,406
79
79
  oarepo_runtime/services/config/permissions_presets.py,sha256=zApeA-2DYAlD--SzVz3vq_OFjq48Ko0pe08e4o2vxr4,6114
@@ -116,14 +116,13 @@ oarepo_runtime/services/schema/oneofschema.py,sha256=GnWH4Or_G5M0NgSmCoqMI6PBrJg
116
116
  oarepo_runtime/services/schema/polymorphic.py,sha256=bAbUoTIeDBiJPYPhpLEKKZekEdkHlpqkmNxk1hN3PDw,564
117
117
  oarepo_runtime/services/schema/rdm.py,sha256=XQ5p72Q_WVRTQkFeJvDiave8F5YSXU05IduTuYFO4gA,574
118
118
  oarepo_runtime/services/schema/ui.py,sha256=xQgW-zLyZoHldGw47uVtXQj-5LexVNKTholyq4MiBZo,3777
119
- oarepo_runtime/services/schema/validation.py,sha256=uIDJ0Phh62tDE0Mme-7Z3R_2TZY7k0MwjB3hrn5be_g,1356
119
+ oarepo_runtime/services/schema/validation.py,sha256=g2lpFwgQygWdLgq5bRvLAjVqXVOJpfVJ7umDp5xEGRU,1849
120
120
  oarepo_runtime/translations/default_translations.py,sha256=060GBlA1ghWxfeumo6NqxCCZDb-6OezOuF6pr-_GEOQ,104
121
- oarepo_runtime/translations/jinjax_messages.jinja,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
- oarepo_runtime/translations/messages.pot,sha256=QvwHdrmqwaYpZIsnVTEmsk7MnG8J2Sy32_8aGFyfz_o,1303
123
- oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo,sha256=DtC7lBIWsacoe_chzIVlPYBCNutlXpO5O8bz3NFT4LU,683
124
- oarepo_runtime/translations/cs/LC_MESSAGES/messages.po,sha256=vGZQo5NlTtj_qsJuDwJqI1kAkcyOM4m7UNWiVpgkmxo,1287
125
- oarepo_runtime/translations/en/LC_MESSAGES/messages.mo,sha256=FKAl1wlg2NhtQ1-9U2dkUwcotR959j5GuUKJygCYpwI,445
126
- oarepo_runtime/translations/en/LC_MESSAGES/messages.po,sha256=rZ2PGvkcJbmuwrWeFX5edk0zJIzZnL83M9HSAceDP_U,1193
121
+ oarepo_runtime/translations/messages.pot,sha256=jyC7mRH5P9uwVVqz9ycvn-T8gcohr62x__O0sC6g2w4,1846
122
+ oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo,sha256=cSTRnVoi8DxfrXD-ImHYUmxdnNQMnxIn2yFRTObwRzI,801
123
+ oarepo_runtime/translations/cs/LC_MESSAGES/messages.po,sha256=bzO7bZlnifHU0E7khXePmP12lGmzYXudjAWVDb87KrE,1508
124
+ oarepo_runtime/translations/en/LC_MESSAGES/messages.mo,sha256=b4cLKr5VojJPSuCeQ9T1lJKYMM_o80IgiNNL-iQUL8E,445
125
+ oarepo_runtime/translations/en/LC_MESSAGES/messages.po,sha256=akMJzNcvoZmF9j06Cd_oyQX-tMOfYjG1yRAP7tNDhGA,1370
127
126
  oarepo_runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
127
  oarepo_runtime/utils/functools.py,sha256=gKS9YZtlIYcDvdNA9cmYO00yjiXBYV1jg8VpcRUyQyg,1324
129
128
  oarepo_runtime/utils/path.py,sha256=V1NVyk3m12_YLbj7QHYvUpE1wScO78bYsX1LOLeXDkI,3108
@@ -131,9 +130,9 @@ tests/marshmallow_to_json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
131
130
  tests/marshmallow_to_json/test_datacite_ui_schema.py,sha256=82iLj8nW45lZOUewpWbLX3mpSkpa9lxo-vK-Qtv_1bU,48552
132
131
  tests/marshmallow_to_json/test_simple_schema.py,sha256=izZN9p0v6kovtSZ6AdxBYmK_c6ZOti2_z_wPT_zXIr0,1500
133
132
  tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
- oarepo_runtime-1.5.73.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
135
- oarepo_runtime-1.5.73.dist-info/METADATA,sha256=8Bid-R0AnVSDDv-EI6lCJbtTANbDTy8wDGYN60nsWY0,4720
136
- oarepo_runtime-1.5.73.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
137
- oarepo_runtime-1.5.73.dist-info/entry_points.txt,sha256=0cschM0RHc6UJ1uudhu4EP0hrVStPGpgMO-XEDGRtY4,430
138
- oarepo_runtime-1.5.73.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
139
- oarepo_runtime-1.5.73.dist-info/RECORD,,
133
+ oarepo_runtime-1.5.74.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
134
+ oarepo_runtime-1.5.74.dist-info/METADATA,sha256=GHmgrkCfquYWIKwTRibqKKAOZUAD6FIfgOstHCJLFi0,4720
135
+ oarepo_runtime-1.5.74.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
136
+ oarepo_runtime-1.5.74.dist-info/entry_points.txt,sha256=k7O5LZUOGsVeSpB7ulU0txBUNp1CVQG7Q7TJIVTPbzU,491
137
+ oarepo_runtime-1.5.74.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
138
+ oarepo_runtime-1.5.74.dist-info/RECORD,,
@@ -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
File without changes