accrete 0.0.85__py3-none-any.whl → 0.0.87__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.
@@ -276,11 +276,11 @@ class Filter:
276
276
 
277
277
  def null_param(self, key, value):
278
278
  options = self.parse_choices([
279
- ('true', _('True')),
280
- ('false', _('False'))
279
+ ('false', _('True')),
280
+ ('true', _('False'))
281
281
  ])
282
282
  return f"""
283
- <div id="filter-id-~{key}__isnull"
283
+ <div id="filter-id-{key}__isnull"
284
284
  class="query-param" tabindex="-1" data-type="selection"
285
285
  data-param-invert="false"
286
286
  data-param="isnull" data-param-label="{value.get("label")}"
@@ -15,13 +15,11 @@
15
15
  <link rel="stylesheet" type="text/css" href="{% static "css/icons.css" %}">
16
16
  <link rel="stylesheet" type="text/css" href="{% static "css/fa.css" %}">
17
17
  {% endblock %}
18
- {% block htmx %}
19
- <script src="{% static "js/htmx.min.js" %}" defer type="text/javascript"></script>
20
- {% endblock %}
21
- <script defer src="https://cdn.jsdelivr.net/npm/@alpinejs/sort@3.x.x/dist/cdn.min.js"></script>
22
- <script src="https://cdn.jsdelivr.net/npm/alpinejs@3.13.10/dist/cdn.min.js" defer type="text/javascript"></script>
23
18
  {% block script %}
19
+ <script src="{% static "js/htmx.min.js" %}" defer type="text/javascript"></script>
24
20
  <script src="{% static "js/ui.js" %}" defer type="text/javascript"></script>
21
+ <script defer src="https://cdn.jsdelivr.net/npm/@alpinejs/sort@3.x.x/dist/cdn.min.js"></script>
22
+ <script src="https://cdn.jsdelivr.net/npm/alpinejs@3.13.10/dist/cdn.min.js" defer type="text/javascript"></script>
25
23
  {% endblock %}
26
24
  {% block title_tag %}<title id="head-page-title">{% block title %}{{ title }}{% endblock %}</title>{% endblock %}
27
25
  {% endblock %}
@@ -208,7 +206,7 @@
208
206
  {% block messages %}
209
207
  {% if messages %}
210
208
  <div class="columns is-desktop">
211
- <div class="column is-8">
209
+ <div class="column">
212
210
  {% for message in messages %}
213
211
  <div class="columns py-0">
214
212
  <div class="column is-12">
@@ -1,5 +1,6 @@
1
1
  import logging
2
- from datetime import timedelta
2
+ from datetime import datetime, date, timedelta
3
+ from django.utils.translation import gettext_lazy as _
3
4
  from django import template
4
5
  from django.db.models import Manager
5
6
  from django.forms import Form, ModelForm
@@ -97,6 +98,17 @@ def non_field_error_code(form: [Form|ModelForm], code: str) -> bool:
97
98
  return False
98
99
 
99
100
 
101
+ @register.filter(name='extract_non_field_error')
102
+ def extract_non_field_error(form: [Form|ModelForm], code: str) -> str:
103
+ if not form:
104
+ return ''
105
+ errors = []
106
+ for error in form.non_field_errors().as_data():
107
+ if error.code and error.code == code:
108
+ errors.append(str(error.message))
109
+ return mark_safe('<br>'.join(errors))
110
+
111
+
100
112
  @register.filter(name='timedelta_cast')
101
113
  def timedelta_cast(td: timedelta, code: str) -> str | None:
102
114
  if not isinstance(td, timedelta):
@@ -105,3 +117,19 @@ def timedelta_cast(td: timedelta, code: str) -> str | None:
105
117
  if code not in codes:
106
118
  return None
107
119
  return str(getattr(td, code))
120
+
121
+
122
+ @register.filter(name='weekday')
123
+ def datetime_to_weekday(dt: datetime|date, default=None):
124
+ if dt is None:
125
+ return default
126
+ mapping = {
127
+ 1: _('Mon'),
128
+ 2: _('Tue'),
129
+ 3: _('Wed'),
130
+ 4: _('Thu'),
131
+ 5: _('Fri'),
132
+ 6: _('Sat'),
133
+ 7: _('Sun')
134
+ }
135
+ return mapping[dt.isoweekday()]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: accrete
3
- Version: 0.0.85
3
+ Version: 0.0.87
4
4
  Summary: Django Shared Schema Multi Tenant
5
5
  Author-email: Benedikt Jilek <benedikt.jilek@pm.me>
6
6
  License: Copyright (c) 2023 Benedikt Jilek
@@ -47,7 +47,7 @@ accrete/contrib/ui/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,6
47
47
  accrete/contrib/ui/apps.py,sha256=E0ao2ox6PQ3ldfeR17FXJUUJuGiWjm2DPCxHbPXGzls,152
48
48
  accrete/contrib/ui/context.py,sha256=KitMfUPckVRGKrcDjjiplTfMNbZZJ6-Srug_28FCA3s,10154
49
49
  accrete/contrib/ui/elements.py,sha256=rwXhRitKt70-ZT4yiLXvB7cp8jQbr02L7JpYwUy5jv4,1941
50
- accrete/contrib/ui/filter.py,sha256=UAIkUNKu2nVQLafwZlkQu4PDfOPyFM61e_mE7OWRhYs,12410
50
+ accrete/contrib/ui/filter.py,sha256=3KiNtQYHzC-E4gboIzAQZzpyCMnRN_H65Cv2eppy-40,12409
51
51
  accrete/contrib/ui/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
52
52
  accrete/contrib/ui/urls.py,sha256=UrRRroqP6ANW_jpkRWqo2yLvBhYOVhczzbxbfkGnoq4,124
53
53
  accrete/contrib/ui/views.py,sha256=Eewx1n_fOAqx_nP4mvGltaksUtp1_WhCJThtK13YiQc,106
@@ -173,7 +173,7 @@ accrete/contrib/ui/templates/django/forms/widgets/textarea.html,sha256=c9BTedqb3
173
173
  accrete/contrib/ui/templates/ui/dashboard.html,sha256=udnwiSJEcn2wMaJfTs4P0Y20FU79VguK_9Lq4K2BqtM,160
174
174
  accrete/contrib/ui/templates/ui/detail.html,sha256=-Nksyufbf4onufqmFGTAW_BxLRNSWv1A9n8Qs2a6aCo,564
175
175
  accrete/contrib/ui/templates/ui/form.html,sha256=uCtP16THdOuRfs3JdsjadIW0k9b2rN3GAsRSTfSUWak,691
176
- accrete/contrib/ui/templates/ui/layout.html,sha256=rICI7FzEHNd1gB2z3r3Z6k7x5UoMYzto1nh0jLazk1k,15709
176
+ accrete/contrib/ui/templates/ui/layout.html,sha256=ymyjupdwRM3elm_7Ab3aOovwbEC5GpnHgJScjBtfusI,15672
177
177
  accrete/contrib/ui/templates/ui/list.html,sha256=ZmZtZIkU1lB6CQtTzwrwrmz4IGOsQDm2hSqpL_FqauE,1745
178
178
  accrete/contrib/ui/templates/ui/table.html,sha256=8ELtgxoapCyNsvmGISAGXe712lG6AkP_nekb4OVLK3I,4481
179
179
  accrete/contrib/ui/templates/ui/partials/filter.html,sha256=2vmeL3980rMmkRnmVtZh9mBHe6S0PTMjaGIN1J6SpNM,7184
@@ -189,7 +189,7 @@ accrete/contrib/ui/templates/ui/partials/table_field_float.html,sha256=GH_jFdpk8
189
189
  accrete/contrib/ui/templates/ui/partials/table_field_monetary.html,sha256=Wtod9vel2dD4vG8lUVLbtls4aU_2EG3p0E1QRRUSH10,166
190
190
  accrete/contrib/ui/templates/ui/partials/table_field_string.html,sha256=GH_jFdpk8wEJXv4QfO6c3URYrZGGLeuSyWwWl2cWxwQ,45
191
191
  accrete/contrib/ui/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
- accrete/contrib/ui/templatetags/accrete_ui.py,sha256=KTuOeMJJAZ7d4WaXQMeP2LYjmt8CU6cNY7rf4BGpBYs,3063
192
+ accrete/contrib/ui/templatetags/accrete_ui.py,sha256=en63S5i3uX0NhtYWDpHCA0_mBgpzf_d91dtc2RukNPI,3832
193
193
  accrete/contrib/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
194
  accrete/contrib/user/admin.py,sha256=YS4iApli7XUaIl9GsEJxys2j8sepX0by88omYHjff-E,85
195
195
  accrete/contrib/user/apps.py,sha256=oHDrAiHf-G57mZLyxqGJzRY2DbPprGFD-QgyVJG_ruI,156
@@ -230,7 +230,7 @@ accrete/utils/dates.py,sha256=apM6kt6JhGrKgoT0jfav1W-8AUVTxNc9xt3fJQ2n0JI,1492
230
230
  accrete/utils/forms.py,sha256=IvxbXNpSd4a-JBgsTJhs2GHe-DCRWX-xnVPRcoiCzbI,3104
231
231
  accrete/utils/http.py,sha256=sUDwa9hpYAle7d0iJxIA5wQk2mK2BMENo7JyFBSPxKc,4475
232
232
  accrete/utils/models.py,sha256=EEhv7-sQVtQD24PEb3XcDUAh3VVhVFoMMLyFrDjGEaI,706
233
- accrete-0.0.85.dist-info/METADATA,sha256=4hp9a36C_Sq-ho3_SiD5udPLRp5f3OSNq2MvUqelNW0,4952
234
- accrete-0.0.85.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
235
- accrete-0.0.85.dist-info/licenses/LICENSE,sha256=_7laeMIHnsd3Y2vJEXDYXq_PEXxIcjgJsGt8UIKTRWc,1057
236
- accrete-0.0.85.dist-info/RECORD,,
233
+ accrete-0.0.87.dist-info/METADATA,sha256=y7LyKey6qA77hWNQo7lglD5F8fRnOar_YSktbMYHw2Y,4952
234
+ accrete-0.0.87.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
235
+ accrete-0.0.87.dist-info/licenses/LICENSE,sha256=_7laeMIHnsd3Y2vJEXDYXq_PEXxIcjgJsGt8UIKTRWc,1057
236
+ accrete-0.0.87.dist-info/RECORD,,