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/channels.py ADDED
@@ -0,0 +1,39 @@
1
+ import logging
2
+ from urllib.parse import urlparse, parse_qs
3
+ from django.contrib.auth import get_user_model
4
+
5
+ from accrete.models import Tenant, Member
6
+ from accrete.tenant import set_member, set_tenant
7
+
8
+ _logger = logging.getLogger(__name__)
9
+
10
+
11
+ class TenantMiddleware:
12
+ """
13
+ Set tenant and member contextvar
14
+ """
15
+
16
+ def __init__(self, inner):
17
+ self.inner = inner
18
+
19
+ async def __call__(self, scope, receive, send):
20
+ user = scope.get('user')
21
+ if not user or not isinstance(user, get_user_model()):
22
+ set_member(None)
23
+ return await self.inner(scope, receive, send)
24
+ tenant_id = parse_qs(urlparse(
25
+ f"?{scope.get('query_string', b'').decode()}"
26
+ ).query).get('tenant_id', [None])[0]
27
+ tenant = tenant_id and await Tenant.objects.aget(pk=tenant_id)
28
+ if tenant and user.is_staff:
29
+ set_tenant(tenant)
30
+ return await self.inner(scope, receive, send)
31
+ get_kwargs = {'user': user, 'tenant': tenant}
32
+ try:
33
+ member = await Member.objects.aget(**get_kwargs)
34
+ except (Member.DoesNotExist, Member.MultipleObjectsReturned) as e:
35
+ _logger.error(e)
36
+ member = None
37
+ set_member(member)
38
+ return await self.inner(scope, receive, send)
39
+
accrete/consumer.py ADDED
@@ -0,0 +1,18 @@
1
+ from channels.generic.websocket import WebsocketConsumer, JsonWebsocketConsumer
2
+
3
+ from accrete.tenant import get_tenant
4
+
5
+
6
+ class WebsocketTenantConsumer(WebsocketConsumer):
7
+
8
+ def websocket_connect(self, message):
9
+ tenant = get_tenant()
10
+ if tenant is None:
11
+ raise ValueError('Tenant must be set.')
12
+ super().websocket_connect(message)
13
+
14
+
15
+ class JsonWebsocketTenantConsumer(JsonWebsocketConsumer):
16
+
17
+ pass
18
+
@@ -60,7 +60,5 @@ def create_log(sender, **kwargs):
60
60
  _create_log()
61
61
  except Exception as e:
62
62
  _logger.exception(e)
63
- if log_config.ignore_errors:
64
- pass
65
- else:
63
+ if not log_config.ignore_errors:
66
64
  raise e
@@ -15,5 +15,6 @@ from .response import (
15
15
  search_select_response,
16
16
  message_response,
17
17
  add_trigger,
18
- update
18
+ update,
19
+ WindowResponseConfig
19
20
  )
@@ -0,0 +1,9 @@
1
+ import logging
2
+ from django.conf import settings
3
+
4
+ _logger = logging.getLogger(__name__)
5
+
6
+ ACCRETE_TENANT_QUICK_SWITCH_URL = getattr(
7
+ settings, 'ACCRETE_TENANT_QUICK_SWITCH_URL',
8
+ False
9
+ )
@@ -83,7 +83,7 @@ class Filter:
83
83
  )
84
84
 
85
85
  def get_queryset(self) -> QuerySet:
86
- return filter_from_querystring(self.model, self.query_dict)
86
+ return filter_from_querystring(self.model, self.query_dict).filter(self.query)
87
87
 
88
88
  def query_params(self):
89
89
  fields = filter(
@@ -11,6 +11,7 @@ class ThemeForm(forms.ModelForm):
11
11
  fields = [
12
12
  'user',
13
13
  'tenant',
14
+ 'base_theme',
14
15
  'color_primary',
15
16
  'color_success',
16
17
  'color_link',
@@ -0,0 +1,18 @@
1
+ # Generated by Django 5.2.5 on 2025-10-03 07:29
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('ui', '0004_theme_force_tenant_theme'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddField(
14
+ model_name='theme',
15
+ name='base_theme',
16
+ field=models.CharField(choices=[('light', 'Light'), ('dark', 'Dark')], default='light', verbose_name='Base Theme'),
17
+ ),
18
+ ]
@@ -49,6 +49,15 @@ class Theme(models.Model):
49
49
  help_text=_('Apply this theme regardless of user preferences')
50
50
  )
51
51
 
52
+ base_theme = models.CharField(
53
+ verbose_name=_('Base Theme'),
54
+ choices=[
55
+ ('light', _('Light')),
56
+ ('dark', _('Dark')),
57
+ ],
58
+ default='light'
59
+ )
60
+
52
61
  color_primary = models.CharField(
53
62
  verbose_name=_('Primary Color'),
54
63
  max_length=7,
@@ -12,6 +12,15 @@ from django.utils.functional import Promise
12
12
  from accrete.contrib.ui import Filter
13
13
 
14
14
 
15
+ @dataclass(kw_only=True)
16
+ class WindowResponseConfig:
17
+
18
+ display_header: bool = True
19
+
20
+ def dict(self):
21
+ return vars(self)
22
+
23
+
15
24
  class Response:
16
25
 
17
26
  def __init__(self, *, template: str, context: dict):
@@ -71,12 +80,15 @@ class WindowResponse(Response):
71
80
 
72
81
  def __init__(
73
82
  self, *,
74
- title: str,
75
- context: dict,
83
+ title: str | Promise,
84
+ context: dict = None,
76
85
  overview_template: str = None,
77
86
  header_template: str = None,
78
87
  panel_template: str = None,
79
- is_centered: bool = False
88
+ style_template: str = None,
89
+ script_template: str = None,
90
+ is_centered: bool = False,
91
+ config: WindowResponseConfig = None
80
92
  ):
81
93
  super().__init__(template=self.base_template, context=context)
82
94
  self.title = title
@@ -84,13 +96,17 @@ class WindowResponse(Response):
84
96
  self.header_template = header_template
85
97
  self.panel_template = panel_template
86
98
  self.panel_template = panel_template
99
+ self.style_template = style_template
100
+ self.script_template = script_template
87
101
  self.is_centered = is_centered
102
+ self.config = config or WindowResponseConfig()
88
103
 
89
104
  def _has_panel(self):
90
105
  return bool(self.panel_template)
91
106
 
92
107
  def get_context(self):
93
108
  context = super().get_context()
109
+ # TODO: move has_panel to config?
94
110
  if 'has_panel' not in context.keys():
95
111
  context.update(has_panel=self._has_panel())
96
112
  context.update({
@@ -98,7 +114,10 @@ class WindowResponse(Response):
98
114
  'overview_template': self.overview_template,
99
115
  'header_template': self.header_template,
100
116
  'panel_template': self.panel_template,
101
- 'is_centered': self.is_centered
117
+ 'style_template': self.style_template,
118
+ 'script_template': self.script_template,
119
+ 'is_centered': self.is_centered,
120
+ 'config': self.config.dict()
102
121
  })
103
122
  return context
104
123
 
@@ -119,11 +138,12 @@ class ListResponse(WindowResponse):
119
138
  header_template: str = None,
120
139
  panel_template: str = None,
121
140
  column_count: int = 1,
122
- column_height: str = '150px',
141
+ column_height: str | None = '150px',
123
142
  overview_template: str = 'ui/list.html',
124
143
  detail_header_template: str = None,
125
144
  detail_data_template: str = None,
126
- detail_enabled: bool = True
145
+ detail_enabled: bool = True,
146
+ config: WindowResponseConfig = None
127
147
  ):
128
148
  assert page is not None or ui_filter is not None, _(
129
149
  'Argument page or ui_filter must be supplied'
@@ -134,6 +154,7 @@ class ListResponse(WindowResponse):
134
154
  overview_template=overview_template,
135
155
  header_template=header_template,
136
156
  panel_template=panel_template,
157
+ config=config
137
158
  )
138
159
  self.page = page or (ui_filter and ui_filter.get_page())
139
160
  self.list_entry_template = list_entry_template
@@ -231,7 +252,8 @@ class TableResponse(WindowResponse):
231
252
  panel_template: str = None,
232
253
  overview_template: str = 'ui/table.html',
233
254
  detail_header_template: str = None,
234
- detail_data_template: str = None
255
+ detail_data_template: str = None,
256
+ config: WindowResponseConfig = None
235
257
  ):
236
258
  assert page is not None or ui_filter is not None, _(
237
259
  'Argument page or ui_filter must be supplied'
@@ -241,7 +263,8 @@ class TableResponse(WindowResponse):
241
263
  context=context,
242
264
  overview_template=overview_template,
243
265
  header_template=header_template,
244
- panel_template=panel_template
266
+ panel_template=panel_template,
267
+ config=config
245
268
  )
246
269
  self.instance_label = instance_label
247
270
  self.fields = fields
@@ -3,7 +3,7 @@
3
3
  --bulma-body-size: .9em;
4
4
  --bulma-navbar-height: 40px;
5
5
  --bulma-menu-item-selected-h: var(--bulma-primary-h);
6
- --accrete-detail-width: 35em;
6
+ --accrete-detail-width: 40em;
7
7
  --bulma-primary-h: 153.28deg;
8
8
  --bulma-primary-s: 52.89%;
9
9
  --bulma-primary-l: 52.55%;
@@ -187,11 +187,6 @@ select:focus {
187
187
  .level > .level-item.box {
188
188
  width: 100%; }
189
189
 
190
- .modal {
191
- padding-top: 0 !important;
192
- padding-bottom: 0 !important;
193
- justify-content: center !important; }
194
-
195
190
  .modal-card {
196
191
  width: 100% !important;
197
192
  max-height: 100svh; } }
@@ -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"
@@ -4,7 +4,7 @@
4
4
  --bulma-body-size: .9em;
5
5
  --bulma-navbar-height: 40px;
6
6
  --bulma-menu-item-selected-h: var(--bulma-primary-h);
7
- --accrete-detail-width: 35em;
7
+ --accrete-detail-width: 40em;
8
8
  --bulma-primary-h: 153.28deg;
9
9
  --bulma-primary-s: 52.89%;
10
10
  --bulma-primary-l: 52.55%;
@@ -14,20 +14,9 @@
14
14
  --accrete-hover-color: #F0F2F4;
15
15
  }
16
16
 
17
- html[data-theme='light'] {
18
- //--bulma-menu-item-h: var(--bulma-success-h);
19
- //--bulma-menu-item-s: var(--bulma-success-s);
20
- //--bulma-menu-item-l: var(--bulma-success-l);
21
- //--bulma-menu-item-background-l: 50%;
22
- //--bulma-menu-item-color-l: 10%;
23
- //--bulma-navbar-burger-color: var(--bulma-success);
24
- //--bulma-input-disabled-border-color: var(--bulma-input-border-color) !important;
25
- //--accrete-hover-color: #F0F2F4;
26
- }
17
+ html[data-theme='light'] {}
27
18
 
28
19
  html[data-theme='dark'] {
29
- //--bulma-navbar-burger-color: var(--bulma-success);
30
- //--bulma-input-disabled-border-color: var(--bulma-input-border-color) !important;
31
20
  --accrete-hover-color: #1E2128;
32
21
 
33
22
  .button.is-light {
@@ -81,23 +70,9 @@ a {
81
70
  border-left-color: transparent;
82
71
  }
83
72
 
84
- //.input {
85
- // border-top: none;
86
- // border-right: none;
87
- // border-left: none;
88
- // border-top-left-radius: 0;
89
- // border-top-right-radius: 0;
90
- // border-bottom-right-radius: 0;
91
- // border-bottom-left-radius: 0;
92
- // box-shadow: none;
93
- // //box-shadow: inset 0 -10px 10px -16px #000000;
94
- // font-weight: bold;
95
- //}
96
-
97
73
  .input:focus, .input:focus-within {
98
74
  box-shadow: none;
99
75
  border: 1px solid var(--bulma-primary);
100
- //border-color: var(--bulma-success);
101
76
  }
102
77
 
103
78
  input[disabled] {
@@ -122,47 +97,12 @@ textarea:focus {
122
97
  font-size: var(--bulma-size-small);
123
98
  }
124
99
 
125
- td:first-child > .input {
126
- //border-top-left-radius: var(--bulma-radius);
127
- //border-bottom-left-radius: var(--bulma-radius);
128
-
129
- //border-right: 0;
130
- //border-top: none!important;
131
- //border-right: none!important;
132
- //border-bottom: none!important;
133
- //border-left: none!important;
134
- }
135
-
136
- td:last-child > .input {
137
- //border-top-right-radius: var(--bulma-radius);
138
- //border-bottom-right-radius: var(--bulma-radius);
139
-
140
- //border-right: 0;
141
- //border-top: none!important;
142
- //border-right: none!important;
143
- //border-bottom: none!important;
144
- //border-left: none!important;
145
- }
146
-
147
100
  td > .input, td * .input, td * select, td * .select {
148
- //border-top: none!important;
149
- //border-right: none!important;
150
- //border-bottom: none!important;
151
- //border-left: none!important;
152
101
  border-radius: 0;
153
102
  }
154
103
 
155
- td:has(.input:focus) {
156
- //border-bottom: 1px solid var(--bulma-primary)!important;
157
- }
158
-
159
104
  select {
160
- //border-top: transparent !important;
161
- //border-right: transparent !important;
162
- //border-left: transparent !important;
163
- //border-radius: 0 !important;
164
105
  box-shadow: none !important;
165
- //font-weight: bold;
166
106
  }
167
107
 
168
108
  select:focus {
@@ -301,12 +241,6 @@ select:focus {
301
241
  width: 100%
302
242
  }
303
243
 
304
- .modal {
305
- padding-top: 0!important;
306
- padding-bottom: 0!important;
307
- justify-content: center!important;
308
- }
309
-
310
244
  .modal-card {
311
245
  width: 100%!important;
312
246
  max-height: 100svh;