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

Sign up to get free protection for your applications and to get access to all the features.
@@ -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