invenio-banners 3.0.1__tar.gz → 3.0.2__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.

Potentially problematic release.


This version of invenio-banners might be problematic. Click here for more details.

Files changed (123) hide show
  1. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/CHANGES.rst +4 -0
  2. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/PKG-INFO +5 -1
  3. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/__init__.py +1 -1
  4. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/administration/banners.py +2 -1
  5. invenio-banners-3.0.2/invenio_banners/resources/errors.py +41 -0
  6. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/services/schemas.py +11 -2
  7. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/services/service.py +1 -1
  8. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners.egg-info/PKG-INFO +5 -1
  9. invenio-banners-3.0.1/invenio_banners/resources/errors.py +0 -25
  10. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/.dockerignore +0 -0
  11. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/.editorconfig +0 -0
  12. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/.git-blame-ignore-revs +0 -0
  13. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/.github/workflows/i18n-pull.yml +0 -0
  14. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/.github/workflows/i18n-push.yml +0 -0
  15. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/.github/workflows/pypi-publish.yml +0 -0
  16. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/.github/workflows/tests.yml +0 -0
  17. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/.tx/config +0 -0
  18. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/AUTHORS.rst +0 -0
  19. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/CONTRIBUTING.rst +0 -0
  20. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/INSTALL.rst +0 -0
  21. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/LICENSE +0 -0
  22. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/MANIFEST.in +0 -0
  23. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/README.rst +0 -0
  24. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/babel.ini +0 -0
  25. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/Makefile +0 -0
  26. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/api.rst +0 -0
  27. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/authors.rst +0 -0
  28. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/changes.rst +0 -0
  29. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/conf.py +0 -0
  30. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/configuration.rst +0 -0
  31. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/contributing.rst +0 -0
  32. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/index.rst +0 -0
  33. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/installation.rst +0 -0
  34. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/license.rst +0 -0
  35. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/make.bat +0 -0
  36. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/requirements.txt +0 -0
  37. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/docs/usage.rst +0 -0
  38. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/administration/__init__.py +0 -0
  39. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/alembic/5e02314da32e_create_invenio_banners_db_table.py +0 -0
  40. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/alembic/e40d93d99040_create_invenio_banners_branch.py +0 -0
  41. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/config.py +0 -0
  42. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/ext.py +0 -0
  43. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/proxies.py +0 -0
  44. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/records/__init__.py +0 -0
  45. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/records/models.py +0 -0
  46. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/resources/__init__.py +0 -0
  47. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/resources/config.py +0 -0
  48. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/resources/resource.py +0 -0
  49. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/services/__init__.py +0 -0
  50. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/services/config.py +0 -0
  51. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/services/errors.py +0 -0
  52. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/services/permissions.py +0 -0
  53. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/services/results.py +0 -0
  54. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/templates/semantic-ui/invenio_banners/banner.html +0 -0
  55. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/af/LC_MESSAGES/messages.po +0 -0
  56. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/ar/LC_MESSAGES/messages.po +0 -0
  57. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/bg/LC_MESSAGES/messages.po +0 -0
  58. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/ca/LC_MESSAGES/messages.po +0 -0
  59. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/cs/LC_MESSAGES/messages.po +0 -0
  60. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/da/LC_MESSAGES/messages.po +0 -0
  61. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/de/LC_MESSAGES/messages.po +0 -0
  62. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/de_AT/LC_MESSAGES/messages.po +0 -0
  63. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/de_DE/LC_MESSAGES/messages.po +0 -0
  64. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/el/LC_MESSAGES/messages.po +0 -0
  65. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/en_AT/LC_MESSAGES/messages.po +0 -0
  66. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/en_HU/LC_MESSAGES/messages.po +0 -0
  67. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/es/LC_MESSAGES/messages.po +0 -0
  68. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/es_CU/LC_MESSAGES/messages.po +0 -0
  69. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/es_MX/LC_MESSAGES/messages.po +0 -0
  70. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/et/LC_MESSAGES/messages.po +0 -0
  71. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/et_EE/LC_MESSAGES/messages.po +0 -0
  72. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/fa/LC_MESSAGES/messages.po +0 -0
  73. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/fa_IR/LC_MESSAGES/messages.po +0 -0
  74. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/fr/LC_MESSAGES/messages.po +0 -0
  75. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/fr_CI/LC_MESSAGES/messages.po +0 -0
  76. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/fr_FR/LC_MESSAGES/messages.po +0 -0
  77. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/gl/LC_MESSAGES/messages.po +0 -0
  78. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/hi_IN/LC_MESSAGES/messages.po +0 -0
  79. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/hr/LC_MESSAGES/messages.po +0 -0
  80. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/hu/LC_MESSAGES/messages.po +0 -0
  81. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/hu_HU/LC_MESSAGES/messages.po +0 -0
  82. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/it/LC_MESSAGES/messages.po +0 -0
  83. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/ja/LC_MESSAGES/messages.po +0 -0
  84. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/ka/LC_MESSAGES/messages.po +0 -0
  85. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/lt/LC_MESSAGES/messages.po +0 -0
  86. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/messages.pot +0 -0
  87. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/ne/LC_MESSAGES/messages.po +0 -0
  88. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/no/LC_MESSAGES/messages.po +0 -0
  89. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/pl/LC_MESSAGES/messages.po +0 -0
  90. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/pt/LC_MESSAGES/messages.po +0 -0
  91. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/ro/LC_MESSAGES/messages.po +0 -0
  92. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/ru/LC_MESSAGES/messages.po +0 -0
  93. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/rw/LC_MESSAGES/messages.po +0 -0
  94. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/sk/LC_MESSAGES/messages.po +0 -0
  95. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/sv/LC_MESSAGES/messages.po +0 -0
  96. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/sv_SE/LC_MESSAGES/messages.po +0 -0
  97. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/tr/LC_MESSAGES/messages.po +0 -0
  98. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/uk/LC_MESSAGES/messages.po +0 -0
  99. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/uk_UA/LC_MESSAGES/messages.po +0 -0
  100. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/zh_CN/LC_MESSAGES/messages.po +0 -0
  101. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/translations/zh_TW/LC_MESSAGES/messages.po +0 -0
  102. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/utils.py +0 -0
  103. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners/views.py +0 -0
  104. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners.egg-info/SOURCES.txt +0 -0
  105. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners.egg-info/dependency_links.txt +0 -0
  106. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners.egg-info/entry_points.txt +0 -0
  107. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners.egg-info/not-zip-safe +0 -0
  108. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners.egg-info/requires.txt +0 -0
  109. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/invenio_banners.egg-info/top_level.txt +0 -0
  110. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/pyproject.toml +0 -0
  111. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/requirements-devel.txt +0 -0
  112. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/run-tests.sh +0 -0
  113. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/setup.cfg +0 -0
  114. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/setup.py +0 -0
  115. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/tests/conftest.py +0 -0
  116. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/tests/records/test_disable.py +0 -0
  117. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/tests/records/test_models.py +0 -0
  118. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/tests/resources/conftest.py +0 -0
  119. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/tests/resources/test_resources.py +0 -0
  120. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/tests/services/conftest.py +0 -0
  121. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/tests/services/test_services.py +0 -0
  122. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/tests/test_invenio_banners.py +0 -0
  123. {invenio-banners-3.0.1 → invenio-banners-3.0.2}/tests/test_macro.py +0 -0
@@ -7,6 +7,10 @@
7
7
  Changes
8
8
  =======
9
9
 
10
+ Version 3.0.2 (released 2024-07-17)
11
+
12
+ - errors: implement REST validation error for banner loader
13
+
10
14
  Version 3.0.1 (released 2024-02-21)
11
15
 
12
16
  - Moved admin menu item for banners to site administration category
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: invenio-banners
3
- Version: 3.0.1
3
+ Version: 3.0.2
4
4
  Summary: Invenio-Banners is a module used to create and show banners with useful messages to users.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-banners
6
6
  Author: CERN
@@ -45,6 +45,10 @@ Description: ..
45
45
  Changes
46
46
  =======
47
47
 
48
+ Version 3.0.2 (released 2024-07-17)
49
+
50
+ - errors: implement REST validation error for banner loader
51
+
48
52
  Version 3.0.1 (released 2024-02-21)
49
53
 
50
54
  - Moved admin menu item for banners to site administration category
@@ -9,6 +9,6 @@
9
9
 
10
10
  from .ext import InvenioBanners
11
11
 
12
- __version__ = "3.0.1"
12
+ __version__ = "3.0.2"
13
13
 
14
14
  __all__ = ("__version__", "InvenioBanners")
@@ -117,6 +117,7 @@ class BannerEditView(AdminResourceEditView):
117
117
  {"title_l10n": "Warning", "id": "warning"},
118
118
  {"title_l10n": "Other", "id": "other"},
119
119
  ],
120
+ "placeholder": "Select a category",
120
121
  },
121
122
  "active": {
122
123
  "order": 6,
@@ -200,7 +201,7 @@ class BannerCreateView(AdminResourceCreateView):
200
201
  {"title_l10n": "Warning", "id": "warning"},
201
202
  {"title_l10n": "Other", "id": "other"},
202
203
  ],
203
- "placeholder": "Info",
204
+ "placeholder": "Select a category",
204
205
  },
205
206
  "active": {
206
207
  "order": 6,
@@ -0,0 +1,41 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2023 CERN.
4
+ #
5
+ # Invenio-Banners is free software; you can redistribute it and/or modify it
6
+ # under the terms of the MIT License; see LICENSE file for more details.
7
+
8
+ """Errors."""
9
+
10
+ from flask_resources import HTTPJSONException, create_error_handler
11
+
12
+ from ..services.errors import BannerNotExistsError
13
+ import marshmallow as ma
14
+ from flask_resources import HTTPJSONException, create_error_handler
15
+ from invenio_records_resources.errors import validation_error_to_list_errors
16
+
17
+
18
+ class HTTPJSONValidationException(HTTPJSONException):
19
+ """HTTP exception serializing to JSON and reflecting Marshmallow errors."""
20
+
21
+ description = "A validation error occurred."
22
+
23
+ def __init__(self, exception):
24
+ """Constructor."""
25
+ super().__init__(code=400, errors=validation_error_to_list_errors(exception))
26
+
27
+
28
+ class ErrorHandlersMixin():
29
+ """Mixin to define error handlers."""
30
+
31
+ error_handlers = {
32
+ BannerNotExistsError: create_error_handler(
33
+ lambda e: HTTPJSONException(
34
+ code=404,
35
+ description=e.description,
36
+ )
37
+ ),
38
+ ma.ValidationError: create_error_handler(
39
+ lambda e: HTTPJSONValidationException(e)
40
+ ),
41
+ }
@@ -10,7 +10,7 @@
10
10
  from datetime import datetime, timezone
11
11
 
12
12
  from invenio_records_resources.services.records.schema import BaseRecordSchema
13
- from marshmallow import fields
13
+ from marshmallow import fields, pre_load
14
14
  from marshmallow_utils.fields import TZDateTime
15
15
 
16
16
 
@@ -19,7 +19,7 @@ class BannerSchema(BaseRecordSchema):
19
19
 
20
20
  message = fields.String(required=True)
21
21
  url_path = fields.String(allow_none=True)
22
- category = fields.String(required=True)
22
+ category = fields.String(required=True, metadata={"default": "info"})
23
23
  start_datetime = fields.DateTime(
24
24
  required=True,
25
25
  metadata={"default": datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")},
@@ -28,3 +28,12 @@ class BannerSchema(BaseRecordSchema):
28
28
  active = fields.Boolean(required=True, metadata={"default": True})
29
29
  created = TZDateTime(timezone=timezone.utc, format="iso", dump_only=True)
30
30
  updated = TZDateTime(timezone=timezone.utc, format="iso", dump_only=True)
31
+
32
+ @pre_load
33
+ def change_none_to_string(self, data, **kwargs):
34
+ """Fix for empty strings not in line with allow_none=True."""
35
+ for field in data:
36
+ if field == "end_datetime" or field == "category":
37
+ if data[field] == "":
38
+ data[field] = None
39
+ return data
@@ -89,7 +89,7 @@ class BannerService(RecordService):
89
89
  valid_data, errors = self.schema.load(
90
90
  data,
91
91
  context={"identity": identity},
92
- raise_errors=False,
92
+ raise_errors=raise_errors,
93
93
  )
94
94
 
95
95
  # create the banner with the specified data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: invenio-banners
3
- Version: 3.0.1
3
+ Version: 3.0.2
4
4
  Summary: Invenio-Banners is a module used to create and show banners with useful messages to users.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-banners
6
6
  Author: CERN
@@ -45,6 +45,10 @@ Description: ..
45
45
  Changes
46
46
  =======
47
47
 
48
+ Version 3.0.2 (released 2024-07-17)
49
+
50
+ - errors: implement REST validation error for banner loader
51
+
48
52
  Version 3.0.1 (released 2024-02-21)
49
53
 
50
54
  - Moved admin menu item for banners to site administration category
@@ -1,25 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2023 CERN.
4
- #
5
- # Invenio-Banners is free software; you can redistribute it and/or modify it
6
- # under the terms of the MIT License; see LICENSE file for more details.
7
-
8
- """Errors."""
9
-
10
- from flask_resources import HTTPJSONException, create_error_handler
11
-
12
- from ..services.errors import BannerNotExistsError
13
-
14
-
15
- class ErrorHandlersMixin:
16
- """Mixin to define error handlers."""
17
-
18
- error_handlers = {
19
- BannerNotExistsError: create_error_handler(
20
- lambda e: HTTPJSONException(
21
- code=404,
22
- description=e.description,
23
- )
24
- ),
25
- }
File without changes