accrete 0.0.145__py3-none-any.whl → 0.0.147__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.
@@ -100,13 +100,15 @@ class ListResponse(WindowResponse):
100
100
  panel_template: str = None,
101
101
  column_count: int = 1,
102
102
  column_height: str = '150px',
103
- overview_template: str = 'ui/list.html'
103
+ overview_template: str = 'ui/list.html',
104
+ detail_response: 'DetailResponse' = None
104
105
  ):
105
106
  assert page is not None or ui_filter is not None, _(
106
107
  'Argument page or ui_filter must be supplied'
107
108
  )
108
109
  self.ui_filter = ui_filter
109
110
  self.overview_template = overview_template
111
+ self.show_content_right = bool(detail_response)
110
112
  super().__init__(
111
113
  title=title,
112
114
  context=context,
@@ -122,8 +124,11 @@ class ListResponse(WindowResponse):
122
124
  'ui_filter': ui_filter,
123
125
  'endless_scroll': endless_scroll,
124
126
  'column_count': column_count,
125
- 'column_height': column_height
127
+ 'column_height': column_height,
128
+ 'show_content_right': str(self.show_content_right).lower()
126
129
  })
130
+ if detail_response:
131
+ self.context.update(detail_response.context)
127
132
 
128
133
  def _has_panel(self):
129
134
  return bool(self.panel_template or self.ui_filter)
@@ -141,8 +146,8 @@ class ListEntryResponse(Response):
141
146
  instance: Model,
142
147
  list_entry_template: str,
143
148
  context: dict = None,
144
- page: paginator.Page,
145
- is_new: bool,
149
+ page: paginator.Page = None,
150
+ is_new: bool = False,
146
151
  column_count: int = 1,
147
152
  column_height: str = '150px',
148
153
  ):
@@ -174,7 +179,7 @@ class TableResponse(WindowResponse):
174
179
  self, *,
175
180
  title: str,
176
181
  context: dict,
177
- object_label: str,
182
+ instance_label: str,
178
183
  fields: list[str],
179
184
  footer: dict = None,
180
185
  page: paginator.Page = None,
@@ -182,7 +187,8 @@ class TableResponse(WindowResponse):
182
187
  endless_scroll: bool = True,
183
188
  header_template: str = None,
184
189
  panel_template: str = None,
185
- overview_template: str = 'ui/table.html'
190
+ overview_template: str = 'ui/table.html',
191
+ detail_response: 'DetailResponse' = None
186
192
  ):
187
193
  assert page is not None or ui_filter is not None, _(
188
194
  'Argument page or ui_filter must be supplied'
@@ -203,9 +209,11 @@ class TableResponse(WindowResponse):
203
209
  'ui_filter': ui_filter,
204
210
  'endless_scroll': endless_scroll,
205
211
  'fields': fields,
206
- 'object_label': object_label,
212
+ 'instance_label': instance_label,
207
213
  'footer': footer
208
214
  })
215
+ if detail_response:
216
+ self.context.update(detail_response.context)
209
217
 
210
218
  def _has_panel(self):
211
219
  return bool(self.panel_template or self.ui_filter)
@@ -230,6 +238,7 @@ class TableRowResponse(Response):
230
238
  'instance': instance,
231
239
  'fields': fields,
232
240
  'footer': footer,
241
+ 'page': page
233
242
  }
234
243
  super().__init__(template=self.base_template, context=context)
235
244
 
@@ -252,13 +261,15 @@ class DetailResponse(Response):
252
261
  def __init__(
253
262
  self, *,
254
263
  context: dict,
255
- detail_header_template: str = None,
256
- detail_data_template: str = None
264
+ header_template: str = None,
265
+ data_template: str = None
257
266
  ):
258
267
  super().__init__(template=self.base_template, context=context)
268
+ self.header_template = header_template
269
+ self.data_template = data_template
259
270
  self.context.update({
260
- 'detail_header_template': detail_header_template,
261
- 'detail_data_template': detail_data_template
271
+ 'detail_header_template': header_template,
272
+ 'detail_data_template': data_template
262
273
  })
263
274
 
264
275
  @staticmethod
@@ -303,7 +314,7 @@ class TriggerResponse:
303
314
 
304
315
  def response(self):
305
316
  res = HttpResponse()
306
- res.headers['HX-Reswap'] = 'None'
317
+ res.headers['HX-Reswap'] = 'none'
307
318
  for trigger in self.trigger:
308
319
  add_trigger(res, trigger.trigger, trigger.header)
309
320
  return res
@@ -345,7 +356,9 @@ def add_trigger(
345
356
  def update(request, ui_responses: list[Response]) -> HttpResponse:
346
357
  response = HttpResponse()
347
358
  content = ''
359
+ print(ui_responses)
348
360
  for res in ui_responses:
361
+ print(res.context)
349
362
  content += res.render(request)
350
363
  res.add_trigger(response)
351
364
  content += render_to_string('ui/message.html', request=request)
@@ -84,10 +84,6 @@ input[disabled] ~ .helptext {
84
84
  font-weight: normal !important; }
85
85
 
86
86
  textarea {
87
- border-top: transparent !important;
88
- border-right: transparent !important;
89
- border-left: transparent !important;
90
- border-radius: 0 !important;
91
87
  box-shadow: none !important; }
92
88
 
93
89
  textarea:focus {
@@ -161,7 +157,7 @@ select:focus {
161
157
  max-width: calc(var(--accrete-detail-width) - 6%); }
162
158
 
163
159
  .list-entry > .box:hover, .box.selected {
164
- outline: 2px solid var(--bulma-success); }
160
+ box-shadow: 0 0 5px 2px var(--bulma-success); }
165
161
 
166
162
  .helptext {
167
163
  font-style: italic !important;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "mappings": "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",
3
+ "mappings": "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",
4
4
  "sources": ["accrete.scss"],
5
5
  "names": [],
6
6
  "file": "accrete.css"
@@ -106,10 +106,6 @@ input[disabled] ~ .helptext {
106
106
  }
107
107
 
108
108
  textarea {
109
- border-top: transparent!important;
110
- border-right: transparent!important;
111
- border-left: transparent!important;
112
- border-radius: 0!important;
113
109
  box-shadow: none!important;
114
110
  }
115
111
 
@@ -199,7 +195,7 @@ select:focus {
199
195
  }
200
196
 
201
197
  .list-entry > .box:hover, .box.selected {
202
- outline: 2px solid var(--bulma-success);
198
+ box-shadow: 0 0 5px 2px var(--bulma-success);
203
199
  }
204
200
 
205
201
  .helptext {
@@ -42,6 +42,7 @@
42
42
  }
43
43
  })
44
44
  </script>
45
+ {% if script_template %}{% include script_template %}{% endif %}
45
46
  <title>{% block title %}{{ title }}{% endblock %}</title>
46
47
  {% endblock %}
47
48
  </head>
@@ -137,7 +138,7 @@
137
138
  {% endfor %}
138
139
  </div>
139
140
 
140
- <div x-data="{showContentRight: false}"
141
+ <div x-data="{showContentRight: {{ show_content_right|default_if_falsy:'false' }}}"
141
142
  @activate-detail.window="showContentRight = true;"
142
143
  @deactivate-detail.window="showContentRight = false;"
143
144
  class="is-flex is-flex-direction-row"
@@ -197,7 +198,7 @@
197
198
  </div>
198
199
  </div>
199
200
 
200
- <div id="detail-container" x-show="showContentRight" style="display: none;"
201
+ <div id="detail-container" x-show="showContentRight" {% if show_content_right != 'true' %}style="display: none;"{% endif %}
201
202
  x-transition:enter.duration.200ms x-transition:leave.duration.50ms
202
203
  >
203
204
  <div id="detail-indicator" class="htmx-indicator">
@@ -208,7 +209,9 @@
208
209
  <div id="detail-header" class="is-flex is-flex-wrap-wrap is-flex-grow-1">
209
210
  {% if detail_header_template %}{% include detail_header_template %}{% endif %}
210
211
  </div>
211
- <button class="button is-light is-align-self-baseline" style="border-radius: var(--bulma-radius-medium)" x-on:click="showContentRight = false;">
212
+ <button class="button is-light is-align-self-baseline" style="border-radius: var(--bulma-radius-medium)"
213
+ x-on:click="showContentRight = false; const url = new URL(window.location); url.searchParams.delete('detail'); history.replaceState(null, '', url);"
214
+ >
212
215
  <span class="icon"><i class="fa fa-xmark"></i></span>
213
216
  </button>
214
217
  </div>
@@ -1,45 +1,42 @@
1
- {#{% extends 'ui/layout.html' %}#}
2
1
  {% load i18n %}
3
2
  {% load ui %}
4
3
  {% load partials %}
5
4
 
6
- {% block overview %}
7
- <div class="fixed-grid has-{{ column_count }}-cols has-1-cols-mobile m-2">
8
- <div id="list-grid" class="grid m-0">
9
- {% for instance in page.object_list %}
10
- {% partialdef entry inline=True %}
11
- <div id="list-entry-{{ instance.pk }}" class="list-entry cell pb-0" style="height: {{ column_height }}">
12
- <div class="box p-3"
13
- style="word-break: break-word; height: 100%; overflow-y: auto; {% if instance.get_absolute_url %}cursor:pointer;{% endif %}"
14
- {% if instance.get_absolute_url %}
15
- hx-get="{{ instance.get_absolute_url }}{% querystring %}" hx-swap="none" hx-indicator="#detail-indicator"
16
- x-on:click="$dispatch('unselect-list-entry'); selected = true; $nextTick(() => { $el.scrollIntoView({block: 'nearest'}) });" x-bind:class="selected ? 'box selected' : ''"
17
- {% endif %}
18
- x-data="{selected: false}" @unselect-list-entry.window="selected = false"
19
- >
20
- <div id="list-data-{{ instance.pk }}">
21
- {% if list_entry_template %}
22
- {% include list_entry_template %}
23
- {% else %}
24
- {{ instance }}
25
- {% endif %}
26
- </div>
5
+ <div class="fixed-grid has-{{ column_count }}-cols has-1-cols-mobile m-2">
6
+ <div id="list-grid" class="grid m-0">
7
+ {% for instance in page.object_list %}
8
+ {% partialdef entry inline=True %}
9
+ <div id="list-entry-{{ instance.pk }}" class="list-entry cell pb-0" style="height: {{ column_height }}">
10
+ <div class="box p-3"
11
+ style="word-break: break-word; height: 100%; overflow-y: auto; {% if instance.get_absolute_url %}cursor:pointer;{% endif %}"
12
+ {% if instance.get_absolute_url %}
13
+ hx-get="{{ instance.get_absolute_url }}{% querystring %}" hx-swap="none" hx-indicator="#detail-indicator" hx-replace-url="{% querystring detail=instance.pk %}"
14
+ x-on:click="$dispatch('unselect-list-entry'); selected = true; $nextTick(() => { $el.scrollIntoView({block: 'nearest'}) });" x-bind:class="selected ? 'selected' : ''"
15
+ {% endif %}
16
+ x-data="{selected: false}" @unselect-list-entry.window="selected = false"
17
+ >
18
+ <div id="list-data-{{ instance.pk }}">
19
+ {% if list_entry_template %}
20
+ {% include list_entry_template %}
21
+ {% else %}
22
+ {{ instance }}
23
+ {% endif %}
27
24
  </div>
28
25
  </div>
29
- {% endpartialdef %}
30
- {% endfor %}
31
- </div>
32
- {% if endless_scroll and page.has_next %}
33
- <div id="endless-scroller"
34
- hx-get="{% querystring page=page.next_page_number %}"
35
- hx-target="#list-grid"
36
- hx-trigger="intersect once"
37
- hx-select=".list-entry"
38
- hx-select-oob="#pagination-next-button,#pagination-end-index,#endless-scroller"
39
- hx-swap="beforeend"
40
- hx-replace-url="true"
41
- hx-indicator="#endless-scroll-indicator"></div>
42
- <progress id="endless-scroll-indicator" class="htmx-indicator progress is-small is-success" max="100">15%</progress>
43
- {% endif %}
26
+ </div>
27
+ {% endpartialdef %}
28
+ {% endfor %}
44
29
  </div>
45
- {% endblock %}
30
+ {% if endless_scroll and page.has_next %}
31
+ <div id="endless-scroller"
32
+ hx-get="{% querystring page=page.next_page_number %}"
33
+ hx-target="#list-grid"
34
+ hx-trigger="intersect once"
35
+ hx-select=".list-entry"
36
+ hx-select-oob="#pagination-next-button,#pagination-end-index,#endless-scroller"
37
+ hx-swap="beforeend"
38
+ hx-replace-url="true"
39
+ hx-indicator="#endless-scroll-indicator"></div>
40
+ <progress id="endless-scroll-indicator" class="htmx-indicator progress is-small is-success" max="100">15%</progress>
41
+ {% endif %}
42
+ </div>
@@ -3,7 +3,7 @@
3
3
  {% include 'ui/list.html#entry' %}
4
4
  </div>
5
5
  {% else %}
6
- <div hx-swap-oob="innerHTML:#list-data-{{ object.pk }}">
6
+ <div hx-swap-oob="innerHTML:#list-data-{{ instance.pk }}">
7
7
  {% include list_entry_template with instance=instance %}
8
8
  </div>
9
9
  {% endif %}
@@ -1,77 +1,75 @@
1
- {% extends 'ui/layout.html' %}
2
1
  {% load i18n %}
3
2
  {% load ui %}
4
3
  {% load partials %}
5
4
 
6
- {% block content_left %}
7
- <table id="content-table" class="table can-compact is-fullwidth is-hoverable is-narrow my-0" hx-indicator=".htmx-indicator" x-data="">
8
- <thead style="position: sticky; top: 0; z-index: 10; background-color: var(--bulma-scheme-main)">
9
- <tr>
10
- <th>{{ object_label }}</th>
11
- {% for field in fields %}
12
- <th style="text-align: {{ page.object_list|table_alignment:field }}">{{ page.object_list|verbose_field_name:field }}</th>
13
- {% endfor %}
14
- </tr>
15
- </thead>
16
- <tbody id="content-table-body" style="z-index: 9" x-ref="tbody">
17
- {% for object in page.object_list %}
18
- {% partialdef tr inline=True %}
19
- <tr id="tr-{{ object.pk }}"
20
- {% if object.get_absolute_url %}
21
- style="cursor: pointer;"
22
- hx-get="{{ object.get_absolute_url }}{% querystring %}" hx-swap="none"
23
- x-data="{selected: false}" @unselect-tr.window="selected = false"
24
- x-on:click="$dispatch('unselect-tr'); selected = true; $nextTick(() => { $el.scrollIntoView( {block: 'nearest'} ) });" x-bind:class="selected ? 'is-success' : ''"
25
- {% endif %}
26
- >
27
- {% partialdef td inline=True %}
28
- <td>{{ object }}</td>
29
- {% for field in fields %}
30
- <td style="text-align: {{ object|table_alignment:field }}">
31
- <span class="">
32
- <span class="responsive-heading has-text-weight-light" style="margin-right: .2rem">{{ object|verbose_field_name:field }}:</span>
33
- {{ object|table_display:field|default_if_none:'' }}
34
- </span>
35
- </td>
36
- {% endfor %}
37
- {% endpartialdef %}
38
- </tr>
39
- {% endpartialdef %}
5
+ <table id="content-table" class="table can-compact is-fullwidth is-hoverable is-narrow my-0" hx-indicator=".htmx-indicator" x-data="">
6
+ <thead style="position: sticky; top: 0; z-index: 10; background-color: var(--bulma-scheme-main)">
7
+ <tr>
8
+ <th>{{ instance_label }}</th>
9
+ {% for field in fields %}
10
+ <th style="text-align: {{ page.object_list|table_alignment:field }}">{{ page.object_list|verbose_field_name:field }}</th>
40
11
  {% endfor %}
41
- </tbody>
42
- <tfoot style="position: sticky; bottom: 0; z-index: 10; background-color: var(--bulma-scheme-main);" class="has-text-weight-bold">
43
- <tr id="tf-row">
44
- {% partialdef tf inline=True %}
45
- <td class="p-0"></td>
46
- {% for field in fields %}
47
- {% if field in footer %}
48
- <td style="text-align: {{ queryset|table_alignment:field }}">
12
+ </tr>
13
+ </thead>
14
+ <tbody id="content-table-body" style="z-index: 9" x-ref="tbody">
15
+ {% for instance in page.object_list %}
16
+ {% partialdef tr inline=True %}
17
+ <tr id="tr-{{ instance.pk }}"
18
+ {% if instance.get_absolute_url %}
19
+ style="cursor: pointer;"
20
+ hx-get="{{ instance.get_absolute_url }}{% querystring %}" hx-swap="none"
21
+ hx-replace-url="{% querystring detail=instance.pk %}"
22
+ x-data="{selected: false}" @unselect-tr.window="selected = false"
23
+ x-on:click="$dispatch('unselect-tr'); selected = true; $nextTick(() => { $el.scrollIntoView( {block: 'nearest'} ) });" x-bind:class="selected ? 'is-success' : ''"
24
+ {% endif %}
25
+ >
26
+ {% partialdef td inline=True %}
27
+ <td>{{ instance }}</td>
28
+ {% for field in fields %}
29
+ <td style="text-align: {{ instance|table_alignment:field }}">
49
30
  <span class="">
50
- <span class="responsive-heading has-text-weight-light" style="margin-right: .2rem">{{ queryset|verbose_field_name:field }}:</span>
51
- {{ footer|get_item:field }}
31
+ <span class="responsive-heading has-text-weight-light" style="margin-right: .2rem">{{ instance|verbose_field_name:field }}:</span>
32
+ {{ instance|table_display:field|default_if_none:'' }}
52
33
  </span>
53
34
  </td>
54
- {% else %}
55
- <td class="p-0"></td>
56
- {% endif %}
57
- {% endfor %}
58
- {% endpartialdef %}
59
- </tr>
60
- </tfoot>
61
- </table>
62
-
63
- <div id="endless-scroller"
64
- {% if page.has_next %}
65
- hx-get="{% querystring page=page.next_page_number %}"
66
- hx-trigger="intersect once"
67
- hx-select="tbody > tr"
68
- hx-target="#content-table-body"
69
- hx-swap="beforeend"
70
- hx-select-oob="#pagination-next-button,#pagination-end-index,#endless-scroller"
71
- hx-indicator="#endless-scroll-indicator"
72
- hx-replace-url="true"
73
- {% endif %}
74
- >
75
- </div>
76
- <progress id="endless-scroll-indicator" class="htmx-indicator progress is-small is-success" max="100">15%</progress>
77
- {% endblock %}
35
+ {% endfor %}
36
+ {% endpartialdef %}
37
+ </tr>
38
+ {% endpartialdef %}
39
+ {% endfor %}
40
+ </tbody>
41
+ <tfoot style="position: sticky; bottom: 0; z-index: 10; background-color: var(--bulma-scheme-main);" class="has-text-weight-bold">
42
+ <tr id="tf-row">
43
+ {% partialdef tf inline=True %}
44
+ <td class="p-0"></td>
45
+ {% for field in fields %}
46
+ {% if field in footer %}
47
+ <td style="text-align: {{ page.object_list|table_alignment:field }}">
48
+ <span class="">
49
+ <span class="responsive-heading has-text-weight-light" style="margin-right: .2rem">{{ page.object_list|verbose_field_name:field }}:</span>
50
+ {{ footer|get_item:field }}
51
+ </span>
52
+ </td>
53
+ {% else %}
54
+ <td class="p-0"></td>
55
+ {% endif %}
56
+ {% endfor %}
57
+ {% endpartialdef %}
58
+ </tr>
59
+ </tfoot>
60
+ </table>
61
+
62
+ <div id="endless-scroller"
63
+ {% if page.has_next %}
64
+ hx-get="{% querystring page=page.next_page_number %}"
65
+ hx-trigger="intersect once"
66
+ hx-select="tbody > tr"
67
+ hx-target="#content-table-body"
68
+ hx-swap="beforeend"
69
+ hx-select-oob="#pagination-next-button,#pagination-end-index,#endless-scroller"
70
+ hx-indicator="#endless-scroll-indicator"
71
+ hx-replace-url="true"
72
+ {% endif %}
73
+ >
74
+ </div>
75
+ <progress id="endless-scroll-indicator" class="htmx-indicator progress is-small is-success" max="100">15%</progress>
@@ -1,13 +1,13 @@
1
1
  <table>
2
2
  <tbody>
3
- <tr hx-swap-oob="innerHTML:#tr-{{ object.pk }}">
4
- {% include 'ui/table.html#td' with object=object fields=fields %}
3
+ <tr hx-swap-oob="innerHTML:#tr-{{ instance.pk }}">
4
+ {% include 'ui/table.html#td' with instance=instance fields=fields page=page %}
5
5
  </tr>
6
6
  </tbody>
7
7
  {% if footer %}
8
8
  <tfoot>
9
9
  <tr hx-swap-oob="innerHTML:#tf-row">
10
- {% include 'ui/table.html#tf' with object=object fields=fields %}
10
+ {% include 'ui/table.html#tf' with instance=instance fields=fields page=page %}
11
11
  </tr>
12
12
  </tfoot>
13
13
  {% endif %}
@@ -5,7 +5,15 @@
5
5
  <label class="label mt-2 mb-5">
6
6
  {{ field }}
7
7
  <span class="has-text-danger is-size-6">{{ field.errors }}</span>
8
- <p class="helptext {% if field.field.required %}has-text-weight-bold{% endif %}">{% if label %}{{ label }}{% else %}{{ field.help_text|default_if_falsy:field.label }}{% endif %}</p>
8
+ <span class="helptext {% if field.field.required %}has-text-weight-bold{% endif %}">{% if label %}{{ label }}{% else %}{{ field.help_text|default_if_falsy:field.label }}{% endif %}</span>
9
+ </label>
10
+ {% endpartialdef %}
11
+
12
+ {% partialdef textarea %}
13
+ <label class="label mt-2 mb-5">
14
+ <span class="helptext {% if field.field.required %}has-text-weight-bold{% endif %}">{% if label %}{{ label }}{% else %}{{ field.help_text|default_if_falsy:field.label }}{% endif %}</span>
15
+ <span class="has-text-danger is-size-6">{{ field.errors }}</span>
16
+ {{ field }}
9
17
  </label>
10
18
  {% endpartialdef %}
11
19
 
@@ -13,7 +13,7 @@
13
13
  <div id="{{ widget.attrs.id }}_display" class="input select py-1 pl-1" tabindex="0" x-ref="inputDisplay" aria-label="inputDisplay"
14
14
  style="padding-right: 30px; border-radius: 0; border-top: 0; border-right:0; border-left: 0; min-height: var(--bulma-control-height); height: fit-content; width: 100%"
15
15
  x-on:keydown="if (![9, 27, 38, 40].includes($event.keyCode)) {$refs.searchInput.focus();}"
16
- x-on:mousedown.stop="if (!$event.target.classList.contains('delete')) {if (open) {open = false; } else {open = true; $refs.searchInput.focus();}}"
16
+ x-on:click.stop="if (!$event.target.classList.contains('delete')) {if (open) {open = false; } else {open = true; $refs.searchInput.focus();}}"
17
17
  >
18
18
  <div class="tags" x-ref="inputDisplayTags"
19
19
  x-on:click="
@@ -8,6 +8,7 @@ from django.db.models import Manager, DecimalField, IntegerField, FloatField, Mo
8
8
  from django.apps import apps
9
9
  from django.template.loader import render_to_string
10
10
  from django.utils.safestring import mark_safe
11
+ from django.forms import widgets
11
12
 
12
13
  _logger = logging.getLogger(__name__)
13
14
  register = template.Library()
@@ -149,8 +150,11 @@ def x_ref_save(param: str):
149
150
  return re.sub(r'[^A-Za-z]+','', param)
150
151
 
151
152
 
152
- @register.filter(name='wrap_label')
153
- def wrap_label(field, label=None):
153
+ @register.filter(name='wrap_form_field')
154
+ def wrap_form_fields(field, label=None):
155
+ if isinstance(field.field.widget, widgets.Textarea):
156
+ html = render_to_string('ui/templatetags/field.html#textarea', {'field': field, 'label': label})
157
+ return mark_safe(html)
154
158
  html = render_to_string('ui/templatetags/field.html#form_field', {'field': field, 'label': label})
155
159
  return mark_safe(html)
156
160
 
@@ -158,7 +162,7 @@ def wrap_label(field, label=None):
158
162
  @register.filter(name='wrap_model_field')
159
163
  def wrap_model_field(instance, field_name):
160
164
  field = instance._meta.get_field(field_name)
161
- if field_name == 'invoicing_period' and field.choices:
165
+ if field.choices:
162
166
  value = getattr(instance, f'get_{field_name}_display')()
163
167
  else:
164
168
  value = getattr(instance, field_name)
@@ -1,19 +1,12 @@
1
1
  {% extends 'ui/modal.html' %}
2
2
  {% load i18n %}
3
+ {% load ui %}
3
4
 
4
5
  {% block modal_content %}
5
6
  <form id="{{ modal_id }}-form" hx-post="{% url 'user:change_email' %}">
6
7
  {% csrf_token %}
7
- <label class="label has-field is-required">
8
- {{ form.email.label }}
9
- {{ form.email }}
10
- <span class="has-text-danger is-size-7">{{ form.email.errors }}</span>
11
- </label>
12
- <label class="label has-field is-required">
13
- {{ form.password.label }}
14
- {{ form.password }}
15
- <span class="has-text-danger is-size-7">{{ form.password.errors }}</span>
16
- </label>
8
+ {{ form.email|wrap_form_field }}
9
+ {{ form.password|wrap_form_field }}
17
10
  </form>
18
11
  {% endblock %}
19
12
 
@@ -1,24 +1,13 @@
1
1
  {% extends 'ui/modal.html' %}
2
2
  {% load i18n %}
3
+ {% load ui %}
3
4
 
4
5
  {% block modal_content %}
5
6
  <form id="{{ modal_id }}-form" hx-post="{% url 'user:change_password' %}">
6
- {% csrf_token %}
7
- <label class="label">
8
- {{ form.old_password.label }}
9
- {{ form.old_password }}
10
- <span class="has-text-danger is-size-7">{{ form.old_password.errors }}</span>
11
- </label>
12
- <label class="label has-field is-required">
13
- {{ form.new_password.label }}
14
- {{ form.new_password }}
15
- <span class="has-text-danger is-size-7">{{ form.new_password.errors }}</span>
16
- </label>
17
- <label class="label has-field is-required">
18
- {{ form.new_password_confirm.label }}
19
- {{ form.new_password_confirm }}
20
- <span class="has-text-danger is-size-7">{{ form.new_password_confirm.errors }}</span>
21
- </label>
7
+ {% csrf_token %}
8
+ {{ form.old_password|wrap_form_field }}
9
+ {{ form.new_password|wrap_form_field }}
10
+ {{ form.new_password_confirm|wrap_form_field }}
22
11
  </form>
23
12
  {% endblock %}
24
13
 
@@ -23,19 +23,19 @@
23
23
  {% include 'ui/form_error.html' %}
24
24
  </div>
25
25
  </div>
26
- <div class="columns m-0">
26
+ <div class="columns">
27
27
  <div class="column is-6">
28
28
  {% translate 'Username' as username %}
29
- {{ form.username|wrap_label:username }}
30
- {{ form.first_name|wrap_label }}
31
- {{ form.last_name|wrap_label }}
29
+ {{ form.username|wrap_form_field:username }}
30
+ {{ form.first_name|wrap_form_field }}
31
+ {{ form.last_name|wrap_form_field }}
32
32
  </div>
33
33
  <div class="column is-6">
34
34
  {% if not user.is_managed %}
35
35
  {{ user|wrap_model_field:'email' }}
36
36
  {% endif %}
37
- {{ form.language_code|wrap_label }}
38
- {{ form.theme|wrap_label }}
37
+ {{ form.language_code|wrap_form_field }}
38
+ {{ form.theme|wrap_form_field }}
39
39
  </div>
40
40
  </div>
41
41
  </form>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: accrete
3
- Version: 0.0.145
3
+ Version: 0.0.147
4
4
  Summary: Django Shared Schema Multi Tenant
5
5
  Author-email: Benedikt Jilek <benedikt.jilek@pm.me>
6
6
  License: Copyright (c) 2025 Benedikt Jilek
@@ -66,7 +66,7 @@ accrete/contrib/ui/apps.py,sha256=E0ao2ox6PQ3ldfeR17FXJUUJuGiWjm2DPCxHbPXGzls,15
66
66
  accrete/contrib/ui/filter.py,sha256=WWELsSZF-v7FxAWw1gGvYHFBB0BhmQWuWacI_joTKas,13703
67
67
  accrete/contrib/ui/middleware.py,sha256=QprWR8FXK9iMPIvLQAeYASaUJSW0uD9BHoYroMKrph0,1560
68
68
  accrete/contrib/ui/models.py,sha256=Vjc0p2XbAPgE6HyTF6vll98A4eDhA5AvaQqsc4kQ9AQ,57
69
- accrete/contrib/ui/response.py,sha256=EV1d4eNZNcUB0xn9FJvDWy2T2aNv1e21UFr73cS9f8Y,10408
69
+ accrete/contrib/ui/response.py,sha256=e0UxZeAEfLI8RedWnU-jFqxIIGhnR_UT7LimytsUsRI,10965
70
70
  accrete/contrib/ui/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
71
71
  accrete/contrib/ui/urls.py,sha256=5XUfK85HYWYf7oopMoJEEYmQ6pNgHgZBErBEn97pBt4,337
72
72
  accrete/contrib/ui/views.py,sha256=5VUbP0jgMcLMv9-3AKxkV315RA0qXuw5PmTRejPc0Yg,1136
@@ -167,9 +167,9 @@ accrete/contrib/ui/static/bulma/versions/bulma-no-dark-mode.scss,sha256=1tXoYLlK
167
167
  accrete/contrib/ui/static/bulma/versions/bulma-no-helpers-prefixed.scss,sha256=NRrD7Euz_mfDI02D92a63M6H4UhArjhWy3g5DIhQr5o,366
168
168
  accrete/contrib/ui/static/bulma/versions/bulma-no-helpers.scss,sha256=gyRiEug6frpDJEaxZ7VybdApnmNS5R5A9Zn1R0yWLJg,335
169
169
  accrete/contrib/ui/static/bulma/versions/bulma-prefixed.scss,sha256=cDhte1VyFupdjYFXpUyQb7wGB8aUKDGYuKluZCY5CtA,133
170
- accrete/contrib/ui/static/css/accrete.css,sha256=C5GVDuOcSiCVczvpvIzGAmpZQ7_VFbU-0Z_CQ_RtDGE,8208
171
- accrete/contrib/ui/static/css/accrete.css.map,sha256=r0fiRbfcq57rvMPOC3RZvz7DGKiglLzC2fs5Y8-cHGw,4802
172
- accrete/contrib/ui/static/css/accrete.scss,sha256=lVgtZx6HsInVdV0LVO0JVijoS6wBupi4GiPhRpQvQ4I,8261
170
+ accrete/contrib/ui/static/css/accrete.css,sha256=i3NxjXuMwb-wgnDgX_GohHdWxfDRakv-isig-y_Li18,8065
171
+ accrete/contrib/ui/static/css/accrete.css.map,sha256=pue97ypofcpAUPiKg7jIHJB8UeGnash813UNiNA0QFY,4712
172
+ accrete/contrib/ui/static/css/accrete.scss,sha256=OTD_70Fv1q38PBghFop-IGmZidmPFXqw_Grzys5DbkU,8114
173
173
  accrete/contrib/ui/static/css/fa.css,sha256=wiz7ZSCn_btzhjKDQBms9Hx4sSeUYsDrTLg7roPstac,102641
174
174
  accrete/contrib/ui/static/css/icons.css,sha256=5550KHsaayeEtRaUdf0h7esQhyec-_5ZfecZ_sOC6v0,6334
175
175
  accrete/contrib/ui/static/icons/Logo.svg,sha256=hGZuxrAa-LRpFavFiF8Lnc7X9OQcqmb6Xl_dxx-27hM,1861
@@ -200,25 +200,25 @@ accrete/contrib/ui/templates/ui/content_right.html,sha256=aOFjbtXjjlqwmHpGoEpAUz
200
200
  accrete/contrib/ui/templates/ui/detail.html,sha256=V0HccLE0Pb-5haQFpvIoWZfF1UOrvMwPYv2UTwRnt_A,293
201
201
  accrete/contrib/ui/templates/ui/favicon.html,sha256=ZSK6qDGV4Cexgt0VA3KOHYN100yZHOFjfOiFZVudWg0,90
202
202
  accrete/contrib/ui/templates/ui/form_error.html,sha256=WWqfFWyJ_LCzm5IkxXztn23GFak5wyM2HZcmiZ3Eq9s,417
203
- accrete/contrib/ui/templates/ui/layout.html,sha256=r3ZylKY2iPK8HwNcRPSzuJ4dfEQKQMGFCu7CBBE9gUg,13674
204
- accrete/contrib/ui/templates/ui/list.html,sha256=xyEUYwQKcj-65CO5Te8ixQcUoUj_bh4nmN9cpHaO9uM,2437
205
- accrete/contrib/ui/templates/ui/list_update.html,sha256=uHwdVQFGwDq0wEbZ6jtSnII6G7xLruivIlOX5dVGlz8,274
203
+ accrete/contrib/ui/templates/ui/layout.html,sha256=sMCoIDFS-LKyTiUaOJwhDMoKZH9K0tPbnTQlP_cTUJ0,14022
204
+ accrete/contrib/ui/templates/ui/list.html,sha256=5ORnXkIZdGXl5HB77oI_FbgfLGI6GZscbTc567pCxiw,2264
205
+ accrete/contrib/ui/templates/ui/list_update.html,sha256=CUV-OJCieOBrtSbh0vAoyZYL-_e9lP7vQrY4j1TlT7M,276
206
206
  accrete/contrib/ui/templates/ui/message.html,sha256=dQnPNkHIrrOzelXCTO8CLWG5ufmxJ8MuWp66YLZbmro,773
207
207
  accrete/contrib/ui/templates/ui/modal.html,sha256=3FzvnFVWvwRQ_r1-2qd9N5wYIOh6_oYDDp7uk6XoJPE,3481
208
208
  accrete/contrib/ui/templates/ui/oob.html,sha256=lZHIBBYclefbGkKguS1A7vrtOhODJizbSRaGAAHDvG8,267
209
- accrete/contrib/ui/templates/ui/table.html,sha256=u6JJz1FykuljZiiC2hL83hy8RbMeXcSH8xuU1ji2SHc,3939
210
- accrete/contrib/ui/templates/ui/table_row_update.html,sha256=Jvt0wlq4btlIRk1RoSv467nT0MUBn7OwC1EbzawDej4,409
209
+ accrete/contrib/ui/templates/ui/table.html,sha256=WNAclm7qmeFbRX8itc7PIHYHfeWwAxFpRTA-k1zK3OE,3700
210
+ accrete/contrib/ui/templates/ui/table_row_update.html,sha256=v3YHCzQbGbp3zC6zmJ_EvNvtgvCH_84R6gUsH5mpC0k,439
211
211
  accrete/contrib/ui/templates/ui/filter/filter.html,sha256=GOTXouHH4RSCFsIzg1UPFAcmKaNNxTPmRj5Bx9K1m4o,759
212
212
  accrete/contrib/ui/templates/ui/filter/query_input.html,sha256=Qg_41fODXMgL534ohktb0QOxNzAEbaeBzAajJCEK7Pg,2035
213
213
  accrete/contrib/ui/templates/ui/filter/query_operator.html,sha256=h4WWLDnse6DK5Rb_0TTb0wqWxhvY_g3qjwx8_eENMuI,569
214
214
  accrete/contrib/ui/templates/ui/filter/query_params.html,sha256=wCkyZ9oSK_ivraNiL-UAY_9TflYw5EspnHHm6V6uOzk,9548
215
215
  accrete/contrib/ui/templates/ui/filter/query_tags.html,sha256=ooeIwIwvhT0fG5SMAuLoMquTVUmYf5n50DM-3gC_iAo,1567
216
- accrete/contrib/ui/templates/ui/templatetags/field.html,sha256=njmCBUBpLQsSu1r740PMXuh5gNfjDxI6Lmo_dm4JTqw,776
216
+ accrete/contrib/ui/templates/ui/templatetags/field.html,sha256=G029l141G0VICuEgPxr6jfr3eBV4MuE-yt6iQLVrrlg,1168
217
217
  accrete/contrib/ui/templates/ui/widgets/model_search_select.html,sha256=AUlWN2gKhHk_tWP1-KGel5ifaRMTF60MUtgbap7CGQ4,2938
218
- accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html,sha256=NV_PWH8-3TqSfJT2l4aN3TOCFyYWxxtCQ9sh6X8gML0,4686
218
+ accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html,sha256=0YtxEmKqagUAIjkP0a36G2T4z0ySi8He4qmMu9EmMVw,4682
219
219
  accrete/contrib/ui/templates/ui/widgets/model_search_select_options.html,sha256=4Wky0XkYWZlIKXTXzGjJkJTX3H9rhjXTY1hYai3Q3TA,242
220
220
  accrete/contrib/ui/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
- accrete/contrib/ui/templatetags/ui.py,sha256=cWWgzjQKgcxy6uAJZlIJzeP-O3oqFjbrCZrZdnxNUVk,4924
221
+ accrete/contrib/ui/templatetags/ui.py,sha256=YRiIdTat-CCKjYP5FG3o-JaHpO4RffqUn6V14B4emeI,5124
222
222
  accrete/contrib/ui/widgets/__init__.py,sha256=W_y10jfu37lygp4frXuKFSGec97gpNbWskG6DMhTKtY,69
223
223
  accrete/contrib/ui/widgets/search_select.py,sha256=zKmOt54QsxUobNkDNEA2ut3pPAl8a5DqmEpcfam1l1I,3762
224
224
  accrete/contrib/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -243,11 +243,11 @@ accrete/contrib/user/migrations/0007_user_managed_login.py,sha256=SfG1Yj9m_g-sZb
243
243
  accrete/contrib/user/migrations/0008_remove_user_no_email_for_managed_user_and_more.py,sha256=XypG6tN0WmLyJV8sbZgSVqNFbTxRsBHWhIRyMJGfV7c,655
244
244
  accrete/contrib/user/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
245
  accrete/contrib/user/templates/user/accrete_navbar_end_dropdown.html,sha256=suPoeu1Dm49rDCrhnrkSZY8cBDsovnKqKGXcS5q-7o0,334
246
- accrete/contrib/user/templates/user/change_email.html,sha256=w9gBnU_O45YchY0EqD9mUK5oeDaD4cN92tHN80QjReA,815
247
- accrete/contrib/user/templates/user/change_password.html,sha256=1U7cI-xshsy_nhSj3TUqL3tPtYaBF17XFDgJHXXDzIw,1021
246
+ accrete/contrib/user/templates/user/change_email.html,sha256=frkoUCUwNtVSe9fhxmFmiM8T3RaFzLKOpAv5gZ7F-AY,473
247
+ accrete/contrib/user/templates/user/change_password.html,sha256=e9_8pGJoEj8FqfgrC_IcDiHuP3gB9BD8ayj-BU-R8kA,538
248
248
  accrete/contrib/user/templates/user/login.html,sha256=SXbxgq3baEch3ksGMsZqIws5heqAtpkdCLAFX3SLhtQ,2669
249
249
  accrete/contrib/user/templates/user/password_forgotten.html,sha256=aoNR9VUhLkDFLIQ3NUA2Oh19bFlro0ZXvcRUdGDNPnc,30
250
- accrete/contrib/user/templates/user/user_preferences.html,sha256=s-WmVASO0-5R2PY-y_ExS5kl9yOtMQpElVH3nKLqW0g,1646
250
+ accrete/contrib/user/templates/user/user_preferences.html,sha256=KkRwI1NdLTN0JlGEZIx38pjJ7robb08u6FpvzKfKLdc,1667
251
251
  accrete/contrib/user_registration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
252
252
  accrete/contrib/user_registration/admin.py,sha256=kwmGTsg4Hii-lsw9-UaJG7AhQ4k4SPi48GSrtpZ4YR4,119
253
253
  accrete/contrib/user_registration/apps.py,sha256=mYu3fuuubfjImeJHk4D_Wd6Edw2r3oUNXGcFbAkhir4,181
@@ -276,7 +276,7 @@ accrete/utils/forms.py,sha256=naV4urdfvmpxcx5Vf3Fo72M5Fy8DjGg5-vkysMKptbA,3914
276
276
  accrete/utils/log.py,sha256=BH0MBDweAjx30wGBO4F3sFhbgkSoEs7T1lLLjlYZNnA,407
277
277
  accrete/utils/models.py,sha256=2xTacvcpmDK_Bp4rAK7JdVLf8HU009LYNJ6eSpMgYZI,1014
278
278
  accrete/utils/views.py,sha256=mHfcKNDOiq-38LQ6tz9pDPQt-xs03b2qMxwJClprqu8,5022
279
- accrete-0.0.145.dist-info/METADATA,sha256=idt4aJsAK8BOUx3WvU8r2K5qCQlSPhuu9H5velgS74I,4953
280
- accrete-0.0.145.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
281
- accrete-0.0.145.dist-info/licenses/LICENSE,sha256=vHwb4Qnv8UfYKFiCWyTuRGsi49x19UQwHRCky3b2_NE,1057
282
- accrete-0.0.145.dist-info/RECORD,,
279
+ accrete-0.0.147.dist-info/METADATA,sha256=SjUX9VQ2V7Af4TeNeyI2hdhuUyifr_iCQlqBtWtcauw,4953
280
+ accrete-0.0.147.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
281
+ accrete-0.0.147.dist-info/licenses/LICENSE,sha256=vHwb4Qnv8UfYKFiCWyTuRGsi49x19UQwHRCky3b2_NE,1057
282
+ accrete-0.0.147.dist-info/RECORD,,