accrete 0.0.153__py3-none-any.whl → 0.0.155__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.
Files changed (38) hide show
  1. accrete/channels.py +39 -0
  2. accrete/consumer.py +18 -0
  3. accrete/contrib/log/signals.py +1 -3
  4. accrete/contrib/ui/__init__.py +2 -1
  5. accrete/contrib/ui/config.py +9 -0
  6. accrete/contrib/ui/filter.py +1 -1
  7. accrete/contrib/ui/forms.py +1 -0
  8. accrete/contrib/ui/migrations/0005_theme_base_theme.py +18 -0
  9. accrete/contrib/ui/models.py +9 -0
  10. accrete/contrib/ui/response.py +31 -8
  11. accrete/contrib/ui/static/css/accrete.css +1 -6
  12. accrete/contrib/ui/static/css/accrete.css.map +1 -1
  13. accrete/contrib/ui/static/css/accrete.scss +2 -68
  14. accrete/contrib/ui/static/js/htmx.min.js +1 -1
  15. accrete/contrib/ui/static/js/ws.js +1 -0
  16. accrete/contrib/ui/templates/ui/filter/query_params.html +5 -0
  17. accrete/contrib/ui/templates/ui/layout.html +36 -17
  18. accrete/contrib/ui/templates/ui/list.html +4 -2
  19. accrete/contrib/ui/templates/ui/message.html +5 -3
  20. accrete/contrib/ui/templates/ui/table.html +2 -0
  21. accrete/contrib/ui/templates/ui/templatetags/tenant_quick_switch.html +14 -0
  22. accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html +2 -2
  23. accrete/contrib/ui/templatetags/ui.py +45 -1
  24. accrete/contrib/user/templates/user/accrete_navbar_end_dropdown.html +1 -1
  25. accrete/contrib/user/templates/user/user_preferences.html +1 -0
  26. accrete/fields.py +13 -0
  27. accrete/middleware.py +1 -0
  28. accrete/migrations/0009_alter_accessgroup_name.py +18 -2
  29. accrete/migrations/0010_alter_accessgroup_description.py +46 -0
  30. accrete/models.py +3 -3
  31. accrete/tenant.py +1 -0
  32. accrete/utils/__init__.py +4 -1
  33. accrete/utils/models.py +18 -0
  34. accrete/utils/views.py +1 -1
  35. {accrete-0.0.153.dist-info → accrete-0.0.155.dist-info}/METADATA +1 -1
  36. {accrete-0.0.153.dist-info → accrete-0.0.155.dist-info}/RECORD +38 -31
  37. {accrete-0.0.153.dist-info → accrete-0.0.155.dist-info}/WHEEL +0 -0
  38. {accrete-0.0.153.dist-info → accrete-0.0.155.dist-info}/licenses/LICENSE +0 -0
accrete/fields.py CHANGED
@@ -129,3 +129,16 @@ class TranslatedCharField(JSONField):
129
129
  if form_class is None:
130
130
  form_class = forms.CharField
131
131
  return form_class(**defaults)
132
+
133
+
134
+ class TranslatedTextField(TranslatedCharField):
135
+
136
+ def formfield(self, form_class=None, choices_form_class=None, **kwargs):
137
+ if form_class is None:
138
+ form_class = forms.CharField
139
+ kwargs.update(widget=forms.Textarea)
140
+ return super().formfield(
141
+ form_class=form_class,
142
+ choices_form_class=choices_form_class,
143
+ **kwargs
144
+ )
accrete/middleware.py CHANGED
@@ -9,6 +9,7 @@ _logger = logging.getLogger(__name__)
9
9
 
10
10
 
11
11
  class TenantMiddleware(MiddlewareMixin):
12
+
12
13
  @staticmethod
13
14
  def get_tenant_id_from_request(request):
14
15
  tenant_id = (
@@ -10,10 +10,26 @@ def char_to_translated_char(apps, schema):
10
10
  AccessGroup = apps.get_model('accrete', 'AccessGroup')
11
11
  default_lang = getattr(settings, 'LANGUAGE_CODE', 'en-us')
12
12
  for group in AccessGroup.objects.all():
13
- group.name = json.dumps({default_lang: group.name})
13
+ try:
14
+ name = json.dumps(json.loads(group.name).get(default_lang))
15
+ if not name:
16
+ name = None
17
+ except Exception:
18
+ name = group.name or None
19
+ group.name = name
14
20
  group.save()
15
21
 
16
22
 
23
+ def translated_to_char(apps, schema):
24
+ AccessGroup = apps.get_model('accrete', 'AccessGroup')
25
+ default_lang = getattr(settings, 'LANGUAGE_CODE', 'en-us')
26
+ for group in AccessGroup.objects.all():
27
+ try:
28
+ group.name = json.loads(group.name).get(default_lang, '')
29
+ except Exception:
30
+ continue
31
+
32
+
17
33
  class Migration(migrations.Migration):
18
34
 
19
35
  dependencies = [
@@ -21,7 +37,7 @@ class Migration(migrations.Migration):
21
37
  ]
22
38
 
23
39
  operations = [
24
- migrations.RunPython(char_to_translated_char),
40
+ migrations.RunPython(char_to_translated_char, translated_to_char),
25
41
  migrations.AlterField(
26
42
  model_name='accessgroup',
27
43
  name='name',
@@ -0,0 +1,46 @@
1
+ # Generated by Django 5.2.7 on 2025-10-04 06:20
2
+
3
+ import json
4
+ import accrete.fields
5
+ from django.db import migrations
6
+ from django.conf import settings
7
+
8
+
9
+ def char_to_translated_char(apps, schema):
10
+ AccessGroup = apps.get_model('accrete', 'AccessGroup')
11
+ default_lang = getattr(settings, 'LANGUAGE_CODE', 'en-us')
12
+ for group in AccessGroup.objects.all():
13
+ try:
14
+ description = json.dumps(json.loads(group.description).get(default_lang))
15
+ if not description:
16
+ description = None
17
+ except Exception:
18
+ description = group.description or None
19
+ group.description = description
20
+ group.save()
21
+
22
+
23
+ def translated_to_char(apps, schema):
24
+ AccessGroup = apps.get_model('accrete', 'AccessGroup')
25
+ default_lang = getattr(settings, 'LANGUAGE_CODE', 'en-us')
26
+ for group in AccessGroup.objects.all():
27
+ try:
28
+ group.description = json.loads(group.description).get(default_lang, '')
29
+ except Exception:
30
+ continue
31
+
32
+
33
+ class Migration(migrations.Migration):
34
+
35
+ dependencies = [
36
+ ('accrete', '0009_alter_accessgroup_name'),
37
+ ]
38
+
39
+ operations = [
40
+ migrations.RunPython(char_to_translated_char, translated_to_char),
41
+ migrations.AlterField(
42
+ model_name='accessgroup',
43
+ name='description',
44
+ field=accrete.fields.TranslatedTextField(blank=True, null=True, verbose_name='Description'),
45
+ ),
46
+ ]
accrete/models.py CHANGED
@@ -4,7 +4,7 @@ from django.conf import settings
4
4
  from django.utils.translation import gettext_lazy as _
5
5
  from accrete.tenant import get_tenant
6
6
  from accrete.managers import TenantManager, MemberManager, AccessGroupManager
7
- from accrete.fields import TranslatedCharField
7
+ from accrete.fields import TranslatedCharField, TranslatedTextField
8
8
 
9
9
 
10
10
  class TenantModel(models.Model):
@@ -138,7 +138,7 @@ class AccessGroup(models.Model):
138
138
  verbose_name=_('Name')
139
139
  )
140
140
 
141
- description = models.TextField(
141
+ description = TranslatedTextField(
142
142
  verbose_name=_('Description'),
143
143
  null=True,
144
144
  blank=True
@@ -160,7 +160,7 @@ class AccessGroup(models.Model):
160
160
  )
161
161
 
162
162
  def __str__(self):
163
- return self.name
163
+ return f'{self.name} ({self.get_apply_on_display()})'
164
164
 
165
165
 
166
166
  class MemberAccessGroupRel(models.Model):
accrete/tenant.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import contextvars
2
2
  import logging
3
3
  import time
4
+
4
5
  from django.apps import apps
5
6
  from django.db.models import Q, QuerySet
6
7
 
accrete/utils/__init__.py CHANGED
@@ -14,4 +14,7 @@ from .views import (
14
14
  method_not_allowed,
15
15
  render_templates
16
16
  )
17
- from .models import get_related_model
17
+ from .models import (
18
+ get_related_model,
19
+ translated_db_value
20
+ )
accrete/utils/models.py CHANGED
@@ -1,3 +1,5 @@
1
+ import json
2
+ from django.db import connection
1
3
  from django.db.models import Model, Field
2
4
 
3
5
 
@@ -25,3 +27,19 @@ def get_related_field(model: type[Model], field_path: str) -> Field:
25
27
  rel_path = '__'.join(parts[:-1])
26
28
  rel_model, _ = get_related_model(model, rel_path)
27
29
  return rel_model._meta.get_field(parts[-1])
30
+
31
+
32
+ def translated_db_value(instance: Model, field: str) -> dict:
33
+ if not instance.pk:
34
+ return dict()
35
+ with connection.cursor() as cr:
36
+ query = """SELECT %s FROM %s WHERE id = %s""" % (
37
+ field,
38
+ instance._meta.db_table,
39
+ instance.pk
40
+ )
41
+ cr.execute(query)
42
+ row = cr.fetchone()
43
+ row = row and row[0]
44
+ db_value = row and json.loads(row) or dict()
45
+ return db_value
accrete/utils/views.py CHANGED
@@ -67,7 +67,7 @@ def parse_querystring(model: type[Model], query_string: str) -> Q:
67
67
  """
68
68
  param: query_string: JSON serializable string
69
69
  Parses
70
- [{"term": value}, "&", [{t"erm": value}, "|", {"~term": value}]]
70
+ [{"term": value}, "&", [{"term": value}, "|", {"~term": value}]]
71
71
  to
72
72
  Q(term=value) & (Q(term=value) | ~Q(term=value))
73
73
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: accrete
3
- Version: 0.0.153
3
+ Version: 0.0.155
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
@@ -1,15 +1,17 @@
1
1
  accrete/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  accrete/admin.py,sha256=sK7jzjVTdAPim3TnOluRdorRZYVt2Rv8vx7Bw7dix-I,1308
3
3
  accrete/apps.py,sha256=F7ynMLHJr_6bRujWtZVUzCliY2CGKiDvyUmL4F68L2E,146
4
+ accrete/channels.py,sha256=GCatQ4JM0Ailophvuf02xjfdhS4z5U90l4BoSCDKLIs,1291
4
5
  accrete/config.py,sha256=1Yubvz5PVdCsX0tA7HvazhtnvCvgCoEl33_dR8SHpb8,392
6
+ accrete/consumer.py,sha256=Vnxete60NfUxogyBiI3kwULbSyeEOF93JYvq6L_cgEg,441
5
7
  accrete/context_processors.py,sha256=DySglwyD2TwPsxhElVkYDvyBBUJabEKGMiKCLe0KN4Q,148
6
- accrete/fields.py,sha256=iaEi8Lb2W5AJ4MZpQ5W90LILKN2u_BRsZB_GU7UOcSA,4749
8
+ accrete/fields.py,sha256=6eH1ipmdqxpCRhDcAkfICffWkM0WkzWIADTsD2SXCm0,5149
7
9
  accrete/forms.py,sha256=H2hPQemslRLvTVV0Wl1TfUmTc5wU3Z98nQTMiLMliqo,1288
8
10
  accrete/managers.py,sha256=p5HGN2EPjIeI9R263kKprDZcBd3IMMKT8Jfq8w2CB7g,1846
9
- accrete/middleware.py,sha256=Xt8iU8K8nBsReGEKrbNsQMWRYwy50MLpQx4fx4QF110,2305
10
- accrete/models.py,sha256=XY0PVVJ49QZ8pZUHdk71e0Qdu5po03lfd1p5u9o5N0M,5694
11
+ accrete/middleware.py,sha256=CaqGfDLUd1hvOtx1XJlR6M5sgSYgl2sTPbBivvXw0aM,2306
12
+ accrete/models.py,sha256=24NxD9kvgu1PrwuxdWFRT-29X11BLY8IxcFLHn57MLk,5755
11
13
  accrete/storage.py,sha256=Jp3oE_uPMqgarjS_G49KDFrR2eSe4XuIJK9oAF_QBxk,1288
12
- accrete/tenant.py,sha256=vfalmdfDsjYbl-ol3RqvsTC-YnuQs0JuSC7o85UInG0,2289
14
+ accrete/tenant.py,sha256=2H38-M9xBkChWpZ3swjQ08StCmZp5DNDmm19jHVDDSY,2290
13
15
  accrete/tests.py,sha256=Agltbzwwh5htvq_Qi9vqvxutzmg_GwgPS_N19xJZRlw,7197
14
16
  accrete/urls.py,sha256=goDFR-yhOlLLy7AMi9pmh2aBkxdtZtwXNg6mwI2zPhU,227
15
17
  accrete/views.py,sha256=YC6QUhIEmu80pil-aonlw3IYuPF3WP3fN2G-B5wsunY,6354
@@ -29,7 +31,7 @@ accrete/contrib/log/config.py,sha256=vRzPVbiUfpo5NGtgiJv5mEKR_h3qsYI_brxjni6-Z-Y
29
31
  accrete/contrib/log/helper.py,sha256=n5QXPf4Lo8NvxDaJifZs4QVNJdiNyr17e_z26QT9V-U,2514
30
32
  accrete/contrib/log/models.py,sha256=XRElQUV6Obj4BCMTXE85jcpEup7m-MCRVfquxmt9_Xc,6210
31
33
  accrete/contrib/log/queries.py,sha256=IsdzgcKkCeKE8pOa7zOFuaHcJUGG0wyr8EG1CrRrZRw,1189
32
- accrete/contrib/log/signals.py,sha256=OTV4Ajd3oiICLPkLBjfGmeE_FNDsUmThbwQ-K6BH6_k,2174
34
+ accrete/contrib/log/signals.py,sha256=q4ZjAoPBCWXnn--a42J9NKzU3cfadjNBdjoGcBLjfus,2147
33
35
  accrete/contrib/log/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
34
36
  accrete/contrib/log/views.py,sha256=xc1IQHrsij7j33TUbo-_oewy3vs03pw_etpBWaMYJl0,63
35
37
  accrete/contrib/log/migrations/0001_initial.py,sha256=wkGMfaYc09dOuJXY0JengDBTkS98rMutUzmEAb6eK3E,2130
@@ -60,14 +62,15 @@ accrete/contrib/system_mail/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2
60
62
  accrete/contrib/system_mail/views.py,sha256=xc1IQHrsij7j33TUbo-_oewy3vs03pw_etpBWaMYJl0,63
61
63
  accrete/contrib/system_mail/migrations/0001_initial.py,sha256=6cwkkRXGjXvwXoMjjgmWmcPyXSTlUbhW1vMiHObk9MQ,1074
62
64
  accrete/contrib/system_mail/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- accrete/contrib/ui/__init__.py,sha256=DTl4vnTWdYTdChIPv--iYzRGAKi9uVx6NGxrF36iO6Q,365
65
+ accrete/contrib/ui/__init__.py,sha256=MNeG4PxPZIY_mc_AbxgnrX07OdYvSQCGX8jL1qTQ0t4,391
64
66
  accrete/contrib/ui/admin.py,sha256=MKShWrFexu9_k-lcCAwn1i1SlKqFV2ScCLo_pU5dX4E,245
65
67
  accrete/contrib/ui/apps.py,sha256=E0ao2ox6PQ3ldfeR17FXJUUJuGiWjm2DPCxHbPXGzls,152
66
- accrete/contrib/ui/filter.py,sha256=WWELsSZF-v7FxAWw1gGvYHFBB0BhmQWuWacI_joTKas,13703
67
- accrete/contrib/ui/forms.py,sha256=k2C1O55CDE6uQiIoE4URtkOPT_TP_W0lpHmUVVqlWFo,2023
68
+ accrete/contrib/ui/config.py,sha256=g2nvcsFq9aTleauTRUbV7TJGQ5I6xId-LpeSgoWNIXI,192
69
+ accrete/contrib/ui/filter.py,sha256=MZfy6p4Q6TVvtjl5nF7_6CemOe1twbk0Bj5LWptjcwM,13722
70
+ accrete/contrib/ui/forms.py,sha256=Ul3daXNwWLN1G3ppwOvNztrilIAGeLwNY1a-g-njrjQ,2049
68
71
  accrete/contrib/ui/middleware.py,sha256=fVjKeDXnGiJw7NRYZK3nCkj7g-MAainiBl-VhpE3XdQ,1792
69
- accrete/contrib/ui/models.py,sha256=VcUZzfZCxUpAPXgZUy9PaSx9IZ1C0wNKWOZUNJRm-lQ,3225
70
- accrete/contrib/ui/response.py,sha256=9ecshf8GEg2nGN42b4UlS5r89Z2AESX3vXfR4fRxQek,13880
72
+ accrete/contrib/ui/models.py,sha256=ikwd7vHuq0R_qcr_gczcHHRvkXwr-zJMrfrriIUJD7U,3426
73
+ accrete/contrib/ui/response.py,sha256=0wkGpn6XJQRBDA6AYJKtnkTx_jzkJXqrLWE4i6RHVKQ,14635
71
74
  accrete/contrib/ui/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
72
75
  accrete/contrib/ui/urls.py,sha256=5XUfK85HYWYf7oopMoJEEYmQ6pNgHgZBErBEn97pBt4,337
73
76
  accrete/contrib/ui/views.py,sha256=foVB7rx3_FWU9fkPdUKiqkVsWraAyfenC2OTNyYt7lI,4644
@@ -75,6 +78,7 @@ accrete/contrib/ui/migrations/0001_initial.py,sha256=fZyUj3q1grEJT_9a4UYGT10OZEn
75
78
  accrete/contrib/ui/migrations/0002_alter_theme_color_danger_alter_theme_color_link_and_more.py,sha256=FQDCkb9qYF-qULZOEiJwruXjDvWuLpHPpku1ZsQKRSE,1244
76
79
  accrete/contrib/ui/migrations/0003_alter_theme_check_user_or_tenant.py,sha256=HwOOKR7w0zh_mY55gjPK7KdVhhiNAv-_68wOoBRtbfU,784
77
80
  accrete/contrib/ui/migrations/0004_theme_force_tenant_theme.py,sha256=YkH1NBiDGpSt8jatpXHGkOZmkI0Zg_cimalhEHGfuLw,503
81
+ accrete/contrib/ui/migrations/0005_theme_base_theme.py,sha256=guidRLiBg3v0v8-hxckVq-yVmEDMltVCuLKwByuj58A,465
78
82
  accrete/contrib/ui/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
83
  accrete/contrib/ui/static/bulma/LICENSE,sha256=--fY7Bi3Lt7RXXnKc9pe756OJY9fGv-D5OmT5pdSJ5w,1080
80
84
  accrete/contrib/ui/static/bulma/README.md,sha256=hOiUDWZBD3J2-V4SZeWZ_u9Z16YD_eaD0J_tZdjjkIY,14427
@@ -172,9 +176,9 @@ accrete/contrib/ui/static/bulma/versions/bulma-no-dark-mode.scss,sha256=1tXoYLlK
172
176
  accrete/contrib/ui/static/bulma/versions/bulma-no-helpers-prefixed.scss,sha256=NRrD7Euz_mfDI02D92a63M6H4UhArjhWy3g5DIhQr5o,366
173
177
  accrete/contrib/ui/static/bulma/versions/bulma-no-helpers.scss,sha256=gyRiEug6frpDJEaxZ7VybdApnmNS5R5A9Zn1R0yWLJg,335
174
178
  accrete/contrib/ui/static/bulma/versions/bulma-prefixed.scss,sha256=cDhte1VyFupdjYFXpUyQb7wGB8aUKDGYuKluZCY5CtA,133
175
- accrete/contrib/ui/static/css/accrete.css,sha256=zObsO8Uizb5aFUuej6fatGWMmfCLRh_k-4WXr_DnXmQ,6862
176
- accrete/contrib/ui/static/css/accrete.css.map,sha256=CIbjSFCtn3usK8vc5W8YMmB1wrLqi6oihv2IFLyQHAc,4063
177
- accrete/contrib/ui/static/css/accrete.scss,sha256=32YiVmmD0HcV1PkbDLZkEkFLGLVQELsclVmA3KZ1DNs,8701
179
+ accrete/contrib/ui/static/css/accrete.css,sha256=6WhaocfxQeQktiY3nZWOTdXNMNypiJzN5DbOe7fSqMk,6743
180
+ accrete/contrib/ui/static/css/accrete.css.map,sha256=oXBXlTSW-A2AG9N0WwMHFsghRlzW--p5ISNriXiD66Y,3985
181
+ accrete/contrib/ui/static/css/accrete.scss,sha256=XhkFO6NjHBFY4E9IPFnwHG34s9l3hWs6R8sVGNPz2mY,6705
178
182
  accrete/contrib/ui/static/css/fa.css,sha256=wiz7ZSCn_btzhjKDQBms9Hx4sSeUYsDrTLg7roPstac,102641
179
183
  accrete/contrib/ui/static/css/icons.css,sha256=5550KHsaayeEtRaUdf0h7esQhyec-_5ZfecZ_sOC6v0,6334
180
184
  accrete/contrib/ui/static/icons/Logo.svg,sha256=hGZuxrAa-LRpFavFiF8Lnc7X9OQcqmb6Xl_dxx-27hM,1861
@@ -183,7 +187,8 @@ accrete/contrib/ui/static/js/alpine-3.14.9.js,sha256=tgDjY9mdlURNtUrL-y3v_smueSq
183
187
  accrete/contrib/ui/static/js/alpine-focus-3.14.9.js,sha256=Ayau4EuKva7SPKujcCUpGluBqBLa-TgSi_4eRIRVc-8,14937
184
188
  accrete/contrib/ui/static/js/alpine-sort-3.14.9.js,sha256=tFKFh4yWJOYN69Holh9DDjSctbLmWsWgHQLDroJAnjw,38101
185
189
  accrete/contrib/ui/static/js/filter.js,sha256=XZ9BDoIwXM1jVp1uvefbbnua2sJ9Y1EVraeDuzQIm8Y,4578
186
- accrete/contrib/ui/static/js/htmx.min.js,sha256=SRlVzRgQdH19e5zLk2QAr7dg4G0l1T5FcrZLZWOyeE4,50387
190
+ accrete/contrib/ui/static/js/htmx.min.js,sha256=tnaO7U86-Ftzp1BUcBvWDhfKxxiu8rf2slTl4OIEVhY,51007
191
+ accrete/contrib/ui/static/js/ws.js,sha256=Pw7TU95j30Vug92V4eldgIMA-cAD7g6LoR23UT0tfI0,5152
187
192
  accrete/contrib/ui/static/webfonts/fa-brands-400.ttf,sha256=VlbVlrxZcWWkIYL2eyufF9KuR6nj7xsEK5pylzlzBwU,207972
188
193
  accrete/contrib/ui/static/webfonts/fa-brands-400.woff2,sha256=OokkzVIDooYocWrttc7wlD2kw7ROP_zukKsGOHtBxJA,117372
189
194
  accrete/contrib/ui/static/webfonts/fa-regular-400.ttf,sha256=XQLcm4WOPIWnlPh-N5hX9P7cTibPFQAXFKmg4LHSKU0,68004
@@ -206,26 +211,27 @@ accrete/contrib/ui/templates/ui/custom_theme.html,sha256=son43yhp-7ROTpRU9SY3pSg
206
211
  accrete/contrib/ui/templates/ui/detail.html,sha256=V0HccLE0Pb-5haQFpvIoWZfF1UOrvMwPYv2UTwRnt_A,293
207
212
  accrete/contrib/ui/templates/ui/favicon.html,sha256=ZSK6qDGV4Cexgt0VA3KOHYN100yZHOFjfOiFZVudWg0,90
208
213
  accrete/contrib/ui/templates/ui/form_error.html,sha256=WWqfFWyJ_LCzm5IkxXztn23GFak5wyM2HZcmiZ3Eq9s,417
209
- accrete/contrib/ui/templates/ui/layout.html,sha256=diIPA1OIpQb5vBiER0L1X68lhgRZvWfAcC-BV29M2EE,14015
210
- accrete/contrib/ui/templates/ui/list.html,sha256=eXQjYOz_-I7qp_5DH8fmIEHfFNJT_GJoabWMHxDnprQ,2302
214
+ accrete/contrib/ui/templates/ui/layout.html,sha256=2Geugdxea9Qw8LFsePg9-BE4NtpeI3Ems1WarpyqC2A,15020
215
+ accrete/contrib/ui/templates/ui/list.html,sha256=jzxklYBF_oDLKvXxYe-h3x2r5PK04A8flWnZ5-qZ4rM,2392
211
216
  accrete/contrib/ui/templates/ui/list_update.html,sha256=CUV-OJCieOBrtSbh0vAoyZYL-_e9lP7vQrY4j1TlT7M,276
212
- accrete/contrib/ui/templates/ui/message.html,sha256=iw6ne9O8ZpaGNPT6CSaeC7KZLn8sc1-sfXguHt9pJp4,707
217
+ accrete/contrib/ui/templates/ui/message.html,sha256=BGF00gdPSCGrWoZBi6d7U-ohNkDuF0ODKp4_fy0jtTU,856
213
218
  accrete/contrib/ui/templates/ui/modal.html,sha256=sJI7YwTHPvirNlig69A08z7sk_5aYRmyeAUWzm1ceVs,3464
214
219
  accrete/contrib/ui/templates/ui/oob.html,sha256=lZHIBBYclefbGkKguS1A7vrtOhODJizbSRaGAAHDvG8,267
215
- accrete/contrib/ui/templates/ui/table.html,sha256=ow52Gn9IDSlFfg3vwwan9-688nQvgnVU1kwfUuyp0tc,3759
220
+ accrete/contrib/ui/templates/ui/table.html,sha256=ATxvStGMsc0Fz4FkUD2xZs_xhbY1-Zn1zGTrBE_w62s,3792
216
221
  accrete/contrib/ui/templates/ui/table_row_update.html,sha256=v3YHCzQbGbp3zC6zmJ_EvNvtgvCH_84R6gUsH5mpC0k,439
217
222
  accrete/contrib/ui/templates/ui/filter/filter.html,sha256=GOTXouHH4RSCFsIzg1UPFAcmKaNNxTPmRj5Bx9K1m4o,759
218
223
  accrete/contrib/ui/templates/ui/filter/query_input.html,sha256=OYXO0l5kVOvsnOYUsa8KaME6tC5AV8C1mJgDtW7nQHE,1975
219
224
  accrete/contrib/ui/templates/ui/filter/query_operator.html,sha256=h4WWLDnse6DK5Rb_0TTb0wqWxhvY_g3qjwx8_eENMuI,569
220
- accrete/contrib/ui/templates/ui/filter/query_params.html,sha256=wCkyZ9oSK_ivraNiL-UAY_9TflYw5EspnHHm6V6uOzk,9548
225
+ accrete/contrib/ui/templates/ui/filter/query_params.html,sha256=9Kyb-dQRitjeruIEx1HJUI0elznb0KSV5fJR6keWi_4,9994
221
226
  accrete/contrib/ui/templates/ui/filter/query_tags.html,sha256=ooeIwIwvhT0fG5SMAuLoMquTVUmYf5n50DM-3gC_iAo,1567
222
227
  accrete/contrib/ui/templates/ui/templatetags/field.html,sha256=3wkjN-OJ6Em0_xskDWak9gpOVbNaXGU3RAMsxBwPH-8,3141
228
+ accrete/contrib/ui/templates/ui/templatetags/tenant_quick_switch.html,sha256=5AZ_asMZ5gX7gM3_qD65EXxC9kuTRJLUmNcx4RzHi6Y,926
223
229
  accrete/contrib/ui/templates/ui/widgets/date_weekday.html,sha256=l5k7lFJjdao49Q6oyGf20go-bXJFlidTuUVKYOuISGE,628
224
230
  accrete/contrib/ui/templates/ui/widgets/model_search_select.html,sha256=Pv28g0CRBTeW--v9LoP39NDDc18RGEC8Hu9MAN-Tsi0,2996
225
- accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html,sha256=J26lubDvQi1gOHJT_TTahCU23aHm9LkjttLftD1dUyA,4673
231
+ accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html,sha256=stEhZXCvaj8jjRTg1chwQmyWPeseQaDrLPr257vNtGo,4697
226
232
  accrete/contrib/ui/templates/ui/widgets/model_search_select_options.html,sha256=4Wky0XkYWZlIKXTXzGjJkJTX3H9rhjXTY1hYai3Q3TA,242
227
233
  accrete/contrib/ui/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
- accrete/contrib/ui/templatetags/ui.py,sha256=6kfm1BH6lH6QSAcxF_nbcgzrKV1Q6MprZ9d-yD2BleU,6039
234
+ accrete/contrib/ui/templatetags/ui.py,sha256=7KmBsQ-q9poHSs2EC5pkkMC-pp9b-kj3RMymggZ4UGM,7461
229
235
  accrete/contrib/ui/widgets/__init__.py,sha256=2mcvXyFNdFkqOVHGUBDbLmbaJnWnoFaS1uc4dqmdtpE,106
230
236
  accrete/contrib/ui/widgets/date_weekday.py,sha256=r6VNE8dwGVZq4jJLGF_MP320-yp482Iykh-WsjeY9XU,148
231
237
  accrete/contrib/ui/widgets/search_select.py,sha256=CnWQp2JpzjNJy9arG_sFWoRvVs29x9OzdgULm7yh7d0,3745
@@ -252,12 +258,12 @@ accrete/contrib/user/migrations/0008_remove_user_no_email_for_managed_user_and_m
252
258
  accrete/contrib/user/migrations/0009_alter_user_theme.py,sha256=o5s0NCEhauE72Z35q3ggsy3-L8PhFmRnQ2x4dlR1aQE,517
253
259
  accrete/contrib/user/migrations/0010_alter_user_theme.py,sha256=l2raJRmLErPCBqep9-v7kor4jzmG27wAT0ZWTwkFTk0,510
254
260
  accrete/contrib/user/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
255
- accrete/contrib/user/templates/user/accrete_navbar_end_dropdown.html,sha256=suPoeu1Dm49rDCrhnrkSZY8cBDsovnKqKGXcS5q-7o0,334
261
+ accrete/contrib/user/templates/user/accrete_navbar_end_dropdown.html,sha256=kp0_IGY3aRXktrlauruW0ciF84rpR0VzI0PUw7rzSag,351
256
262
  accrete/contrib/user/templates/user/change_email.html,sha256=frkoUCUwNtVSe9fhxmFmiM8T3RaFzLKOpAv5gZ7F-AY,473
257
263
  accrete/contrib/user/templates/user/change_password.html,sha256=e9_8pGJoEj8FqfgrC_IcDiHuP3gB9BD8ayj-BU-R8kA,538
258
264
  accrete/contrib/user/templates/user/login.html,sha256=kzdRosCXadRKdwVRulQTjtVCDx1wmp1VRNsBOKCvCs8,1986
259
265
  accrete/contrib/user/templates/user/password_forgotten.html,sha256=aoNR9VUhLkDFLIQ3NUA2Oh19bFlro0ZXvcRUdGDNPnc,30
260
- accrete/contrib/user/templates/user/user_preferences.html,sha256=toSPd_yjKIjX8h-85D3RuO6b-yEancZRF3V4lx1H128,2767
266
+ accrete/contrib/user/templates/user/user_preferences.html,sha256=QM1mnZUoFzNBKER0jEa0eM-xDXHqKWgzzL5PwbEqujk,2857
261
267
  accrete/contrib/user_registration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
262
268
  accrete/contrib/user_registration/admin.py,sha256=kwmGTsg4Hii-lsw9-UaJG7AhQ4k4SPi48GSrtpZ4YR4,119
263
269
  accrete/contrib/user_registration/apps.py,sha256=mYu3fuuubfjImeJHk4D_Wd6Edw2r3oUNXGcFbAkhir4,181
@@ -279,15 +285,16 @@ accrete/migrations/0005_accessgroup_apply_on_alter_member_access_groups_and_more
279
285
  accrete/migrations/0006_alter_member_user.py,sha256=l1m1uaP1q8yaCqX2cWdzRcL-fe4VLb1SqQmP966weNQ,643
280
286
  accrete/migrations/0007_accessgroup_description.py,sha256=T8BX0gSckC_fM_uD6a5-fdD-ucAn54vyY7_8o0tDIXA,429
281
287
  accrete/migrations/0008_alter_member_access_groups_and_more.py,sha256=U2VpQJkLsajpL-rvzx-co5V3jYSxMnvkvjSznyVkr34,782
282
- accrete/migrations/0009_alter_accessgroup_name.py,sha256=DsPVmUeBfkvXWITIwgRhcmI7kUGyok8aAp4m5Nmwq5Y,836
288
+ accrete/migrations/0009_alter_accessgroup_name.py,sha256=JD5j-7syUmUtmxfwxwK-nbHhqx4CIXU79CQrEFg5_hA,1360
289
+ accrete/migrations/0010_alter_accessgroup_description.py,sha256=1oRSg_coeqbNtQOYp4jsp1H5TMGK0gpJIGdjyXyJp60,1454
283
290
  accrete/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
284
- accrete/utils/__init__.py,sha256=xXpPIImuZFRFIc8Sg8j6-OWOiJZGAtX4iphdXcxAYM0,328
291
+ accrete/utils/__init__.py,sha256=ZqTvAA625k3NVZHXb4PpPOVAIV3gUESfCe6Ad2f1wuM,361
285
292
  accrete/utils/dates.py,sha256=apM6kt6JhGrKgoT0jfav1W-8AUVTxNc9xt3fJQ2n0JI,1492
286
293
  accrete/utils/forms.py,sha256=naV4urdfvmpxcx5Vf3Fo72M5Fy8DjGg5-vkysMKptbA,3914
287
294
  accrete/utils/log.py,sha256=BH0MBDweAjx30wGBO4F3sFhbgkSoEs7T1lLLjlYZNnA,407
288
- accrete/utils/models.py,sha256=2xTacvcpmDK_Bp4rAK7JdVLf8HU009LYNJ6eSpMgYZI,1014
289
- accrete/utils/views.py,sha256=mHfcKNDOiq-38LQ6tz9pDPQt-xs03b2qMxwJClprqu8,5022
290
- accrete-0.0.153.dist-info/METADATA,sha256=jCzOeN2PnIwJf6visBRBwKktjMF3Vres9bclED9euzQ,4953
291
- accrete-0.0.153.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
292
- accrete-0.0.153.dist-info/licenses/LICENSE,sha256=vHwb4Qnv8UfYKFiCWyTuRGsi49x19UQwHRCky3b2_NE,1057
293
- accrete-0.0.153.dist-info/RECORD,,
295
+ accrete/utils/models.py,sha256=0uDhiWl7G2MDnbdYcAdKaIArw-NFMSwRArCcZ0FrZSk,1509
296
+ accrete/utils/views.py,sha256=LE9pZ1x9f7ioaPYydbrN4t1b0o6NIIq0qUjPTb1Qkbw,5022
297
+ accrete-0.0.155.dist-info/METADATA,sha256=OUKsvr4vjzDsiJwQJzvD_sDEV8PpssCVmhgFCYEbWKM,4953
298
+ accrete-0.0.155.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
299
+ accrete-0.0.155.dist-info/licenses/LICENSE,sha256=vHwb4Qnv8UfYKFiCWyTuRGsi49x19UQwHRCky3b2_NE,1057
300
+ accrete-0.0.155.dist-info/RECORD,,