accrete 0.0.141__py3-none-any.whl → 0.0.142__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.
@@ -10,4 +10,8 @@ from . context import (
10
10
  OobContext,
11
11
  MessageContext
12
12
  )
13
- from .utils import modal_response, add_trigger
13
+ from .utils import (
14
+ modal_response,
15
+ detail_response,
16
+ add_trigger
17
+ )
@@ -36,7 +36,6 @@ class ListContext(Context):
36
36
  page: paginator.Page
37
37
  queryset: QuerySet
38
38
  endless_scroll: bool = True
39
- detail_enabled: bool = True
40
39
  filter: Filter = None
41
40
  column_count: int = 1
42
41
  column_height: int = 150
@@ -66,7 +65,6 @@ class TableContext(Context):
66
65
  queryset: QuerySet
67
66
  footer: dict = field(default_factory=dict)
68
67
  endless_scroll: bool = True
69
- detail_enabled: bool = True
70
68
  filter: Filter = None
71
69
 
72
70
 
@@ -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"
@@ -82,6 +82,7 @@ a {
82
82
  .input:focus, .input:focus-within {
83
83
  box-shadow: none;
84
84
  border-bottom: 1px solid var(--bulma-success);
85
+ //border-color: var(--bulma-success);
85
86
  }
86
87
 
87
88
  textarea {
@@ -0,0 +1,2 @@
1
+ {% load static %}
2
+ <link rel="icon" type="image/svg" href="{% static 'icons/Logo.svg' %}"/>
@@ -10,8 +10,8 @@
10
10
  {% block head %}
11
11
  <meta charset="utf-8">
12
12
  <meta name="viewport" content="width=device-width, initial-scale=1">
13
- {% block favicon %}<link rel="icon" type="image/svg" href="{% static 'icons/Logo.svg' %}"/>{% endblock %}
14
- <link rel="stylesheet" type="text/css" href="{% static "css/accrete.css" %}?v=3">
13
+ {% include 'ui/favicon.html' %}
14
+ <link rel="stylesheet" type="text/css" href="{% static "css/accrete.css" %}?v=4">
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
 
@@ -150,7 +150,7 @@
150
150
  <div class="mr-1">
151
151
  <p class="title is-5 px-2 py-1 my-1">{{ title }}</p>
152
152
  </div>
153
- <div class="buttons mx-2">
153
+ <div id="content-left-buttons" class="buttons mx-2">
154
154
  {% block header_left_buttons %}{% endblock %}
155
155
  </div>
156
156
  {% endblock %}
@@ -162,7 +162,7 @@
162
162
  <button id="pagination-prev-button" class="button"
163
163
  hx-get="{% if page.has_previous %}{% querystring page=page.previous_page_number %}{% else %}{% querystring page=page.paginator.num_pages %}{% endif %}"
164
164
  hx-replace-url="true"
165
- hx-select-oob="#content-left,#pagination"
165
+ hx-select-oob="#content-left,#pagination,#content-left-buttons"
166
166
  >
167
167
  &lt;
168
168
  </button>
@@ -180,7 +180,7 @@
180
180
  <button id="pagination-next-button" class="button"
181
181
  hx-get="{% if page.has_next %}{% querystring page=page.next_page_number %}{% else %}{% querystring page=1 %}{% endif %}"
182
182
  hx-replace-url="true"
183
- hx-select-oob="#content-left,#pagination"
183
+ hx-select-oob="#content-left,#pagination,#content-left-buttons"
184
184
  >
185
185
  &gt;
186
186
  </button>
@@ -4,17 +4,16 @@
4
4
  {% load partials %}
5
5
 
6
6
  {% block content_left %}
7
+ {% partialdef content inline=True %}
7
8
  <div class="fixed-grid has-{{ column_count }}-cols has-1-cols-mobile m-2">
8
9
  <div id="list-grid" class="grid m-0">
9
10
  {% for object in page.object_list %}
10
11
  <div id="list-entry-{{ object.pk }}" class="list-entry cell pb-0" style="height: {{ column_height }}{{ column_height_unit }}">
11
12
  <div class="box p-3"
12
13
  style="word-break: break-word; height: 100%; overflow-y: auto; {% if object.get_absolute_url %}cursor:pointer;{% endif %}"
13
- {% if object.get_absolute_url and detail_enabled %}
14
- hx-get="{{ object.get_absolute_url }}{% querystring %}" hx-target="#content-right-header" hx-select="#content-right-header" hx-select-oob="#content-right" hx-swap="outerHTML"
15
- x-on:click="$dispatch('unselect-list-entry'); showContentRight = true; selected = true; $nextTick(() => { $el.scrollIntoView( {block: 'nearest'} ) });" x-bind:class="selected ? 'box selected' : ''"
16
- {% elif object.get_absolute_url and not detail_enabled %}
17
- hx-get="{{ object.get_absolute_url }}{% querystring %}" hx-target="body" hx-push-url="true"
14
+ {% if object.get_absolute_url %}
15
+ hx-get="{{ object.get_absolute_url }}{% querystring %}" hx-swap="none"
16
+ x-on:click="$dispatch('unselect-list-entry'); selected = true; $nextTick(() => { $el.scrollIntoView( {block: 'nearest'} ) });" x-bind:class="selected ? 'box selected' : ''"
18
17
  {% endif %}
19
18
  x-data="{selected: false}" @unselect-list-entry.window="selected = false"
20
19
  >
@@ -40,4 +39,5 @@
40
39
  <progress id="endless-scroll-indicator" class="htmx-indicator progress is-small is-success" max="100">15%</progress>
41
40
  {% endif %}
42
41
  </div>
42
+ {% endpartialdef %}
43
43
  {% endblock %}
@@ -3,6 +3,7 @@
3
3
 
4
4
  <div id="{{ modal_id }}" x-data="{showModal: false, close() {$dispatch('close-modal-{{ modal_id }}')} }" x-ref="modal" class="modal is-active"
5
5
  @close-modal-{{ modal_id }}.window="showModal = false; setTimeout(() => $refs.modal.remove(), 200);"
6
+ @close-modals.window="showModal = false; setTimeout(() => $refs.modal.remove(), 200);"
6
7
  @keyup.escape.window="if (! $refs.{{ modal_id|xrefsave }}Indicator.classList.contains('htmx-request')) {$dispatch('close-modal-{{ modal_id }}')}"
7
8
  {% if blocking %}
8
9
  hx-indicator="#{{ modal_id }}-indicator"
@@ -17,11 +17,11 @@
17
17
  {% for object in page.object_list %}
18
18
  {% partialdef tr inline=True %}
19
19
  <tr id="tr-{{ object.pk }}"
20
- {% if detail_enabled %}
21
- style="cursor: pointer;"
22
- hx-get="{{ object.get_absolute_url }}{% querystring %}" hx-target="#content-right-header" hx-select="#content-right-header" hx-select-oob="#content-right" hx-swap="outerHTML"
23
- x-data="{selected: false}" @unselect-tr.window="selected = false"
24
- x-on:click="$dispatch('unselect-tr'); showContentRight = true; selected = true; $nextTick(() => { $el.scrollIntoView( {block: 'nearest'} ) });" x-bind:class="selected ? 'is-success' : ''"
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
25
  {% endif %}
26
26
  >
27
27
  {% partialdef td inline=True %}
@@ -1,6 +1,6 @@
1
- <label class="label mb-3">
1
+ <label class="label mt-2 mb-5">
2
2
  {{ field.label }}
3
- <p class="helptext">{{ field.help_text }}</p>
4
3
  {{ field }}
5
4
  <span class="has-text-danger is-size-7">{{ field.errors }}</span>
5
+ <p class="helptext">{{ field.help_text }}</p>
6
6
  </label>
@@ -11,12 +11,12 @@
11
11
  </select>
12
12
  <div id="{{ widget.attrs.id }}_display" class="input select py-1 pl-1" tabindex="0" x-ref="inputDisplay" aria-label="inputDisplay"
13
13
  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%"
14
- x-on:focus="open = true;"
14
+ x-on:focus="if (!$event.target.classList.contains('delete')) {open = true;}"
15
15
  x-on:keydown="if (![9, 27, 38, 40].includes($event.keyCode)) {$refs.searchInput.focus();}"
16
- x-on:mousedown.stop="if (open) {open = false; } else {open = true; $refs.searchInput.focus()}"
16
+ x-on:mousedown.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
- @click="
19
+ x-on:click="
20
20
  if ($event.target.classList.contains('delete')) {
21
21
  let val = $event.target.getAttribute('data-value');
22
22
  $refs.inputValue.querySelector(`option[value=${CSS.escape(val)}]`).remove();
@@ -1,8 +1,12 @@
1
1
  import ast
2
2
  import json
3
+
3
4
  from django.http import HttpRequest, HttpResponse
4
5
  from django.shortcuts import render
5
- from .context import ModalContext
6
+
7
+ from . import OobContext
8
+ from .context import BaseContext, ModalContext
9
+ from accrete.utils import render_templates
6
10
 
7
11
 
8
12
  def modal_response(
@@ -24,6 +28,35 @@ def modal_response(
24
28
  return res
25
29
 
26
30
 
31
+ def detail_response(
32
+ request: HttpRequest,
33
+ header_template: str,
34
+ content_template: str,
35
+ context: BaseContext | dict,
36
+ extra_content: str | None = None
37
+ ) -> HttpResponse:
38
+ if isinstance(context, BaseContext):
39
+ context = context.dict()
40
+ content = render_templates([
41
+ ('ui/message.html', context),
42
+ ('ui/oob.html', OobContext(
43
+ template=header_template,
44
+ swap='innerHTML:#content-right-header',
45
+ extra=context
46
+ ).dict()),
47
+ ('ui/oob.html', OobContext(
48
+ template=content_template,
49
+ swap='innerHTML:#content-right',
50
+ extra=context
51
+ ).dict())
52
+ ], request=request)
53
+ if extra_content:
54
+ content += extra_content
55
+ res = HttpResponse(content=content)
56
+ add_trigger(res, 'activate-content-right')
57
+ return res
58
+
59
+
27
60
  def add_trigger(
28
61
  response: [HttpResponse],
29
62
  trigger: dict | str,
@@ -40,5 +73,5 @@ def add_trigger(
40
73
  except SyntaxError:
41
74
  res_trigger = {response.headers[header]: ''}
42
75
  res_trigger.update(trigger)
43
- response.headers[header] = json.dumps(header)
76
+ response.headers[header] = json.dumps(res_trigger)
44
77
  return response
@@ -11,6 +11,7 @@ class ModelSearchSelect(widgets.NumberInput):
11
11
  def __init__(
12
12
  self,
13
13
  search_url: str,
14
+ search_kwargs: dict = None,
14
15
  search_parameter: str = 'search',
15
16
  limit: int | None = 5,
16
17
  hx_trigger_on_change: bool = False,
@@ -18,9 +19,10 @@ class ModelSearchSelect(widgets.NumberInput):
18
19
  ):
19
20
  super().__init__()
20
21
  self.search_url = search_url
22
+ self.search_kwargs = search_kwargs or {}
21
23
  self.search_parameter = search_parameter
22
24
  self.limit = limit
23
- self.hx_trigger_on_change = hx_trigger_on_change
25
+ self.hx_trigger_on_change = hx_trigger_on_change # trigger 'change' event on the actual input field
24
26
  self.choices = choices
25
27
 
26
28
  def get_context(self, name, value, attrs):
@@ -38,7 +40,7 @@ class ModelSearchSelect(widgets.NumberInput):
38
40
  'value_display': self.value_display(value),
39
41
  "attrs": self.build_attrs(self.attrs, attrs),
40
42
  "template_name": self.template_name,
41
- 'search_url': resolve_url(self.search_url),
43
+ 'search_url': resolve_url(self.search_url, **self.search_kwargs),
42
44
  'search_parameter': self.search_parameter,
43
45
  'hx_trigger_on_change': self.hx_trigger_on_change,
44
46
  'uuid': uuid
@@ -80,7 +82,7 @@ class ModelSearchSelectMulti(widgets.SelectMultiple):
80
82
  self.search_kwargs = search_kwargs or {}
81
83
  self.search_parameter = search_parameter
82
84
  self.limit = limit
83
- self.hx_trigger_on_change = hx_trigger_on_change
85
+ self.hx_trigger_on_change = hx_trigger_on_change # trigger 'change' event on the actual input field
84
86
  self.choices = choices
85
87
 
86
88
  def get_context(self, name, value, attrs):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: accrete
3
- Version: 0.0.141
3
+ Version: 0.0.142
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
@@ -60,16 +60,16 @@ accrete/contrib/system_mail/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2
60
60
  accrete/contrib/system_mail/views.py,sha256=xc1IQHrsij7j33TUbo-_oewy3vs03pw_etpBWaMYJl0,63
61
61
  accrete/contrib/system_mail/migrations/0001_initial.py,sha256=6cwkkRXGjXvwXoMjjgmWmcPyXSTlUbhW1vMiHObk9MQ,1074
62
62
  accrete/contrib/system_mail/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- accrete/contrib/ui/__init__.py,sha256=3kcANg-pw-KR_JdAV1C-EtgPceAQmYbNq5tUJ7e5X0E,267
63
+ accrete/contrib/ui/__init__.py,sha256=ziSWIhoBk2EhnkG7gGhMKSLSlgLICPm-M2RxdWAjrn0,300
64
64
  accrete/contrib/ui/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
65
65
  accrete/contrib/ui/apps.py,sha256=E0ao2ox6PQ3ldfeR17FXJUUJuGiWjm2DPCxHbPXGzls,152
66
- accrete/contrib/ui/context.py,sha256=689qnX9u3Nqrw8t08td38X2PoSSH935qm6sQj5MPznE,2680
66
+ accrete/contrib/ui/context.py,sha256=7FBNcPG77dU7asMomiRACP1bypE3lbsHXdg90MXbjf4,2616
67
67
  accrete/contrib/ui/filter.py,sha256=zLTWWSvsfvwBMNWgpZqP2kRKXCVW_50mhTQyJA36ywo,13323
68
68
  accrete/contrib/ui/middleware.py,sha256=QprWR8FXK9iMPIvLQAeYASaUJSW0uD9BHoYroMKrph0,1560
69
69
  accrete/contrib/ui/models.py,sha256=Vjc0p2XbAPgE6HyTF6vll98A4eDhA5AvaQqsc4kQ9AQ,57
70
70
  accrete/contrib/ui/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
71
71
  accrete/contrib/ui/urls.py,sha256=5XUfK85HYWYf7oopMoJEEYmQ6pNgHgZBErBEn97pBt4,337
72
- accrete/contrib/ui/utils.py,sha256=CDO2zVrBUhyCruHDPHdbG_bObozopZFolGTSxX-Lg6M,1253
72
+ accrete/contrib/ui/utils.py,sha256=CyDqwIUAOhZQ-p0MCEjWzk-qEYI1jn_NBBL-D7Oi63w,2193
73
73
  accrete/contrib/ui/views.py,sha256=5VUbP0jgMcLMv9-3AKxkV315RA0qXuw5PmTRejPc0Yg,1136
74
74
  accrete/contrib/ui/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
75
  accrete/contrib/ui/static/bulma/LICENSE,sha256=--fY7Bi3Lt7RXXnKc9pe756OJY9fGv-D5OmT5pdSJ5w,1080
@@ -169,11 +169,11 @@ accrete/contrib/ui/static/bulma/versions/bulma-no-helpers-prefixed.scss,sha256=N
169
169
  accrete/contrib/ui/static/bulma/versions/bulma-no-helpers.scss,sha256=gyRiEug6frpDJEaxZ7VybdApnmNS5R5A9Zn1R0yWLJg,335
170
170
  accrete/contrib/ui/static/bulma/versions/bulma-prefixed.scss,sha256=cDhte1VyFupdjYFXpUyQb7wGB8aUKDGYuKluZCY5CtA,133
171
171
  accrete/contrib/ui/static/css/accrete.css,sha256=uvPIU2FvJFnFwyvISjhrHVDC1OV9H1MsDU9id4HZiJg,6862
172
- accrete/contrib/ui/static/css/accrete.css.map,sha256=Eo6n6Y8gxB2gTSy8tirVO0hK8QDvHVD-gUclMI0chx0,3887
173
- accrete/contrib/ui/static/css/accrete.scss,sha256=P8QOS8Ku62XgkRdfDpLr_QEKNbtjokb7eLw-s9BvDZY,7164
172
+ accrete/contrib/ui/static/css/accrete.css.map,sha256=UFEDkXkiYpwyBsk0N3SVaAx316bMz0SPsGUUibpbfag,3887
173
+ accrete/contrib/ui/static/css/accrete.scss,sha256=ZuIwivXkinl4vPJTTy1J48yYXON5YjLLpUBOgCYgomg,7205
174
174
  accrete/contrib/ui/static/css/fa.css,sha256=wiz7ZSCn_btzhjKDQBms9Hx4sSeUYsDrTLg7roPstac,102641
175
175
  accrete/contrib/ui/static/css/icons.css,sha256=5550KHsaayeEtRaUdf0h7esQhyec-_5ZfecZ_sOC6v0,6334
176
- accrete/contrib/ui/static/css/.sass-cache/15adf1eed05371361b08787c918a7f18fc15be79/accrete.scssc,sha256=2t_Vpywj97M9g1eidjigXYlI4DYqTEGRx1f2_Sa15i0,71090
176
+ accrete/contrib/ui/static/css/.sass-cache/15adf1eed05371361b08787c918a7f18fc15be79/accrete.scssc,sha256=COJYmUzNErZkHzYxo3GVAqn7leI8NHOyD_YSii9XjHU,71246
177
177
  accrete/contrib/ui/static/icons/Logo.svg,sha256=hGZuxrAa-LRpFavFiF8Lnc7X9OQcqmb6Xl_dxx-27hM,1861
178
178
  accrete/contrib/ui/static/icons/accrete.svg,sha256=CWHJKIgk3hxL7xIaFSz2j1cK-eF1TroCbjcF58bgOIs,1024
179
179
  accrete/contrib/ui/static/js/alpine-3.14.9.js,sha256=tgDjY9mdlURNtUrL-y3v_smueSqpmgkim82geOW1VkM,44758
@@ -198,28 +198,29 @@ accrete/contrib/ui/templates/django/forms/widgets/select.html,sha256=uSfDpOQox2m
198
198
  accrete/contrib/ui/templates/django/forms/widgets/text.html,sha256=MSmLlQc7PsPoDLVtTOOiWNprrsPriNr712yFxaHyDIo,47
199
199
  accrete/contrib/ui/templates/django/forms/widgets/textarea.html,sha256=c9BTedqb3IkXLyVYd0p9pR8DFnsXCNGoxVBWZTk_Fic,278
200
200
  accrete/contrib/ui/templates/ui/content_right.html,sha256=3DQqbjAafaLtWUTGcBTCzObQEII35DVLfWQ6i6KDh6Y,379
201
+ accrete/contrib/ui/templates/ui/favicon.html,sha256=ZSK6qDGV4Cexgt0VA3KOHYN100yZHOFjfOiFZVudWg0,90
201
202
  accrete/contrib/ui/templates/ui/form_error.html,sha256=uPfIkK9OMpy5H147AxVxNAhG6dKBa9Wq64_f4tk5UU8,379
202
- accrete/contrib/ui/templates/ui/layout.html,sha256=iBrCGIdMTkBOG1oFCPdPiNse_X-CT97_JDVtVlPhxFE,13178
203
- accrete/contrib/ui/templates/ui/list.html,sha256=_GfXSrmecjsUDHUVO0_Z7mYZNOB4D3Uxz8G2mr0_jxE,2495
203
+ accrete/contrib/ui/templates/ui/layout.html,sha256=yDcZYMUdT3ZaqXPC1qg2Lme_dBnBUG2ZzGyrG0V6ces,13174
204
+ accrete/contrib/ui/templates/ui/list.html,sha256=o0YGM2O4SUlFcP5jMwdEOXVTCuEfanvd77yH7OBRRws,2208
204
205
  accrete/contrib/ui/templates/ui/list_update.html,sha256=mLQTCgkKfVI5jrgei-Upc1u87iXL0Q63uLzXHPwMyeo,110
205
206
  accrete/contrib/ui/templates/ui/message.html,sha256=3LPe1D5tmEhan7Ldrwy3MsK6cL1uZSKt6aDYQNtNVHc,732
206
- accrete/contrib/ui/templates/ui/modal.html,sha256=5qhu9JMr9J72MjuCGXFeCncyWqA8fWil_JSzQK62SIw,2141
207
+ accrete/contrib/ui/templates/ui/modal.html,sha256=2HwmqcUvGqWfKpuKO1EOfr5F1Lcwn7eChbu3XbrxvYg,2233
207
208
  accrete/contrib/ui/templates/ui/oob.html,sha256=lZHIBBYclefbGkKguS1A7vrtOhODJizbSRaGAAHDvG8,267
208
- accrete/contrib/ui/templates/ui/table.html,sha256=L7yBeaBX1GMbunUF4-wV3QOdbn6csKiTbDUmmaPaZaA,4044
209
+ accrete/contrib/ui/templates/ui/table.html,sha256=u6JJz1FykuljZiiC2hL83hy8RbMeXcSH8xuU1ji2SHc,3939
209
210
  accrete/contrib/ui/templates/ui/table_row_update.html,sha256=_7tKQlCXxczguYQ-6rkZRwukYBswsh3J2cwT4ke_sQM,445
210
211
  accrete/contrib/ui/templates/ui/filter/filter.html,sha256=RBYzmgQmgWKjVNrtZo9L98IW23vWLKSDQrZRb88VxrQ,758
211
212
  accrete/contrib/ui/templates/ui/filter/query_input.html,sha256=Qg_41fODXMgL534ohktb0QOxNzAEbaeBzAajJCEK7Pg,2035
212
213
  accrete/contrib/ui/templates/ui/filter/query_operator.html,sha256=h4WWLDnse6DK5Rb_0TTb0wqWxhvY_g3qjwx8_eENMuI,569
213
214
  accrete/contrib/ui/templates/ui/filter/query_params.html,sha256=wCkyZ9oSK_ivraNiL-UAY_9TflYw5EspnHHm6V6uOzk,9548
214
215
  accrete/contrib/ui/templates/ui/filter/query_tags.html,sha256=QSdM5w8UduT89x4S1ttdmzECBBnR-JipKOsf7rBCfL4,1562
215
- accrete/contrib/ui/templates/ui/templatetags/field.html,sha256=_1rka4KBasEWplcDf8bjQT9_iiSboBVC8GGgRY1HIYI,193
216
+ accrete/contrib/ui/templates/ui/templatetags/field.html,sha256=xQGixZBcgRfQVkRDDOcQVvz2blPia_h0sS6Deatgbkc,198
216
217
  accrete/contrib/ui/templates/ui/widgets/model_search_select.html,sha256=bk6m38_u_hbudQoXqzGunGUhvHRphVDlfKjkdcB9rEs,2748
217
- accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html,sha256=4MfRC01HZ8ML85aoSTHetf8F5_NEg7LW3lzX3bfVQ7o,4492
218
+ accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html,sha256=ojj3n6kAAWL-O8-dqGX2nqFWnPpLlbVvAyiZytSuq10,4599
218
219
  accrete/contrib/ui/templates/ui/widgets/model_search_select_options.html,sha256=4Wky0XkYWZlIKXTXzGjJkJTX3H9rhjXTY1hYai3Q3TA,242
219
220
  accrete/contrib/ui/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
221
  accrete/contrib/ui/templatetags/ui.py,sha256=_aKZoLwH_AcDszy3a3lehQsTg9zDaNeMmbSnjFK2wpM,4220
221
222
  accrete/contrib/ui/widgets/__init__.py,sha256=W_y10jfu37lygp4frXuKFSGec97gpNbWskG6DMhTKtY,69
222
- accrete/contrib/ui/widgets/search_select.py,sha256=oeU7GvTg4XeiNN9H74nQj3Plf-A9X4j7oD6-LcpLIvM,3552
223
+ accrete/contrib/ui/widgets/search_select.py,sha256=zKmOt54QsxUobNkDNEA2ut3pPAl8a5DqmEpcfam1l1I,3762
223
224
  accrete/contrib/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
225
  accrete/contrib/user/admin.py,sha256=0SGhVB5RcIsbCvrLf9ZSgIFH68XmGlPzovisMP8bb6c,710
225
226
  accrete/contrib/user/apps.py,sha256=oHDrAiHf-G57mZLyxqGJzRY2DbPprGFD-QgyVJG_ruI,156
@@ -273,7 +274,7 @@ accrete/utils/forms.py,sha256=JJ3EY1xcVP6L10i5cSVgh57G0uvFUjiVwUCpEqmBCos,3407
273
274
  accrete/utils/log.py,sha256=BH0MBDweAjx30wGBO4F3sFhbgkSoEs7T1lLLjlYZNnA,407
274
275
  accrete/utils/models.py,sha256=2xTacvcpmDK_Bp4rAK7JdVLf8HU009LYNJ6eSpMgYZI,1014
275
276
  accrete/utils/views.py,sha256=PsKpUFjxCm6_l_nfVs-cNIY0lNTdkocm2uohR3o9eEo,5025
276
- accrete-0.0.141.dist-info/METADATA,sha256=QLIHDvSd9FfMNLcAjZXpdmt8V50SY3laTZlfQhed0c0,4953
277
- accrete-0.0.141.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
278
- accrete-0.0.141.dist-info/licenses/LICENSE,sha256=vHwb4Qnv8UfYKFiCWyTuRGsi49x19UQwHRCky3b2_NE,1057
279
- accrete-0.0.141.dist-info/RECORD,,
277
+ accrete-0.0.142.dist-info/METADATA,sha256=dA1QJQ7xbXLO5cXqWqKdPuJWEbUfLZpjmKQcVjsbGdc,4953
278
+ accrete-0.0.142.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
279
+ accrete-0.0.142.dist-info/licenses/LICENSE,sha256=vHwb4Qnv8UfYKFiCWyTuRGsi49x19UQwHRCky3b2_NE,1057
280
+ accrete-0.0.142.dist-info/RECORD,,