csu 2.6.0__tar.gz → 2.6.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.
Files changed (108) hide show
  1. {csu-2.6.0 → csu-2.6.2}/.bumpversion.cfg +1 -1
  2. {csu-2.6.0 → csu-2.6.2}/.cookiecutterrc +1 -1
  3. {csu-2.6.0 → csu-2.6.2}/PKG-INFO +3 -3
  4. {csu-2.6.0 → csu-2.6.2}/README.rst +2 -2
  5. {csu-2.6.0 → csu-2.6.2}/pyproject.toml +1 -1
  6. {csu-2.6.0 → csu-2.6.2}/src/csu/__init__.py +1 -1
  7. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/serializers.py +10 -5
  8. {csu-2.6.0 → csu-2.6.2}/src/csu/models.py +1 -5
  9. {csu-2.6.0 → csu-2.6.2}/src/csu.egg-info/PKG-INFO +3 -3
  10. {csu-2.6.0 → csu-2.6.2}/.coveragerc +0 -0
  11. {csu-2.6.0 → csu-2.6.2}/.editorconfig +0 -0
  12. {csu-2.6.0 → csu-2.6.2}/.github/workflows/github-actions.yml +0 -0
  13. {csu-2.6.0 → csu-2.6.2}/.pre-commit-config.yaml +0 -0
  14. {csu-2.6.0 → csu-2.6.2}/.tombi.toml +0 -0
  15. {csu-2.6.0 → csu-2.6.2}/AUTHORS.rst +0 -0
  16. {csu-2.6.0 → csu-2.6.2}/CHANGELOG.rst +0 -0
  17. {csu-2.6.0 → csu-2.6.2}/CONTRIBUTING.rst +0 -0
  18. {csu-2.6.0 → csu-2.6.2}/LICENSE +0 -0
  19. {csu-2.6.0 → csu-2.6.2}/MANIFEST.in +0 -0
  20. {csu-2.6.0 → csu-2.6.2}/ci/bootstrap.py +0 -0
  21. {csu-2.6.0 → csu-2.6.2}/ci/requirements.txt +0 -0
  22. {csu-2.6.0 → csu-2.6.2}/ci/templates/.github/workflows/github-actions.yml +0 -0
  23. {csu-2.6.0 → csu-2.6.2}/pytest.ini +0 -0
  24. {csu-2.6.0 → csu-2.6.2}/setup.cfg +0 -0
  25. {csu-2.6.0 → csu-2.6.2}/src/csu/admin.py +0 -0
  26. {csu-2.6.0 → csu-2.6.2}/src/csu/conf.py +0 -0
  27. {csu-2.6.0 → csu-2.6.2}/src/csu/consts.py +0 -0
  28. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/__init__.py +0 -0
  29. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/auth.py +0 -0
  30. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/fields.py +0 -0
  31. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/forms.py +0 -0
  32. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/perms.py +0 -0
  33. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/phonenumber.py +0 -0
  34. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/test_auth.py +0 -0
  35. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/test_fields.py +0 -0
  36. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/test_forms.py +0 -0
  37. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/test_phonenumber.py +0 -0
  38. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/test_serializers.py +0 -0
  39. {csu-2.6.0 → csu-2.6.2}/src/csu/drf/views.py +0 -0
  40. {csu-2.6.0 → csu-2.6.2}/src/csu/enums.py +0 -0
  41. {csu-2.6.0 → csu-2.6.2}/src/csu/env.py +0 -0
  42. {csu-2.6.0 → csu-2.6.2}/src/csu/exceptions.py +0 -0
  43. {csu-2.6.0 → csu-2.6.2}/src/csu/export.py +0 -0
  44. {csu-2.6.0 → csu-2.6.2}/src/csu/fixups.py +0 -0
  45. {csu-2.6.0 → csu-2.6.2}/src/csu/forms/__init__.py +0 -0
  46. {csu-2.6.0 → csu-2.6.2}/src/csu/forms/crispy.py +0 -0
  47. {csu-2.6.0 → csu-2.6.2}/src/csu/forms/fields.py +0 -0
  48. {csu-2.6.0 → csu-2.6.2}/src/csu/gettext.py +0 -0
  49. {csu-2.6.0 → csu-2.6.2}/src/csu/gettext_lazy.py +0 -0
  50. {csu-2.6.0 → csu-2.6.2}/src/csu/locale/ro/LC_MESSAGES/django.mo +0 -0
  51. {csu-2.6.0 → csu-2.6.2}/src/csu/locale/ro/LC_MESSAGES/django.po +0 -0
  52. {csu-2.6.0 → csu-2.6.2}/src/csu/logging.py +0 -0
  53. {csu-2.6.0 → csu-2.6.2}/src/csu/management.py +0 -0
  54. {csu-2.6.0 → csu-2.6.2}/src/csu/query.py +0 -0
  55. {csu-2.6.0 → csu-2.6.2}/src/csu/routers.py +0 -0
  56. {csu-2.6.0 → csu-2.6.2}/src/csu/service.py +0 -0
  57. {csu-2.6.0 → csu-2.6.2}/src/csu/templates/api_exception.html +0 -0
  58. {csu-2.6.0 → csu-2.6.2}/src/csu/templates/forms/widgets/opaquewidget.html +0 -0
  59. {csu-2.6.0 → csu-2.6.2}/src/csu/test_consts.py +0 -0
  60. {csu-2.6.0 → csu-2.6.2}/src/csu/test_env.py +0 -0
  61. {csu-2.6.0 → csu-2.6.2}/src/csu/test_exceptions.py +0 -0
  62. {csu-2.6.0 → csu-2.6.2}/src/csu/test_management.py +0 -0
  63. {csu-2.6.0 → csu-2.6.2}/src/csu/test_service.py +0 -0
  64. {csu-2.6.0 → csu-2.6.2}/src/csu/test_timezones.py +0 -0
  65. {csu-2.6.0 → csu-2.6.2}/src/csu/test_utils.py +0 -0
  66. {csu-2.6.0 → csu-2.6.2}/src/csu/test_xml.py +0 -0
  67. {csu-2.6.0 → csu-2.6.2}/src/csu/timezones.py +0 -0
  68. {csu-2.6.0 → csu-2.6.2}/src/csu/utils.py +0 -0
  69. {csu-2.6.0 → csu-2.6.2}/src/csu/views.py +0 -0
  70. {csu-2.6.0 → csu-2.6.2}/src/csu/worker/__init__.py +0 -0
  71. {csu-2.6.0 → csu-2.6.2}/src/csu/worker/admin.py +0 -0
  72. {csu-2.6.0 → csu-2.6.2}/src/csu/worker/asgi.py +0 -0
  73. {csu-2.6.0 → csu-2.6.2}/src/csu/worker/engine.py +0 -0
  74. {csu-2.6.0 → csu-2.6.2}/src/csu/worker/enums.py +0 -0
  75. {csu-2.6.0 → csu-2.6.2}/src/csu/worker/job.py +0 -0
  76. {csu-2.6.0 → csu-2.6.2}/src/csu/worker/models.py +0 -0
  77. {csu-2.6.0 → csu-2.6.2}/src/csu/worker/registry.py +0 -0
  78. {csu-2.6.0 → csu-2.6.2}/src/csu/wsgi.py +0 -0
  79. {csu-2.6.0 → csu-2.6.2}/src/csu/xml.py +0 -0
  80. {csu-2.6.0 → csu-2.6.2}/src/csu.egg-info/SOURCES.txt +0 -0
  81. {csu-2.6.0 → csu-2.6.2}/src/csu.egg-info/dependency_links.txt +0 -0
  82. {csu-2.6.0 → csu-2.6.2}/src/csu.egg-info/requires.txt +0 -0
  83. {csu-2.6.0 → csu-2.6.2}/src/csu.egg-info/top_level.txt +0 -0
  84. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service/test_custom_context.yaml +0 -0
  85. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service/test_custom_context_0_retries.yaml +0 -0
  86. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service/test_decoding.yaml +0 -0
  87. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service/test_error.yaml +0 -0
  88. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service/test_logging.yaml +0 -0
  89. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service/test_redirects.yaml +0 -0
  90. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service_auth/test_async.yaml +0 -0
  91. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service_auth/test_async_auth.yaml +0 -0
  92. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service_auth/test_sync.yaml +0 -0
  93. {csu-2.6.0 → csu-2.6.2}/tests/cassettes/test_service_auth/test_sync_auth.yaml +0 -0
  94. {csu-2.6.0 → csu-2.6.2}/tests/conftest.py +0 -0
  95. {csu-2.6.0 → csu-2.6.2}/tests/exampleworker.py +0 -0
  96. {csu-2.6.0 → csu-2.6.2}/tests/test_exampleworker.py +0 -0
  97. {csu-2.6.0 → csu-2.6.2}/tests/test_logging.py +0 -0
  98. {csu-2.6.0 → csu-2.6.2}/tests/test_models.py +0 -0
  99. {csu-2.6.0 → csu-2.6.2}/tests/test_service.py +0 -0
  100. {csu-2.6.0 → csu-2.6.2}/tests/test_service_auth.py +0 -0
  101. {csu-2.6.0 → csu-2.6.2}/tests/test_views.py +0 -0
  102. {csu-2.6.0 → csu-2.6.2}/tests/test_worker.py +0 -0
  103. {csu-2.6.0 → csu-2.6.2}/tests/testproject/__init__.py +0 -0
  104. {csu-2.6.0 → csu-2.6.2}/tests/testproject/fixtures/testuser.json +0 -0
  105. {csu-2.6.0 → csu-2.6.2}/tests/testproject/models.py +0 -0
  106. {csu-2.6.0 → csu-2.6.2}/tests/testproject/settings.py +0 -0
  107. {csu-2.6.0 → csu-2.6.2}/tests/testproject/urls.py +0 -0
  108. {csu-2.6.0 → csu-2.6.2}/tox.ini +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 2.6.0
2
+ current_version = 2.6.2
3
3
  commit = True
4
4
  tag = True
5
5
 
@@ -41,7 +41,7 @@ default_context:
41
41
  sphinx_theme: furo
42
42
  test_matrix_separate_coverage: false
43
43
  tests_inside_package: true
44
- version: 2.6.0
44
+ version: 2.6.2
45
45
  version_manager: bump2version
46
46
  website: https://blog.ionelmc.ro
47
47
  year_from: '2024'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csu
3
- Version: 2.6.0
3
+ Version: 2.6.2
4
4
  Summary: Clean Slate Utils - bunch of utility code, mostly Django/DRF specific.
5
5
  Author-email: Ionel Cristian Mărieș <contact@ionelmc.ro>
6
6
  License-Expression: BSD-2-Clause
@@ -69,9 +69,9 @@ Overview
69
69
  .. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
70
70
  :alt: Supported implementations
71
71
  :target: https://pypi.org/project/csu
72
- .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.6.0.svg
72
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.6.2.svg
73
73
  :alt: Commits since latest release
74
- :target: https://github.com/ionelmc/python-csu/compare/v2.6.0...main
74
+ :target: https://github.com/ionelmc/python-csu/compare/v2.6.2...main
75
75
  .. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
76
76
  :alt: Scrutinizer Status
77
77
  :target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
@@ -34,9 +34,9 @@ Overview
34
34
  .. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
35
35
  :alt: Supported implementations
36
36
  :target: https://pypi.org/project/csu
37
- .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.6.0.svg
37
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.6.2.svg
38
38
  :alt: Commits since latest release
39
- :target: https://github.com/ionelmc/python-csu/compare/v2.6.0...main
39
+ :target: https://github.com/ionelmc/python-csu/compare/v2.6.2...main
40
40
  .. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
41
41
  :alt: Scrutinizer Status
42
42
  :target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "csu"
3
- version = "2.6.0"
3
+ version = "2.6.2"
4
4
  description = "Clean Slate Utils - bunch of utility code, mostly Django/DRF specific."
5
5
  requires-python = ">=3.14"
6
6
  license = "BSD-2-Clause"
@@ -2,4 +2,4 @@
2
2
  a.k.a Clean Slate Utils
3
3
  """
4
4
 
5
- __version__ = "2.6.0"
5
+ __version__ = "2.6.2"
@@ -88,10 +88,15 @@ class ConfirmSerializer(Serializer):
88
88
  raise ValidationError(_("Must have a true value."))
89
89
  return value
90
90
 
91
- def validate(self, data):
92
- if not self.instance.can_confirm():
93
- raise ValidationError(_("Confirm time limit expired."))
94
- return super().validate(data)
91
+ def validate(self, attrs):
92
+ instance = self.instance
93
+ if instance.is_pending:
94
+ if instance.can_confirm():
95
+ return super().validate(attrs)
96
+ else:
97
+ raise ValidationError({"confirm": _("Confirm time limit expired.")})
98
+ else:
99
+ raise ValidationError({"confirm": _("Cannot confirm when status is {status}.").format(status=type(instance).status_enum_class(instance.status))})
95
100
 
96
101
 
97
102
  class CancelSerializer(Serializer):
@@ -116,6 +121,6 @@ class CancelSerializer(Serializer):
116
121
 
117
122
  def validate(self, data):
118
123
  if not self.instance.can_cancel():
119
- raise ValidationError(self.cancel_error)
124
+ raise ValidationError({"cancel": self.cancel_error})
120
125
 
121
126
  return super().validate(data)
@@ -92,17 +92,13 @@ class BaseStatusModel(BaseModel):
92
92
  return not self.is_confirmed
93
93
 
94
94
  def can_confirm(self):
95
- if self.status == self.status_enum_class.expired:
96
- return False
97
- elif self.is_pending:
95
+ if self.is_pending:
98
96
  current_dt = now()
99
97
  created_at = cleanup_dt(self.created_at)
100
98
  if current_dt.day != created_at.day:
101
99
  return False
102
100
  diff = (current_dt - created_at).total_seconds()
103
101
  return diff <= type(self).status_confirm_time_limit_seconds
104
- else:
105
- return True
106
102
 
107
103
 
108
104
  class BasePriceModel(models.Model):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csu
3
- Version: 2.6.0
3
+ Version: 2.6.2
4
4
  Summary: Clean Slate Utils - bunch of utility code, mostly Django/DRF specific.
5
5
  Author-email: Ionel Cristian Mărieș <contact@ionelmc.ro>
6
6
  License-Expression: BSD-2-Clause
@@ -69,9 +69,9 @@ Overview
69
69
  .. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
70
70
  :alt: Supported implementations
71
71
  :target: https://pypi.org/project/csu
72
- .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.6.0.svg
72
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.6.2.svg
73
73
  :alt: Commits since latest release
74
- :target: https://github.com/ionelmc/python-csu/compare/v2.6.0...main
74
+ :target: https://github.com/ionelmc/python-csu/compare/v2.6.2...main
75
75
  .. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
76
76
  :alt: Scrutinizer Status
77
77
  :target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes