django-unfold 0.20.4__py3-none-any.whl → 0.21.0__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.
- {django_unfold-0.20.4.dist-info → django_unfold-0.21.0.dist-info}/METADATA +3 -2
- {django_unfold-0.20.4.dist-info → django_unfold-0.21.0.dist-info}/RECORD +18 -18
- {django_unfold-0.20.4.dist-info → django_unfold-0.21.0.dist-info}/WHEEL +1 -1
- unfold/checks.py +1 -5
- unfold/contrib/filters/admin.py +4 -12
- unfold/contrib/forms/static/unfold/forms/css/trix.css +8 -6
- unfold/contrib/forms/static/unfold/forms/js/trix.js +4 -3
- unfold/forms.py +2 -1
- unfold/sites.py +1 -0
- unfold/static/unfold/css/styles.css +1 -1
- unfold/templates/admin/includes/fieldset.html +1 -3
- unfold/templates/admin/index.html +1 -1
- unfold/templates/unfold/helpers/app_list_default.html +53 -53
- unfold/templates/unfold/helpers/help_text.html +1 -1
- unfold/templates/unfold/helpers/history.html +6 -6
- unfold/templates/unfold/helpers/userlinks.html +3 -1
- unfold/templates/unfold/layouts/skeleton.html +1 -1
- {django_unfold-0.20.4.dist-info → django_unfold-0.21.0.dist-info}/LICENSE.md +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: django-unfold
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.21.0
|
4
4
|
Summary: Modern Django admin theme for seamless interface development
|
5
5
|
Home-page: https://unfoldadmin.com
|
6
6
|
License: MIT
|
@@ -199,6 +199,7 @@ UNFOLD = {
|
|
199
199
|
"SHOW_VIEW_ON_SITE": True, # show/hide "View on site" button, default: True
|
200
200
|
"ENVIRONMENT": "sample_app.environment_callback",
|
201
201
|
"DASHBOARD_CALLBACK": "sample_app.dashboard_callback",
|
202
|
+
"THEME": "dark", # Force theme: "dark" or "light". Will disable theme switcher
|
202
203
|
"LOGIN": {
|
203
204
|
"image": lambda request: static("sample/login-bg.jpg"),
|
204
205
|
"redirect_after": lambda request: reverse_lazy("admin:APP_MODEL_changelist"),
|
@@ -927,7 +928,7 @@ The biggest benefit of Unfold components is the possibility to nest them inside
|
|
927
928
|
Card Title
|
928
929
|
{% endcomponent %}
|
929
930
|
{% endcomponent %}
|
930
|
-
{%
|
931
|
+
{% endcomponent %}
|
931
932
|
```
|
932
933
|
|
933
934
|
Below you can find a more complex example which is using multiple components and processing them based on the passed variables from the `DASHBOARD_CALLBACK`.
|
@@ -1,10 +1,10 @@
|
|
1
1
|
unfold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
unfold/admin.py,sha256=EyxkRKXWunWhPd6RdkUqdGZprTK1HPe6_xKWsh2LenY,23449
|
3
3
|
unfold/apps.py,sha256=LXJVMj1WIoQXjRmiz2bFtsVc9gKhdby7UQczdtjieY0,307
|
4
|
-
unfold/checks.py,sha256=
|
4
|
+
unfold/checks.py,sha256=_Y9VoDBIj_VdombQ-iyN-s9cRxkW_9vQTfHQ4yYuG-8,1672
|
5
5
|
unfold/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
unfold/contrib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
|
-
unfold/contrib/filters/admin.py,sha256=
|
7
|
+
unfold/contrib/filters/admin.py,sha256=7FJl86b407ylTjgkRN2EwXGHnnVNwBiGvA1_822L5uc,16412
|
8
8
|
unfold/contrib/filters/apps.py,sha256=avtQUAuM3EfLEa-Cb4jWUE0j0nEQtwpncw2iWX9Ivxg,107
|
9
9
|
unfold/contrib/filters/forms.py,sha256=-Tv1vWh-u8eLPAJqSX6c8R3IY0GmgOoFrzVQ8E8gO_s,4055
|
10
10
|
unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css,sha256=rddL_jOGGVEY6wR-aw0VYovAfz5fPeAIsulrlSNb1hc,4221
|
@@ -19,9 +19,9 @@ unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html,sha2
|
|
19
19
|
unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html,sha256=LqN3D483HbeT33SI4Uoy8YxKLP0uWbKyt8_bi1EWz3w,1681
|
20
20
|
unfold/contrib/forms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
21
|
unfold/contrib/forms/apps.py,sha256=-hrTUoIggwHQ0rL0J8l1w5KT9a3T-V5hX0OPuYDsNcY,105
|
22
|
-
unfold/contrib/forms/static/unfold/forms/css/trix.css,sha256=
|
22
|
+
unfold/contrib/forms/static/unfold/forms/css/trix.css,sha256=TH9WdnaZrmwI8hAEydwjobdrBzSw_KYdRTSQDuD-8hE,20027
|
23
23
|
unfold/contrib/forms/static/unfold/forms/js/trix.config.js,sha256=spkNBlJVk_pqido_rM6yywQxkJ3Kqb7DMLiBgpKksdA,858
|
24
|
-
unfold/contrib/forms/static/unfold/forms/js/trix.js,sha256=
|
24
|
+
unfold/contrib/forms/static/unfold/forms/js/trix.js,sha256=_a-jxbDmxRGNk-JyEa7ouez_frUt6-RfwnpOoSaYNOY,174198
|
25
25
|
unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html,sha256=yS8Zy-UrzvZ5RUYwdprQzREffnYq0NlIbXBfZM2UB04,9700
|
26
26
|
unfold/contrib/forms/templates/unfold/forms/wysiwyg.html,sha256=4ZefV6XrjJlUczcuSw8BhvMJUFSZPSXo1IkgkBivh5g,351
|
27
27
|
unfold/contrib/forms/widgets.py,sha256=_81_fsvK-yEsFIqLU59BTIIs2KAJk61pLs7J9sNi1G0,962
|
@@ -58,10 +58,10 @@ unfold/contrib/simple_history/templates/simple_history/submit_line.html,sha256=n
|
|
58
58
|
unfold/dataclasses.py,sha256=JJdGYzQ8MpeOe2FQPJqrMn_UJcxUz1VJgHCuCtkZCA8,199
|
59
59
|
unfold/decorators.py,sha256=BVDlxhZxB4ND3f5-5oiENRTv_W_Q_Eu-gZlsrYKOxiU,3272
|
60
60
|
unfold/exceptions.py,sha256=gcCj1ox61E137bk_0Cqy4YC3SttdPgB-fiJUqpmyHSE,43
|
61
|
-
unfold/forms.py,sha256=
|
61
|
+
unfold/forms.py,sha256=PTXH_CaWwVKpHw0ODEYgL8zC77n8aPja2_6v6N5QnFI,3360
|
62
62
|
unfold/settings.py,sha256=--TdTSWdOA8TQGW4-vjJkjy_zEyd_kZwBr3BIuQ8hzI,1208
|
63
|
-
unfold/sites.py,sha256=
|
64
|
-
unfold/static/unfold/css/styles.css,sha256=
|
63
|
+
unfold/sites.py,sha256=yLzs9rbZV8ml-zaDkw2zcAjjTRI0sDzv4qkH3OqxghM,12556
|
64
|
+
unfold/static/unfold/css/styles.css,sha256=96Z-KIDuSuAQ765_j2hEZdsbGdseLMKZwrk4XMFyIEA,90528
|
65
65
|
unfold/static/unfold/fonts/inter/Inter-Bold.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
|
66
66
|
unfold/static/unfold/fonts/inter/Inter-Medium.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
|
67
67
|
unfold/static/unfold/fonts/inter/Inter-Regular.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
|
@@ -93,9 +93,9 @@ unfold/templates/admin/delete_selected_confirmation.html,sha256=Foka2yvwAMEZre-K
|
|
93
93
|
unfold/templates/admin/edit_inline/stacked.html,sha256=U6O_r9-5Hp7mT0l1EgTeBB8tc9nEAAi0etL2aCU2pBM,4415
|
94
94
|
unfold/templates/admin/edit_inline/tabular.html,sha256=1VWpXzY9sRz95r7_ZPQoQbL-jlJv598MWlXqAoqTpAY,12261
|
95
95
|
unfold/templates/admin/filter.html,sha256=JAp95Mg6W2Pfdrr-gxEZld9EvgMGLj8etMdSl84l4ro,1686
|
96
|
-
unfold/templates/admin/includes/fieldset.html,sha256=
|
96
|
+
unfold/templates/admin/includes/fieldset.html,sha256=r4XjcZAOkWxHQExHZBWoCGtO3LYL0Iwkw1C55oR5V6M,2898
|
97
97
|
unfold/templates/admin/includes/object_delete_summary.html,sha256=Nv69SCzyJHFX14iJFfodxKM0IIpQegKZH0fvKB15QJI,468
|
98
|
-
unfold/templates/admin/index.html,sha256=
|
98
|
+
unfold/templates/admin/index.html,sha256=pkGdKWdD3zzOvkRdELvdb15sleSpfl4eHPA14PAh7z0,684
|
99
99
|
unfold/templates/admin/login.html,sha256=zZ1mppzvv9pNxW3O5XgU7rGsa8Oq6Kab5bofqv_FN9M,3494
|
100
100
|
unfold/templates/admin/nav_sidebar.html,sha256=63lUhsHfrjZowplnOEq4BkGD9jlX0bVQw5VrAMJqf5M,1178
|
101
101
|
unfold/templates/admin/object_history.html,sha256=PsbhXFd_3SCB9YkSJeHESp2VqjNlHtUW26mRtaZ-MD0,5069
|
@@ -126,7 +126,7 @@ unfold/templates/unfold/helpers/account_links.html,sha256=hyRaNDPKWf3mR4WsMibIi_
|
|
126
126
|
unfold/templates/unfold/helpers/actions_row.html,sha256=1xd39zx38NOoKuDuxAG7PHeu5x2OTIraQGFkm15Erqg,1681
|
127
127
|
unfold/templates/unfold/helpers/add_link.html,sha256=mIgpKrwqBO1oJ4cwPQWSX1oUHBwHJmy5-2TxUHf-1bo,808
|
128
128
|
unfold/templates/unfold/helpers/app_list.html,sha256=52fpwCTFBwvzwDltdAa1l2hu8litwPRkSfoZfawn5hc,4434
|
129
|
-
unfold/templates/unfold/helpers/app_list_default.html,sha256=
|
129
|
+
unfold/templates/unfold/helpers/app_list_default.html,sha256=vZkw1F7oHOKReNkdHRYjhuNdA1nNdvSD4wbDmf0bnsM,4102
|
130
130
|
unfold/templates/unfold/helpers/boolean.html,sha256=p_WOlytoXvDwta76WgcV4JSWKpBgKf4amhqmHF798F8,564
|
131
131
|
unfold/templates/unfold/helpers/breadcrumb_item.html,sha256=k_1j57UV0WtzFFlMKaewj4NLbR_DhXI6RzCHThblZLw,234
|
132
132
|
unfold/templates/unfold/helpers/display_header.html,sha256=E-yG9ydyb6rRIR5TT4FxekD3qokilfoOwaEaB7np8WI,433
|
@@ -137,8 +137,8 @@ unfold/templates/unfold/helpers/fieldsets_tabs.html,sha256=-l8ni5jeJQPNxucAn4ujb
|
|
137
137
|
unfold/templates/unfold/helpers/form_errors.html,sha256=EwerIJptSCWXvtAJ1IZKfEn98qlShBIGavsTThbklAs,266
|
138
138
|
unfold/templates/unfold/helpers/form_label.html,sha256=5wKKBXVPwziV5v5fbYatpRvnvSJBDJf_7znNdE6V8IM,237
|
139
139
|
unfold/templates/unfold/helpers/header.html,sha256=jklASqVEJRa22jxdXq_X2UZb2uYn_ywaZbI2N4nBv20,998
|
140
|
-
unfold/templates/unfold/helpers/help_text.html,sha256=
|
141
|
-
unfold/templates/unfold/helpers/history.html,sha256=
|
140
|
+
unfold/templates/unfold/helpers/help_text.html,sha256=iBXw0LWfoYT5PoPLJek9ixv4SuK7hfVkjPgmv2ODW-s,146
|
141
|
+
unfold/templates/unfold/helpers/history.html,sha256=0_Imm7Fc1PqjjXEmHh8QEQg_qIqBZWx2BeK5o3axfvY,2017
|
142
142
|
unfold/templates/unfold/helpers/label.html,sha256=sgFj9tYw9SjAq8p20nKOFjkC2653K8K1ryXT9dW4H8g,684
|
143
143
|
unfold/templates/unfold/helpers/messages/error.html,sha256=mlHVdfpG2ycsKIDBJB9CZs6fM4bMGkpmJvtxHjEApjE,558
|
144
144
|
unfold/templates/unfold/helpers/messages/errornote.html,sha256=5ChxoVYkF4jI-cw72gVHh0CRxDnG9ME_U6UQOArax2k,404
|
@@ -155,10 +155,10 @@ unfold/templates/unfold/helpers/submit.html,sha256=oSzq85LRLhdOlbFtFZFhYm6ucT95u
|
|
155
155
|
unfold/templates/unfold/helpers/tab_action.html,sha256=wanUlr_CKqSjxvKC7_moHFWK-hd7aT3KDdNATkJE2XE,337
|
156
156
|
unfold/templates/unfold/helpers/tab_list.html,sha256=Y7BtJqyVAgMaulSBfy55-surgp7TniLwW3H8eXh54Z8,2029
|
157
157
|
unfold/templates/unfold/helpers/theme_switch.html,sha256=skkl6fYUnYLM7fAPivHxWjnOnuQSKa-7aDxh7I8dGIg,2266
|
158
|
-
unfold/templates/unfold/helpers/userlinks.html,sha256=
|
158
|
+
unfold/templates/unfold/helpers/userlinks.html,sha256=qWjtBt9Q_tU8a874ii0Qqg8t_d-SSYBTB_3QZfNlx9g,634
|
159
159
|
unfold/templates/unfold/helpers/welcomemsg.html,sha256=noRysgSENef4_53pXaTiBCy2or6lQm1ZtmCQVODAB1c,1120
|
160
160
|
unfold/templates/unfold/layouts/base_simple.html,sha256=PHUuMVBToK9yWpdHBSWIfhdC_NEDPZTF_Ft9iDKfIEQ,985
|
161
|
-
unfold/templates/unfold/layouts/skeleton.html,sha256=
|
161
|
+
unfold/templates/unfold/layouts/skeleton.html,sha256=D35u-G6-h5SwTMzIZaEURedsPObSjoB198lLsJwmZWs,3278
|
162
162
|
unfold/templates/unfold/widgets/clearable_file_input_small.html,sha256=rqUnHF4jwL8_RySUuq2aXgj-0P_usgo1HeVT_IcfyFY,2531
|
163
163
|
unfold/templates/unfold/widgets/date.html,sha256=Dq9s-Kyfkw7p4TfchR-XFVOX6pOS7GkXPOWuP9CLRVw,106
|
164
164
|
unfold/templates/unfold/widgets/range.html,sha256=28FBtSUgUcG82vpk_I27Lbs5oWZOV_oMzVhx4wj3-Ik,262
|
@@ -173,7 +173,7 @@ unfold/typing.py,sha256=1P8PWM2oeaceUJtA5j071RbKEBpHYaux441u7Hd6wv4,643
|
|
173
173
|
unfold/utils.py,sha256=5OIgDcwvIJQbwbnnqHx61cHh-2T1h184mTAuNq5WXLI,4088
|
174
174
|
unfold/views.py,sha256=Ml3XlEoHLcbEWof59Dw8ihKBMcmp-gBAibThtBFj55A,708
|
175
175
|
unfold/widgets.py,sha256=FThowQCfPVmsFT260j0ufGwPBNxF6JCIEp6QvJ-L0yI,13720
|
176
|
-
django_unfold-0.
|
177
|
-
django_unfold-0.
|
178
|
-
django_unfold-0.
|
179
|
-
django_unfold-0.
|
176
|
+
django_unfold-0.21.0.dist-info/LICENSE.md,sha256=D2dAcLArwGySIf62-9y-8Q4pcJOiWj8lLpBxYPzDCBc,1069
|
177
|
+
django_unfold-0.21.0.dist-info/METADATA,sha256=hoRRiJjb_1ds6xTSmBt7HluhYf8xUt-ALJskCM-j37c,40712
|
178
|
+
django_unfold-0.21.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
179
|
+
django_unfold-0.21.0.dist-info/RECORD,,
|
unfold/checks.py
CHANGED
@@ -34,11 +34,7 @@ class UnfoldModelAdminChecks(ModelAdminChecks):
|
|
34
34
|
if not hasattr(obj, method_name):
|
35
35
|
errors.append(
|
36
36
|
checks.Error(
|
37
|
-
"{} must define a {}() method for the {} action."
|
38
|
-
obj.__class__.__name__,
|
39
|
-
method_name,
|
40
|
-
action.method.__name__,
|
41
|
-
),
|
37
|
+
f"{obj.__class__.__name__} must define a {method_name}() method for the {action.method.__name__} action.",
|
42
38
|
obj=obj.__class__,
|
43
39
|
id="admin.E129",
|
44
40
|
)
|
unfold/contrib/filters/admin.py
CHANGED
@@ -45,9 +45,7 @@ class SingleNumericFilter(admin.FieldListFilter):
|
|
45
45
|
|
46
46
|
if not isinstance(field, (DecimalField, IntegerField, FloatField, AutoField)):
|
47
47
|
raise TypeError(
|
48
|
-
"Class {} is not supported for {}."
|
49
|
-
type(self.field), self.__class__.__name__
|
50
|
-
)
|
48
|
+
f"Class {type(self.field)} is not supported for {self.__class__.__name__}."
|
51
49
|
)
|
52
50
|
|
53
51
|
self.request = request
|
@@ -196,9 +194,7 @@ class RangeNumericFilter(RangeNumericMixin, admin.FieldListFilter):
|
|
196
194
|
super().__init__(field, request, params, model, model_admin, field_path)
|
197
195
|
if not isinstance(field, (DecimalField, IntegerField, FloatField, AutoField)):
|
198
196
|
raise TypeError(
|
199
|
-
"Class {} is not supported for {}."
|
200
|
-
type(self.field), self.__class__.__name__
|
201
|
-
)
|
197
|
+
f"Class {type(self.field)} is not supported for {self.__class__.__name__}."
|
202
198
|
)
|
203
199
|
|
204
200
|
self.request = request
|
@@ -299,9 +295,7 @@ class RangeDateFilter(admin.FieldListFilter):
|
|
299
295
|
super().__init__(field, request, params, model, model_admin, field_path)
|
300
296
|
if not isinstance(field, DateField):
|
301
297
|
raise TypeError(
|
302
|
-
"Class {} is not supported for {}."
|
303
|
-
type(self.field), self.__class__.__name__
|
304
|
-
)
|
298
|
+
f"Class {type(self.field)} is not supported for {self.__class__.__name__}."
|
305
299
|
)
|
306
300
|
|
307
301
|
self.request = request
|
@@ -394,9 +388,7 @@ class RangeDateTimeFilter(admin.FieldListFilter):
|
|
394
388
|
super().__init__(field, request, params, model, model_admin, field_path)
|
395
389
|
if not isinstance(field, DateTimeField):
|
396
390
|
raise TypeError(
|
397
|
-
"Class {} is not supported for {}."
|
398
|
-
type(self.field), self.__class__.__name__
|
399
|
-
)
|
391
|
+
f"Class {type(self.field)} is not supported for {self.__class__.__name__}."
|
400
392
|
)
|
401
393
|
|
402
394
|
self.request = request
|
@@ -24,13 +24,13 @@ trix-toolbar .trix-button-group {
|
|
24
24
|
border-radius: 3px; }
|
25
25
|
trix-toolbar .trix-button-group:not(:first-child) {
|
26
26
|
margin-left: 1.5vw; }
|
27
|
-
@media (max-
|
27
|
+
@media (max-width: 768px) {
|
28
28
|
trix-toolbar .trix-button-group:not(:first-child) {
|
29
29
|
margin-left: 0; } }
|
30
30
|
|
31
31
|
trix-toolbar .trix-button-group-spacer {
|
32
32
|
flex-grow: 1; }
|
33
|
-
@media (max-
|
33
|
+
@media (max-width: 768px) {
|
34
34
|
trix-toolbar .trix-button-group-spacer {
|
35
35
|
display: none; } }
|
36
36
|
|
@@ -57,7 +57,7 @@ trix-toolbar .trix-button {
|
|
57
57
|
cursor: pointer; }
|
58
58
|
trix-toolbar .trix-button:disabled {
|
59
59
|
color: rgba(0, 0, 0, 0.125); }
|
60
|
-
@media (max-
|
60
|
+
@media (max-width: 768px) {
|
61
61
|
trix-toolbar .trix-button {
|
62
62
|
letter-spacing: -0.01em;
|
63
63
|
padding: 0 0.3em; } }
|
@@ -68,7 +68,7 @@ trix-toolbar .trix-button--icon {
|
|
68
68
|
height: 1.6em;
|
69
69
|
max-width: calc(0.8em + 4vw);
|
70
70
|
text-indent: -9999px; }
|
71
|
-
@media (max-
|
71
|
+
@media (max-width: 768px) {
|
72
72
|
trix-toolbar .trix-button--icon {
|
73
73
|
height: 2em;
|
74
74
|
max-width: calc(0.8em + 3.5vw); } }
|
@@ -84,7 +84,7 @@ trix-toolbar .trix-button--icon {
|
|
84
84
|
background-position: center;
|
85
85
|
background-repeat: no-repeat;
|
86
86
|
background-size: contain; }
|
87
|
-
@media (max-
|
87
|
+
@media (max-width: 768px) {
|
88
88
|
trix-toolbar .trix-button--icon::before {
|
89
89
|
right: 6%;
|
90
90
|
left: 6%; } }
|
@@ -334,7 +334,9 @@ trix-editor .attachment__metadata {
|
|
334
334
|
white-space: nowrap; }
|
335
335
|
|
336
336
|
.trix-content {
|
337
|
-
line-height: 1.5;
|
337
|
+
line-height: 1.5;
|
338
|
+
overflow-wrap: break-word;
|
339
|
+
word-break: break-word; }
|
338
340
|
.trix-content * {
|
339
341
|
box-sizing: border-box;
|
340
342
|
margin: 0;
|