django-unfold 0.39.0__py3-none-any.whl → 0.41.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.
Files changed (54) hide show
  1. django_unfold-0.41.0.dist-info/METADATA +74 -0
  2. {django_unfold-0.39.0.dist-info → django_unfold-0.41.0.dist-info}/RECORD +53 -50
  3. {django_unfold-0.39.0.dist-info → django_unfold-0.41.0.dist-info}/WHEEL +1 -1
  4. unfold/admin.py +7 -0
  5. unfold/contrib/filters/forms.py +2 -2
  6. unfold/contrib/forms/templates/unfold/forms/array.html +2 -2
  7. unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +1 -1
  8. unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +1 -1
  9. unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +1 -1
  10. unfold/contrib/guardian/templates/unfold/guardian/group_form.html +2 -2
  11. unfold/contrib/guardian/templates/unfold/guardian/user_form.html +3 -3
  12. unfold/contrib/import_export/templates/admin/import_export/export.html +1 -1
  13. unfold/contrib/import_export/templates/admin/import_export/import.html +1 -1
  14. unfold/contrib/simple_history/templates/simple_history/object_history_form.html +1 -1
  15. unfold/forms.py +7 -8
  16. unfold/sites.py +12 -0
  17. unfold/static/admin/js/inlines.js +439 -0
  18. unfold/static/unfold/css/styles.css +1 -1
  19. unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
  20. unfold/static/unfold/fonts/material-symbols/styles.css +1 -2
  21. unfold/static/unfold/js/alpine.sort.js +1 -0
  22. unfold/static/unfold/js/app.js +36 -10
  23. unfold/static/unfold/js/select2.init.js +1 -1
  24. unfold/styles.css +5 -1
  25. unfold/templates/admin/app_index.html +1 -1
  26. unfold/templates/admin/app_list.html +1 -1
  27. unfold/templates/admin/auth/user/change_password.html +1 -1
  28. unfold/templates/admin/base.html +1 -1
  29. unfold/templates/admin/change_form.html +1 -1
  30. unfold/templates/admin/change_list.html +48 -38
  31. unfold/templates/admin/delete_confirmation.html +4 -9
  32. unfold/templates/admin/delete_selected_confirmation.html +4 -8
  33. unfold/templates/admin/edit_inline/stacked.html +68 -66
  34. unfold/templates/admin/edit_inline/tabular.html +143 -134
  35. unfold/templates/admin/login.html +2 -0
  36. unfold/templates/admin/object_history.html +1 -1
  37. unfold/templates/admin/submit_line.html +8 -8
  38. unfold/templates/registration/password_change_done.html +1 -1
  39. unfold/templates/registration/password_change_form.html +1 -1
  40. unfold/templates/unfold/change_list_filter.html +7 -9
  41. unfold/templates/unfold/components/button.html +4 -3
  42. unfold/templates/unfold/components/card.html +1 -1
  43. unfold/templates/unfold/components/progress.html +15 -15
  44. unfold/templates/unfold/components/separator.html +1 -1
  45. unfold/templates/unfold/helpers/app_list.html +2 -2
  46. unfold/templates/unfold/helpers/delete_submit_line.html +11 -0
  47. unfold/templates/unfold/helpers/display_header.html +8 -3
  48. unfold/templates/unfold/helpers/field_readonly_value.html +1 -1
  49. unfold/templates/unfold/helpers/fieldset_row.html +2 -0
  50. unfold/templates/unfold/helpers/welcomemsg.html +1 -1
  51. unfold/templates/unfold/layouts/skeleton.html +1 -0
  52. unfold/templates/unfold/widgets/url.html +7 -5
  53. django_unfold-0.39.0.dist-info/METADATA +0 -70
  54. {django_unfold-0.39.0.dist-info → django_unfold-0.41.0.dist-info}/LICENSE.md +0 -0
@@ -0,0 +1,74 @@
1
+ Metadata-Version: 2.1
2
+ Name: django-unfold
3
+ Version: 0.41.0
4
+ Summary: Modern Django admin theme for seamless interface development
5
+ Home-page: https://unfoldadmin.com
6
+ License: MIT
7
+ Keywords: django,admin,tailwind,theme
8
+ Requires-Python: >=3.8
9
+ Classifier: Environment :: Web Environment
10
+ Classifier: Framework :: Django
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Requires-Dist: django (>=3.2)
23
+ Project-URL: Repository, https://github.com/unfoldadmin/django-unfold
24
+ Description-Content-Type: text/markdown
25
+
26
+ ![screenshot](https://github.com/user-attachments/assets/b5ec09b6-c8c7-454a-85af-1bba97593632)
27
+
28
+ ## Unfold Django Admin Theme
29
+
30
+ [![PyPI - Version](https://img.shields.io/pypi/v/django-unfold.svg?style=for-the-badge)](https://pypi.org/project/django-unfold/)
31
+ [![Build](https://img.shields.io/github/actions/workflow/status/unfoldadmin/django-unfold/release.yml?style=for-the-badge)](https://github.com/unfoldadmin/django-unfold/actions?query=workflow%3Arelease)
32
+ ![Pre Commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=for-the-badge)
33
+ ![Code Style - Ruff](https://img.shields.io/badge/code%20style-ruff-30173D.svg?style=for-the-badge)
34
+
35
+ Unfold is a theme for Django admin that incorporates common best practices for building full-fledged admin areas. It is designed to work on top of the default administration provided by Django.
36
+
37
+ - **Documentation:** Full docs are available at [unfoldadmin.com](https://unfoldadmin.com?utm_medium=github&utm_source=unfold).
38
+ - **Unfold:** Demo site is available at [unfoldadmin.com](https://unfoldadmin.com?utm_medium=github&utm_source=unfold).
39
+ - **Formula:** Repository with demo implementation at [github.com/unfoldadmin/formula](https://github.com/unfoldadmin/formula?utm_medium=github&utm_source=unfold).
40
+ - **Turbo:** Django & Next.js boilerplate implementing Unfold at [github.com/unfoldadmin/turbo](https://github.com/unfoldadmin/turbo?utm_medium=github&utm_source=unfold).
41
+ - **Discord:** Join the Unfold community on [Discord](https://discord.gg/9sQj9MEbNz).
42
+
43
+
44
+
45
+ ## Are you using Unfold and need help?
46
+
47
+ Have you decided to start using Unfold but don’t have time to make the switch from the native Django admin? [Get in touch with us](https://unfoldadmin.com/consulting?utm_medium=github&utm_source=unfold) and let’s supercharge your development with our expertise.
48
+
49
+ ## Features
50
+
51
+ - **Visual**: Provides a new user interface based on the Tailwind CSS framework.
52
+ - **Sidebar:** Simplifies the creation of sidebar navigation with icons, collapsibles, and more.
53
+ - **Dark mode:** Supports both light and dark mode versions.
54
+ - **Actions:** Offers multiple ways to define actions within different parts of the admin interface.
55
+ - **Filters:** Custom dropdowns, numeric, datetime, and text fields.
56
+ - **Dashboard:** Includes helpers for creating custom dashboard pages.
57
+ - **Components:** Reusable UI components such as cards, buttons, and charts.
58
+ - **WYSIWYG widget:** Built-in support for WYSIWYG (Trix).
59
+ - **Array widget:** Built-in widget for `django.contrib.postgres.fields.ArrayField`.
60
+ - **Inline tabs:** Groups inlines into tab navigation in the change form.
61
+ - **Model tabs:** Allows defining custom tab navigation for models.
62
+ - **Fieldset tabs:** Merges multiple fieldsets into tabs in the change form.
63
+ - **Sortable inlines:** Allows sorting inlines by dragging and dropping.
64
+ - **Environment label**: Distinguishes between environments by displaying a label.
65
+ - **Nonrelated inlines**: Displays nonrelated models as inlines in the change form.
66
+ - **Favicons**: Built-in support for configuring various site favicons.
67
+ - **Colors:** Allows customization of the default color scheme.
68
+ - **Changeform modes:** Displays fields in compressed mode in the change form.
69
+ - **Parallel admin**: Supports [running the default admin](https://unfoldadmin.com/blog/migrating-django-admin-unfold/?utm_medium=github&utm_source=unfold) alongside Unfold.
70
+ - **Third party packages:** Default support for multiple popular applications.
71
+ - **Configuration:** Most basic options can be changed in `settings.py`.
72
+ - **Dependencies:** Fully based on `django.contrib.admin`.
73
+ - **VS Code**: Project configuration and development container included.
74
+
@@ -1,12 +1,12 @@
1
1
  unfold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- unfold/admin.py,sha256=H7zKInqAGsGJbIrX0EC7GZKyXVjZ0olWBzvkIFlKpR8,19694
2
+ unfold/admin.py,sha256=P9wp0ywpue56sN9WbhG3t40mzPtrTB2XVpmj7-1w7Iw,19902
3
3
  unfold/apps.py,sha256=SlBXPYrUd2uXn67qFbRvbXSUk3XFWrF4-5WELgDCvho,381
4
4
  unfold/checks.py,sha256=Smgji9w19hnYjJElJ_FJnnyTEAE-E-OUB6otHu7lasY,1670
5
5
  unfold/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  unfold/contrib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  unfold/contrib/filters/admin.py,sha256=4dwK-LCXaopQeqW3818wUiZJhkJEDLNwbDLJboVJPHk,21138
8
8
  unfold/contrib/filters/apps.py,sha256=wEySJy0gMLzFLb9XNKE-RexiO05X7NaQ5QmxZyziJ_k,136
9
- unfold/contrib/filters/forms.py,sha256=N25YiD7YfBxg57-goSnaXc-eyEQFp1XYgDmmQwg7jQ0,5696
9
+ unfold/contrib/filters/forms.py,sha256=p1vfCdhBVEGmvHG0EAtv12B1Ssm2xtXuImL4R0bHOV0,5748
10
10
  unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css,sha256=rddL_jOGGVEY6wR-aw0VYovAfz5fPeAIsulrlSNb1hc,4221
11
11
  unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js,sha256=jgFNBDf6aHvUlyv0LEDHggXO-xA8pWOCWFWcVupdA30,19332
12
12
  unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js,sha256=nTkiiJk4Abn9d6KigxPSEsereFhFq-v5n_boiiY1eII,1668
@@ -23,7 +23,7 @@ unfold/contrib/forms/apps.py,sha256=Di0TMzVuRpVxLG-8Bjdq5ALCSf5r7u2xVhD0jU6H5Sc,
23
23
  unfold/contrib/forms/static/unfold/forms/css/trix.css,sha256=TH9WdnaZrmwI8hAEydwjobdrBzSw_KYdRTSQDuD-8hE,20027
24
24
  unfold/contrib/forms/static/unfold/forms/js/trix.config.js,sha256=spkNBlJVk_pqido_rM6yywQxkJ3Kqb7DMLiBgpKksdA,858
25
25
  unfold/contrib/forms/static/unfold/forms/js/trix.js,sha256=HJXkWw7Mtocr7IeyBVplEIeO4X0kUhHHsI1Yra_ZMl8,175599
26
- unfold/contrib/forms/templates/unfold/forms/array.html,sha256=GcfmREGCvLfXWSXM-t6F54uFgvqliFUeRZ2oeOIV6u0,1555
26
+ unfold/contrib/forms/templates/unfold/forms/array.html,sha256=1Hzg3-5hpoUQAHql3ZkNWqkasWcC68-QLwi-kdS5LoI,1750
27
27
  unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html,sha256=9KeJEP6YE-NOmPU53cYZ9jHwVjgQS2MP5-SP0xT4ccY,9754
28
28
  unfold/contrib/forms/templates/unfold/forms/wysiwyg.html,sha256=uLLf59jsD3apAm9Uh1TH4pwCOtO7pL2djAeZLOHyNAI,399
29
29
  unfold/contrib/forms/widgets.py,sha256=8-KLSRVtgtPDCDKz6sbIrcdvkfbqrFRkInG871WAv2I,3142
@@ -31,11 +31,11 @@ unfold/contrib/guardian/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
31
31
  unfold/contrib/guardian/apps.py,sha256=ObJqwh4vHxkD4XfduP5IQAiYiWZxsXUOUqF1_R1GsRI,136
32
32
  unfold/contrib/guardian/templates/admin/guardian/model/change_form.html,sha256=FSJc4MYYWyzZAy8Ay0b7Ov-cUo-oELHOM5fQehM54Lg,403
33
33
  unfold/contrib/guardian/templates/admin/guardian/model/field.html,sha256=V9ZgmYiIQAFy3GC464y0iBOHm3SDvEEymbuhT3S0qKU,296
34
- unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html,sha256=p7GmZOyDqj1urDAh9pyZhatnSpe-G6gXtQ_DpRK-J8k,1426
35
- unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html,sha256=mcm8nqyzz0-cIHQME8QLDNGZUmatwxorvnTAE82tHiU,2322
36
- unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html,sha256=mqASTrSSATOCJlG3G7qlWHQbLAMgLKhhKbn1klQAZAE,2320
37
- unfold/contrib/guardian/templates/unfold/guardian/group_form.html,sha256=LwBAUTk7PzFhokjdfxA93xb6U54FIGGwvcrZREwbcps,3925
38
- unfold/contrib/guardian/templates/unfold/guardian/user_form.html,sha256=SJaMowt_92CXS59dKaWoXMOgXAS4rEOJPKlvnf5gOuY,3915
34
+ unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html,sha256=n0XjAH9UFGiO9KWfnV2LW48L5FPEsDPxNKQMogJDpNA,1436
35
+ unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html,sha256=S75GT4_wV2qivxjImzaopM-Vopa28_EdkgcxLNKD5mo,2332
36
+ unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html,sha256=Cw6EkU_3W4CaH_xRLV2k8k0rCx7l-ttIT2VdWHdaRMY,2330
37
+ unfold/contrib/guardian/templates/unfold/guardian/group_form.html,sha256=3W-CCW8eb_VAzjLHtbNYBzlxFP_wofQFl9EMO-E4ivQ,3925
38
+ unfold/contrib/guardian/templates/unfold/guardian/user_form.html,sha256=ZGcndXOn-MeFW3b2bNUr5-PFS85HxLhDoPeR7AIKQ4Q,3914
39
39
  unfold/contrib/import_export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
40
  unfold/contrib/import_export/apps.py,sha256=SdJu6Qh90VqGWY19FSDhhpUqhTbaIYsJKny3zX5baHI,149
41
41
  unfold/contrib/import_export/forms.py,sha256=kh8psUoTObrRb2wtkYhvRu1D5QM02xWk4UNLQT5lQZA,2038
@@ -45,8 +45,8 @@ unfold/contrib/import_export/templates/admin/import_export/change_list_export.ht
45
45
  unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html,sha256=pTDeqPKOlCPKH2dxMIfPnWuc2wVDzB7AzL73WbxSnRY,257
46
46
  unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html,sha256=JdKd6P2Ot9Ou4yg4CywTauuE1UiTz_mRvDwlx3vj3LI,229
47
47
  unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html,sha256=XUuRxnsx9YQbKvW-E_JGl_ha7kpTSGSoRefOTTizuX0,233
48
- unfold/contrib/import_export/templates/admin/import_export/export.html,sha256=NZ2bZ0yvskp_twIjX9LSROMmicXAU8dDXemxdII9_K0,3447
49
- unfold/contrib/import_export/templates/admin/import_export/import.html,sha256=HdOFIwyw3zc1nY24EfuYizKtT8A5W29InFPvfft5Sts,2125
48
+ unfold/contrib/import_export/templates/admin/import_export/export.html,sha256=tz7DaApMZpIgGzlBvjKQtMCZXpoSylfCxulBZfuHLz8,3457
49
+ unfold/contrib/import_export/templates/admin/import_export/import.html,sha256=_RGQ9aZjZ2aNLKmy8cCimfBuIQoeaVlHq-cuHWLqGXA,2135
50
50
  unfold/contrib/import_export/templates/admin/import_export/import_confirm.html,sha256=9DpqVW2TcrC8UrAawBP-6KIzKf0bZDNhpYIWduGTnVc,869
51
51
  unfold/contrib/import_export/templates/admin/import_export/import_errors.html,sha256=edsP56v1xeCezliXTxPIVo8mvv8rdVwh8yz0LeP5Zjk,1430
52
52
  unfold/contrib/import_export/templates/admin/import_export/import_form.html,sha256=mMuMTAbgMbJ1IyCQPBkzmob4m5lJmZ69_QSo3GvvSiY,990
@@ -61,94 +61,97 @@ unfold/contrib/inlines/forms.py,sha256=s49xrIkQTbvSMsrP4DydXWkpP1v8NCUmQw_Bcoqf0
61
61
  unfold/contrib/simple_history/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  unfold/contrib/simple_history/apps.py,sha256=eF_KVYb60CAnGgWk2Z1YKYGfgA3TJBMr229qI7e2pgU,153
63
63
  unfold/contrib/simple_history/templates/simple_history/object_history.html,sha256=vX8bIubM54WtpnCCz6Ip2c1ryisaCveUHAakRMj_qE8,751
64
- unfold/contrib/simple_history/templates/simple_history/object_history_form.html,sha256=MOL3Tw3Nk3Rnq1koRV7yeCev4CP06_4xqAIOQk1M7FU,2290
64
+ unfold/contrib/simple_history/templates/simple_history/object_history_form.html,sha256=xRn-BMlh6BAkcmbrJUIAFSnb4Ac7oznRevYAPW765Uc,2300
65
65
  unfold/contrib/simple_history/templates/simple_history/object_history_list.html,sha256=MvCaPwFwNlSr-kNSJIxBdKhWQmG4OgNJTDPWB-FWUEk,6858
66
66
  unfold/contrib/simple_history/templates/simple_history/submit_line.html,sha256=_otLz6Qs_tEnQIWQpKtTPll6joJaWeZb3ZoHdHXlXno,1712
67
67
  unfold/dataclasses.py,sha256=4PAWLVlUhyGMq1Mwai7afCgrRO0Inulw0opFUKVEOBk,483
68
68
  unfold/decorators.py,sha256=jyjE2sunazp8gK1QIsNRJGEEDwO7RDKWDKnOI3GDWZE,3338
69
69
  unfold/exceptions.py,sha256=gcCj1ox61E137bk_0Cqy4YC3SttdPgB-fiJUqpmyHSE,43
70
70
  unfold/fields.py,sha256=yhtpDfqycpOxqdQlbncCg9qhELxGk3AtXizkZyzzH0g,7410
71
- unfold/forms.py,sha256=xm1xSZJBTqnTTDQymkvfzHs7RaeANC4LzB86LNDA9hU,4218
71
+ unfold/forms.py,sha256=raPZVYuZ1UQwo5qv8M6KDdprfCvRgjFnYfLdkmBRojI,4118
72
72
  unfold/settings.py,sha256=8rjtIipRX3IrkmsSy5OrbheGhjmkYvKxueihSRIM9c8,2111
73
- unfold/sites.py,sha256=yr66aXr1UYSZw9I9VRKpmkQxUtUP9336zs1GZJWJqis,13505
73
+ unfold/sites.py,sha256=JXl1-epLzodNp4--lueQZBaZ-X6JfZ0U2U1CEpvAARM,13841
74
74
  unfold/static/admin/js/admin/RelatedObjectLookups.js,sha256=alI0-yq7YPDJJJn-yg1ce79-Cv88yQDUrfaGqFZnsaY,9048
75
+ unfold/static/admin/js/inlines.js,sha256=-WGZO7BO07zNGAvb5ZdnR4PjqqhU29gyVMKsBn-PBUw,14577
75
76
  unfold/static/unfold/css/simplebar.css,sha256=5LLaEM11pKi6JFCOLt4XKuZxTpT9rpdq_tNlaQytFlU,4647
76
- unfold/static/unfold/css/styles.css,sha256=Qfovqaj0HIvTY7IjpOjq8B08_99KX4kXl-lRBiEmBF4,97177
77
+ unfold/static/unfold/css/styles.css,sha256=QEVjWuFNd3Rakym-N1QpRcHp07iHl2eFbyvrUV0bs3M,97860
77
78
  unfold/static/unfold/fonts/inter/Inter-Bold.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
78
79
  unfold/static/unfold/fonts/inter/Inter-Medium.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
79
80
  unfold/static/unfold/fonts/inter/Inter-Regular.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
80
81
  unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
81
82
  unfold/static/unfold/fonts/inter/styles.css,sha256=QqdgevXVfcD6vZGo8ciSkaEG_62_YcZg0hvHTNgJ56E,608
82
- unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2,sha256=GlHQ683zaA6TnebtaEaDEaeGocmioSKaspbbUAVSfEE,349864
83
- unfold/static/unfold/fonts/material-symbols/styles.css,sha256=U0oiGd2DS7LXnbuqgsvPNTDJgLZlA9s6LFOJ6FDihks,557
83
+ unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2,sha256=V6mmjk69Ee-coQvMsGV0tcNgV3E1nb7N9IKW8HVUBzk,256424
84
+ unfold/static/unfold/fonts/material-symbols/styles.css,sha256=ZX1icA_BXCVL0eoY2H6XR8VT_Fxl_KnV6vFBm_OImHA,535
84
85
  unfold/static/unfold/js/alpine.anchor.js,sha256=2Jg9aUq749pjFynzr_H1NK3lf-nXrbHMtO9wvlWJyIQ,15524
85
86
  unfold/static/unfold/js/alpine.js,sha256=NY2a-7GrW--i9IBhowd25bzXcH9BCmBrqYX5i8OxwDQ,44659
86
87
  unfold/static/unfold/js/alpine.persist.js,sha256=jFBwr6faTqqhp3sVi4_VTxJ0FpaF9YGZN1ZGLl_5QYM,837
87
- unfold/static/unfold/js/app.js,sha256=VirG6nw5PPnKMxQqd3eGfmzWH_MaoutOTPxWHfMo7-M,7440
88
+ unfold/static/unfold/js/alpine.sort.js,sha256=q6LxgConwu8M8R03mZSBcsKwJv6fF7oomP8sqLxVQ0w,37891
89
+ unfold/static/unfold/js/app.js,sha256=CmeP5_faLxLN8Et5VA2Ko4e1mKP63bBRzsEeBvWZ_LA,8198
88
90
  unfold/static/unfold/js/chart.js,sha256=22W6cFERR-CElMOKRgMMicueMVP0Vf7FBEBYH8Z8tCk,200633
89
91
  unfold/static/unfold/js/htmx.js,sha256=XOLqvnZiyEx46EW9vaJTBUaaWg8CGVVfXJkVsUmJbpI,42820
90
- unfold/static/unfold/js/select2.init.js,sha256=SzpjSL1mD9tHedjSeXlmEwHjuuyqlnpilpSeEEKeYLE,265
92
+ unfold/static/unfold/js/select2.init.js,sha256=siSDCwzy2PsOwA0Kj26JA_ELBtZlS70O8D8f1qTMmqg,291
91
93
  unfold/static/unfold/js/simplebar.js,sha256=t-uG1FAD6ZoiMeN--wac0XRS7SxoDVG6zvRnGuEp7X8,27176
92
- unfold/styles.css,sha256=7BtTH3fddTLCVDdMqohVzUXePMY_xoMaufLJbyOtY7M,18226
94
+ unfold/styles.css,sha256=E6bg3a9QykMd5zD56huwdiEnZEKKlyg8gveK9JJwIck,18279
93
95
  unfold/templates/admin/actions.html,sha256=8GqELAxzywGyfQJiQeuhGIQUakdK_WeneILY06C7mEo,2746
94
- unfold/templates/admin/app_index.html,sha256=lVjMIFsspHQ09LGHKfdfg7TlqlL39AX5LbwoeoZjFhk,1335
95
- unfold/templates/admin/app_list.html,sha256=aXlMo2OONF-eoTBg5kdYip8vFsu8Rb88EQhXPZEL0w8,2766
96
+ unfold/templates/admin/app_index.html,sha256=fphodUAgaL7X4pOz-QxiWOKnESEs8wRqPoShSF6iBaU,1345
97
+ unfold/templates/admin/app_list.html,sha256=avKk-Dj_4GY_izBKWsb_yNHxUyVpdRbDBZuoxlIEdN0,2817
96
98
  unfold/templates/admin/auth/user/add_form.html,sha256=L0ylU7BLEIoZc3nS4Rq6DA0H94HQ3aXFr-iwK0vp2Bs,482
97
- unfold/templates/admin/auth/user/change_password.html,sha256=-Wa9ml3yss-kDz0YQxCiwoxs91KQD8eetCt5l6xekWM,2892
98
- unfold/templates/admin/base.html,sha256=RptiEpgXZ6seYrPu-1Stoe8ECHpi9PjkJjFheGecYF0,2358
99
+ unfold/templates/admin/auth/user/change_password.html,sha256=q7RMscF4thZisdt5CrZLugk-MWDr8DgQ-3KXDv2QlGk,2902
100
+ unfold/templates/admin/base.html,sha256=5XBfcJqFgCxhZlGzLzhAzmar9OP2kXBQdbqrPjqxkKM,2368
99
101
  unfold/templates/admin/base_site.html,sha256=FM8OOaXsQqJlYapeJvBznXCOt7poMiWrweTWcsMHzeI,365
100
- unfold/templates/admin/change_form.html,sha256=2EKrHLNmKdg2cTmHW9N9Om6zpOxBDIzkOb6UoMKtr6U,4981
102
+ unfold/templates/admin/change_form.html,sha256=-tCH8kPUPTjuyhNJM_E_xUQa03rvp_z5R38Kau-PBs0,4991
101
103
  unfold/templates/admin/change_form_object_tools.html,sha256=eyeH-i2HgEM0Yi-OJA2D1VnKJyC19A_my1IDGxxoP8Y,593
102
- unfold/templates/admin/change_list.html,sha256=DzC236cq-B8uXnb6F4bzgcQFwMLI3uKOIHNyjVtCKA0,4977
104
+ unfold/templates/admin/change_list.html,sha256=gUZutYA2OIm8nXccpUQL5UMqB0LokKqgXSFklzxQw4E,5635
103
105
  unfold/templates/admin/change_list_object_tools.html,sha256=cmMiT2nT20Ph5yfpj9aHPr76Z-JP4aSXp0o-Rnad28s,147
104
106
  unfold/templates/admin/change_list_results.html,sha256=Nb-NbQYalqGJ9TRW4B1RZrS2ePhbyWtXi_K-tBn1DQs,5502
105
107
  unfold/templates/admin/date_hierarchy.html,sha256=BfUPbsLpHZVa40BHBahz1H9RSVuz36Jc3yrlobOiIpw,1306
106
- unfold/templates/admin/delete_confirmation.html,sha256=pg2Ei9ebjmsoM_GqaK0uasuGFYsoiFeoxsxGrOYk3kE,5082
107
- unfold/templates/admin/delete_selected_confirmation.html,sha256=MRh1_fC5deThAb42kyoMu3t-o9OiF7UDAbRgun23KFQ,4865
108
- unfold/templates/admin/edit_inline/stacked.html,sha256=K6sA05tN1r-6FyOePo15SF2WBbuOaA6_3FAoptWJCdk,7127
109
- unfold/templates/admin/edit_inline/tabular.html,sha256=vch3ZQ7UVw6-6roX8EYbolk8ua98uIwNQx4-FjzE3tM,14195
108
+ unfold/templates/admin/delete_confirmation.html,sha256=kv6Io5k0Y2TXbrJfZHUbZQn65qDFYO2Yn_tWmC9lLLg,4629
109
+ unfold/templates/admin/delete_selected_confirmation.html,sha256=szkn7TLnmcSTODop2GH5bMcEEEEJydY2d2RYRES1LmA,4398
110
+ unfold/templates/admin/edit_inline/stacked.html,sha256=o3tmGfmG4lKpN3omROTgxqMAJzL4H8dGMRZf0xoifdU,7282
111
+ unfold/templates/admin/edit_inline/tabular.html,sha256=aQPKGfZxiQCgTkheIaPrTBrzB8zwlE5-CPWxZGHhXSI,14693
110
112
  unfold/templates/admin/filter.html,sha256=wgYuP_ZmTofljsavLe4t8djAZnXRfEmz5U40SI-2Hjc,1640
111
113
  unfold/templates/admin/includes/fieldset.html,sha256=eyo5icIIrihKBLT7k3FCgoVhK55Lb78eIp7tIUNXLvU,975
112
114
  unfold/templates/admin/includes/object_delete_summary.html,sha256=w_lPVnBrng0oqvFy6rzvr8c5bzdU8GpqvYUAvaXza0c,444
113
115
  unfold/templates/admin/index.html,sha256=pkGdKWdD3zzOvkRdELvdb15sleSpfl4eHPA14PAh7z0,684
114
- unfold/templates/admin/login.html,sha256=8qSiSCjZy1D76Z0HocQvDzSA6xfXjqsZoM9Bbg4Ebas,4108
116
+ unfold/templates/admin/login.html,sha256=Xw50tZZxESEwz9YOcV1CSPeyyI2H1l0q4x4zBrC4dps,4170
115
117
  unfold/templates/admin/nav_sidebar.html,sha256=31g1dbGHe7m_8GXFrehLqWD84Nx7jEoeLhyNBZbaqRM,1163
116
- unfold/templates/admin/object_history.html,sha256=mRD6nbIVmnsz2OG6UsuXdI55bflY3Vs8zbIE9X-Oi74,4816
118
+ unfold/templates/admin/object_history.html,sha256=7v5bdYh5YjMg_wg0ArDtQETxUD069h-OuwkSuYy-mq0,4826
117
119
  unfold/templates/admin/pagination.html,sha256=KrwOM6gRizfpTMP59TESQaNGcQzkga2k02opl_7BxLo,1130
118
120
  unfold/templates/admin/search_form.html,sha256=NNTJ38yABrSBOet3ivkbzciYHd_I_mGHlgRvLHSL5ig,1219
119
- unfold/templates/admin/submit_line.html,sha256=6V9qtE9BecN905-YkI5ZOLY3ZYyb_mhN_p9Zkhv4h8Q,4248
121
+ unfold/templates/admin/submit_line.html,sha256=Jl1gXeuM7UaBIpbRWQ6w644TRb8PkcQEs_pUZM7n2SI,4198
120
122
  unfold/templates/auth/widgets/read_only_password_hash.html,sha256=UK36u2lYyiY_oSWuzlH_54Kjc1RzgO3Y1VaqJPyXk_Y,754
121
123
  unfold/templates/registration/logged_out.html,sha256=cg4YjMbVtuMdOJD3hkkJZntv0G8gnzQYkDpZJVRNM2g,995
122
- unfold/templates/registration/password_change_done.html,sha256=bTZHs1KsGcRgT6WI5exF4ANFEXatgI24rIeENxJZl6Q,1070
123
- unfold/templates/registration/password_change_form.html,sha256=zzmqFHfMExS7czgEBdEtetXk2Ae_7jzaID7CpE_xlgo,2225
124
- unfold/templates/unfold/change_list_filter.html,sha256=9wP_sZF8uKmJhegPC3Z-7ZZXLwVIYDrjzzgTNxLuFbc,3344
125
- unfold/templates/unfold/components/button.html,sha256=mVb_THznqpga1onh-TGr7B679I3zDazvXBdUVOMx7Og,220
126
- unfold/templates/unfold/components/card.html,sha256=3DtjaeMvLNUBzbnnUn7zU15V2X_k2HBdxSV55S31IoA,1086
124
+ unfold/templates/registration/password_change_done.html,sha256=MjwUFjMoM26GcQ4sduh5afNzt11HbOVFEVb4nZ6bdD8,1080
125
+ unfold/templates/registration/password_change_form.html,sha256=YKIjlijh9wTFkCO-KWgNBxZdgx4RzXUWr4l2zO1ZNJA,2235
126
+ unfold/templates/unfold/change_list_filter.html,sha256=JaZaZBGFtFmKvqU-U65HbQAt7ekdaZ7AyXZ7-GELIS8,3743
127
+ unfold/templates/unfold/components/button.html,sha256=E9B5Y0ZzUrFmw50tK8Fi8-V0V6-ONbWcBMuyoxaDjSI,476
128
+ unfold/templates/unfold/components/card.html,sha256=3HHpqXOYS1b9yPa-ipbsWHBJUuI4knmk2od5B9kMcIs,1087
127
129
  unfold/templates/unfold/components/chart/bar.html,sha256=nDdDCUXvFd793OpNgNPQo0vBmvYngMsQyPHVTf1vfOw,297
128
130
  unfold/templates/unfold/components/chart/line.html,sha256=DHaZUFTlCs5cX7ioYdTzoN4ITHWNcEoNSUp7v3hlo_E,298
129
131
  unfold/templates/unfold/components/container.html,sha256=WBk1rGHnTsObi3pJCpL3dfFAUQ2abDmokU0Lee7R9CI,83
130
132
  unfold/templates/unfold/components/flex.html,sha256=_hBsQLJ6-7MfEfXNp5Wy-ykNtPMnnNg_io2IMGegn3s,134
131
133
  unfold/templates/unfold/components/icon.html,sha256=Qlhcf41FOwNVJ-nvA0RJ_Dn6JW6PUFXO6tOR3Xtf6e8,99
132
134
  unfold/templates/unfold/components/navigation.html,sha256=KNDfB6oT_dgbD8Fy09oRt6Txw7ERHa9iv-TPyFEo2wg,892
133
- unfold/templates/unfold/components/progress.html,sha256=Dh8Q5rW5oVoRFrAxCcTbId3qI_SeA7V5V8KsmLgA8Bc,631
134
- unfold/templates/unfold/components/separator.html,sha256=IuQQu_kMgZY9D9w9-l6PHuVF0cX0bJuxcJHGXWswEhU,168
135
+ unfold/templates/unfold/components/progress.html,sha256=BnH2uC_ZL5ITvMjHiHoM0gjtbRTLNU1-tFcfCuJO0BE,808
136
+ unfold/templates/unfold/components/separator.html,sha256=TlKnvg1h3diDvm9A_FWc2atflAxb4e3HtnxYTxR75SU,168
135
137
  unfold/templates/unfold/components/table.html,sha256=iC7mhLlPLRgCaV0sVjEkxIR7A4NLV2-rSHqEbmwpaHw,2028
136
138
  unfold/templates/unfold/components/text.html,sha256=-GjxvdiaBQIaNfPSzT6SSIwnc3R27FkSDQMoF3FDPso,102
137
139
  unfold/templates/unfold/components/title.html,sha256=aMYSO30ybFYqPnqwlJVh2uNmcgnVrRycZkHTjJTjpX8,171
138
140
  unfold/templates/unfold/helpers/account_links.html,sha256=Vd80PCa91D5v3gJJKKuEJ7ycL80n54XJEo-039ELsRU,1879
139
141
  unfold/templates/unfold/helpers/actions_row.html,sha256=d80pwsZ80J1pvlBMDj9dOfC-ybZ6KV9bNGsv4Yny8ZQ,1819
140
142
  unfold/templates/unfold/helpers/add_link.html,sha256=CUFZ3quvp1JMAPmTkFRjpUXSy9GVXnIWNcRzv_gpq1A,810
141
- unfold/templates/unfold/helpers/app_list.html,sha256=mhjpBMPh13VcMKn_vg_WyCnvt6c2CJBnIvEU2bjTaog,5456
143
+ unfold/templates/unfold/helpers/app_list.html,sha256=zeMeiSK-vlxrgP-jDkIN1k1mYCog033ybBSxw5POWvs,5516
142
144
  unfold/templates/unfold/helpers/app_list_default.html,sha256=T8xXI0LsEZCyttxXZGomGMkqEd8Wxj61RCYQ4YDxlHE,3908
143
145
  unfold/templates/unfold/helpers/attrs.html,sha256=Mwpj72kuwYj8hOT3J2T8qx6f1r_4xwwaS1slHA-82jI,166
144
146
  unfold/templates/unfold/helpers/boolean.html,sha256=6gXAMEJcNVB14je9uN32dxImXP3KMCiWPeKU5EAnawA,569
145
147
  unfold/templates/unfold/helpers/breadcrumb_item.html,sha256=Q9Usvwz2iGI9AYlNgyN0OZ9ZPftcoaXk37nxsFmCJSE,201
146
- unfold/templates/unfold/helpers/display_header.html,sha256=uJlgZoyukH7LumFGo0CTu4cbq5o9vw5S3iEwYCB7XNc,1259
148
+ unfold/templates/unfold/helpers/delete_submit_line.html,sha256=4aijRBjLFqVDZpUxUz_DfLS39IHl0-aTCCD5dyXW_qY,671
149
+ unfold/templates/unfold/helpers/display_header.html,sha256=HFuiSsgjrrfUFd8uwsxNiHbe4Mpt-9BeaUShgwbGGbo,1701
147
150
  unfold/templates/unfold/helpers/display_label.html,sha256=LS9DWzYjHkYLV27sZDwyXlg2sLJ0AlId9FbjnXpsbfg,317
148
151
  unfold/templates/unfold/helpers/field.html,sha256=Ds-zUHkdyxamfUCVNhxvtM0XoJg9OCA0QcsLbLWv4oo,882
149
152
  unfold/templates/unfold/helpers/field_readonly.html,sha256=O0gHEW46OWt1oUUk0lZiyR-mztWv_7IH6GpKRm2wUw4,235
150
- unfold/templates/unfold/helpers/field_readonly_value.html,sha256=z-tAWjbXpRLRmbpZezxg5t9uylV2AVFLUIPDSsH8dcs,409
151
- unfold/templates/unfold/helpers/fieldset_row.html,sha256=u1T9Wx5msJz-eGpID0w7jY-6x3YVWp7W8XbH39rC-yo,4143
153
+ unfold/templates/unfold/helpers/field_readonly_value.html,sha256=E6eIJbO-Y2TWmmzpffC5F3l7KYZ8G-QxstUIHTVRjKg,461
154
+ unfold/templates/unfold/helpers/fieldset_row.html,sha256=Eh2OO1WjqSs-wkGIo-d-ZfAE5dlp_n6lDd7uuX26_Pc,4374
152
155
  unfold/templates/unfold/helpers/fieldsets_tabs.html,sha256=GjFPlQgL-qv8bbxje5Zm1XL9v2_qFh-U3wcVvAOO5sE,1529
153
156
  unfold/templates/unfold/helpers/form_errors.html,sha256=EwerIJptSCWXvtAJ1IZKfEn98qlShBIGavsTThbklAs,266
154
157
  unfold/templates/unfold/helpers/form_label.html,sha256=8LkMPJjb7PhIk0U5898XM4qWl1AkNoGNHgRr06UtJQI,325
@@ -172,10 +175,10 @@ unfold/templates/unfold/helpers/tab_action.html,sha256=Hq20p5yRWi-wPwkFVI5uekoAF
172
175
  unfold/templates/unfold/helpers/tab_list.html,sha256=b84OUC12G1VpiL9jD8KWU2Xtvs5A8MZRxamjVTqGv2c,4497
173
176
  unfold/templates/unfold/helpers/theme_switch.html,sha256=21r_6v7rdpv1favvw5-5uwkRMUWwsAxcghdqDP38HYw,2212
174
177
  unfold/templates/unfold/helpers/userlinks.html,sha256=qWjtBt9Q_tU8a874ii0Qqg8t_d-SSYBTB_3QZfNlx9g,634
175
- unfold/templates/unfold/helpers/welcomemsg.html,sha256=RVIIwl9GXmdWauy1Q6vaiyPGGRpc3QWSZ07VLbb7mfM,1201
178
+ unfold/templates/unfold/helpers/welcomemsg.html,sha256=u-svEbNA-lg_hYM2ZGWJWuffSjkDNyyu8qa0O-5Q0yE,1263
176
179
  unfold/templates/unfold/layouts/base.html,sha256=bAXZDbyiyxNiE-49mqr7pHUFhC2mHZQzIDUY-js_yZ0,379
177
180
  unfold/templates/unfold/layouts/base_simple.html,sha256=T37-ncKZBLNnOlsUQq90rGl3sLdRjFaxWCPG399pkbE,1179
178
- unfold/templates/unfold/layouts/skeleton.html,sha256=J8ch2DbrGLeKdggdtjpuVG1m7VwcJoLjfBKROsOESKI,4068
181
+ unfold/templates/unfold/layouts/skeleton.html,sha256=IhCy6o2C7tdJKCYN5PusV6ET-rv-UHNCzwBkvVcwglM,4146
179
182
  unfold/templates/unfold/widgets/clearable_file_input.html,sha256=MOJXfId4e5jr6wnQJlFl0lwo4s9wwOicg_hQehx9bh8,2152
180
183
  unfold/templates/unfold/widgets/clearable_file_input_small.html,sha256=rChcaCdL34mDFjQUrpYOJdzey01EOMWm7_hsyclwLE8,2802
181
184
  unfold/templates/unfold/widgets/date.html,sha256=WXo2LG1v_gBZBSg-zocj7oujMKI0MWLYCIFfB04HMLQ,122
@@ -190,7 +193,7 @@ unfold/templates/unfold/widgets/split_money.html,sha256=AFLUBmzGbY-RXgsfz7gaDxVR
190
193
  unfold/templates/unfold/widgets/textarea.html,sha256=-ZLDGrtASero7L-J3VvTNq_KjPAZh_kLVw0Ow3awqXM,144
191
194
  unfold/templates/unfold/widgets/textarea_expandable.html,sha256=4xIGWb20DuwiwumndByrAyh7xF-ReXKLulSpDImX_cs,459
192
195
  unfold/templates/unfold/widgets/time.html,sha256=WXo2LG1v_gBZBSg-zocj7oujMKI0MWLYCIFfB04HMLQ,122
193
- unfold/templates/unfold/widgets/url.html,sha256=Q-SX1XERz76Gjhyaz-GialF6dEcW5yEmM7V-2ugQckE,262
196
+ unfold/templates/unfold/widgets/url.html,sha256=IRLgW44VTKN7UrSWeywJwaxQhfG5jhhXuT-KTadKX58,304
194
197
  unfold/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
198
  unfold/templatetags/unfold.py,sha256=jWumX0e2KIyDxz_CmIfyOu7blILxVBqUPtGi1VutaBo,6884
196
199
  unfold/templatetags/unfold_list.py,sha256=ofVee2a5WtBVNFExzqxvn8UrSxmPzczR4gF5jTbu0zU,13986
@@ -198,7 +201,7 @@ unfold/typing.py,sha256=1P8PWM2oeaceUJtA5j071RbKEBpHYaux441u7Hd6wv4,643
198
201
  unfold/utils.py,sha256=hs16AzAEtKb_tdTpLXuz3NqYhtP5JipSc_lkv5ULbbY,4921
199
202
  unfold/views.py,sha256=hQCyeeMa9kcJV1IZeeYqj8PGW7J4QWME8n-5n0UGmiU,1003
200
203
  unfold/widgets.py,sha256=HXihQ-dCvlN8uvHq1B1tzJlyBt4x800k4_5X14eiqKg,17086
201
- django_unfold-0.39.0.dist-info/LICENSE.md,sha256=Ltk_quRyyvV3J5v3brtOqmibeZSw2Hrb8bY1W3ya0Ik,1077
202
- django_unfold-0.39.0.dist-info/METADATA,sha256=_pgRxPBfnskJzqIiE0NyxPkeLH9R4vH9kgsfjehTcyU,4685
203
- django_unfold-0.39.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
204
- django_unfold-0.39.0.dist-info/RECORD,,
204
+ django_unfold-0.41.0.dist-info/LICENSE.md,sha256=Ltk_quRyyvV3J5v3brtOqmibeZSw2Hrb8bY1W3ya0Ik,1077
205
+ django_unfold-0.41.0.dist-info/METADATA,sha256=n2yv6AtcfKHGudgLMLXu3vnsICUqeVMPJHcndh0JTBo,4699
206
+ django_unfold-0.41.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
207
+ django_unfold-0.41.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 1.9.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
unfold/admin.py CHANGED
@@ -233,8 +233,11 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
233
233
  add_fieldsets = ()
234
234
  list_horizontal_scrollbar_top = False
235
235
  list_filter_submit = False
236
+ list_filter_sheet = True
236
237
  list_fullwidth = False
237
238
  list_disable_select_all = False
239
+ list_before_template = None
240
+ list_after_template = None
238
241
  change_form_before_template = None
239
242
  change_form_after_template = None
240
243
  compressed_fields = False
@@ -558,8 +561,12 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
558
561
  class TabularInline(ModelAdminMixin, BaseTabularInline):
559
562
  formfield_overrides = FORMFIELD_OVERRIDES_INLINE
560
563
  readonly_preprocess_fields = {}
564
+ ordering_field = None
565
+ hide_ordering_field = False
561
566
 
562
567
 
563
568
  class StackedInline(ModelAdminMixin, BaseStackedInline):
564
569
  formfield_overrides = FORMFIELD_OVERRIDES_INLINE
565
570
  readonly_preprocess_fields = {}
571
+ ordering_field = None
572
+ hide_ordering_field = False
@@ -26,7 +26,7 @@ class DropdownForm(forms.Form):
26
26
  widget = UnfoldAdminSelectWidget(
27
27
  attrs={
28
28
  "data-theme": "admin-autocomplete",
29
- "class": "admin-autocomplete",
29
+ "class": "unfold-admin-autocomplete admin-autocomplete",
30
30
  }
31
31
  )
32
32
  field = ChoiceField
@@ -38,7 +38,7 @@ class DropdownForm(forms.Form):
38
38
  self.widget = UnfoldAdminSelectMultipleWidget(
39
39
  attrs={
40
40
  "data-theme": "admin-autocomplete",
41
- "class": "admin-autocomplete",
41
+ "class": "unfold-admin-autocomplete admin-autocomplete",
42
42
  }
43
43
  )
44
44
  self.field = MultipleChoiceField
@@ -14,7 +14,7 @@
14
14
  {% endfor %}
15
15
 
16
16
  <template x-for="(item, index) in items" :key="item.key">
17
- <div class="flex flex-row">
17
+ <div class="flex flex-row" x-init="if ($el.getElementsByTagName('input')[0].name.includes('__prefix__')) { $el.getElementsByTagName('input')[0].name = $el.parentElement.getElementsByTagName('input')[0].name }">
18
18
  {% with widget=template %}
19
19
  {% include template.template_name %}
20
20
  {% endwith %}
@@ -26,7 +26,7 @@
26
26
  </template>
27
27
 
28
28
  <div class="flex flex-row">
29
- <div x-on:click="items.push({ key: new Date().getTime()})" class="bg-primary-600 border border-transparent cursor-pointer font-medium inline-block px-3 py-2 rounded-md text-sm text-white w-full lg:w-auto">
29
+ <div x-on:click="items.push({ key: new Date().getTime()})" class="bg-primary-600 border border-transparent cursor-pointer font-medium inline-block px-3 py-2 rounded-md text-center text-sm text-white w-full lg:w-auto">
30
30
  {% trans "Add new item" %}
31
31
  </div>
32
32
  </div>
@@ -5,7 +5,7 @@
5
5
  {% block breadcrumbs %}{% if not is_popup %}
6
6
  <div class="px-4 lg:px-12">
7
7
  <div class="container mb-6 mx-auto -my-3 lg:mb-12">
8
- <ul class="flex">
8
+ <ul class="flex flex-wrap">
9
9
  {% url 'admin:index' as link %}
10
10
  {% trans 'Home' as name %}
11
11
  {% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
@@ -8,7 +8,7 @@
8
8
  {% block breadcrumbs %}{% if not is_popup %}
9
9
  <div class="px-4 lg:px-12">
10
10
  <div class="container mb-6 mx-auto -my-3 lg:mb-12">
11
- <ul class="flex">
11
+ <ul class="flex flex-wrap">
12
12
  {% url 'admin:index' as link %}
13
13
  {% trans 'Home' as name %}
14
14
  {% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
@@ -9,7 +9,7 @@
9
9
  {% block breadcrumbs %}{% if not is_popup %}
10
10
  <div class="px-4 lg:px-12">
11
11
  <div class="container mb-6 mx-auto -my-3 lg:mb-12">
12
- <ul class="flex">
12
+ <ul class="flex flex-wrap">
13
13
  {% url 'admin:index' as link %}
14
14
  {% trans 'Home' as name %}
15
15
  {% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
@@ -39,9 +39,9 @@
39
39
  {% for perm in model_perms %}
40
40
  <td class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-left before:flex before:capitalize before:content-[attr(data-label)] before:items-center before:mr-auto first:border-t-0 lg:before:hidden lg:first:border-t lg:py-3 lg:table-cell dark:border-gray-800" data-label="{{ perm.name }}">
41
41
  {% if perm.codename in group_perms %}
42
- {% include "unfold/helpers/boolean.html" with value=False %}
43
- {% else %}
44
42
  {% include "unfold/helpers/boolean.html" with value=True %}
43
+ {% else %}
44
+ {% include "unfold/helpers/boolean.html" with value=False %}
45
45
  {% endif %}
46
46
  </td>
47
47
  {% endfor %}
@@ -38,10 +38,10 @@
38
38
 
39
39
  {% for perm in model_perms %}
40
40
  <td class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-left before:flex before:capitalize before:content-[attr(data-label)] before:items-center before:mr-auto first:border-t-0 lg:before:hidden lg:first:border-t lg:py-3 lg:table-cell dark:border-gray-800" data-label="{{ perm.name }}">
41
- {% if perm.codename in group_perms %}
42
- {% include "unfold/helpers/boolean.html" with value=False %}
43
- {% else %}
41
+ {% if perm.codename in user_perms %}
44
42
  {% include "unfold/helpers/boolean.html" with value=True %}
43
+ {% else %}
44
+ {% include "unfold/helpers/boolean.html" with value=False %}
45
45
  {% endif %}
46
46
  </td>
47
47
  {% endfor %}
@@ -12,7 +12,7 @@
12
12
  {% block breadcrumbs %}
13
13
  <div class="px-4 lg:px-12">
14
14
  <div class="container mb-6 mx-auto -my-3 lg:mb-12">
15
- <ul class="flex">
15
+ <ul class="flex flex-wrap">
16
16
  {% url 'admin:index' as link %}
17
17
  {% trans 'Home' as name %}
18
18
  {% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
@@ -23,7 +23,7 @@
23
23
  {% block breadcrumbs %}
24
24
  <div class="px-4 lg:px-12">
25
25
  <div class="container mb-6 mx-auto -my-3 lg:mb-12">
26
- <ul class="flex">
26
+ <ul class="flex flex-wrap">
27
27
  {% url 'admin:index' as link %}
28
28
  {% trans 'Home' as name %}
29
29
  {% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
@@ -6,7 +6,7 @@
6
6
  {% block breadcrumbs %}
7
7
  <div class="px-4 lg:px-12">
8
8
  <div class="container mb-6 mx-auto -my-3 lg:mb-12">
9
- <ul class="flex">
9
+ <ul class="flex flex-wrap">
10
10
  {% url 'admin:index' as link %}
11
11
  {% trans 'Home' as name %}
12
12
  {% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
unfold/forms.py CHANGED
@@ -10,6 +10,7 @@ from django.contrib.admin.forms import (
10
10
  from django.contrib.auth.forms import (
11
11
  AdminPasswordChangeForm as BaseAdminPasswordChangeForm,
12
12
  )
13
+ from django.contrib.auth.models import User
13
14
 
14
15
  try:
15
16
  from django.contrib.auth.forms import AdminUserCreationForm as BaseUserCreationForm
@@ -70,11 +71,10 @@ class AuthenticationForm(AdminAuthenticationForm):
70
71
  class UserCreationForm(BaseUserCreationForm):
71
72
  def __init__(
72
73
  self,
73
- request: Optional[HttpRequest] = None,
74
74
  *args,
75
75
  **kwargs,
76
76
  ) -> None:
77
- super().__init__(request, *args, **kwargs)
77
+ super().__init__(*args, **kwargs)
78
78
 
79
79
  self.fields["password1"].widget = UnfoldAdminPasswordInput(
80
80
  attrs={"autocomplete": "new-password"}
@@ -92,11 +92,10 @@ class UserCreationForm(BaseUserCreationForm):
92
92
  class UserChangeForm(BaseUserChangeForm):
93
93
  def __init__(
94
94
  self,
95
- request: Optional[HttpRequest] = None,
96
95
  *args,
97
96
  **kwargs,
98
97
  ) -> None:
99
- super().__init__(request, *args, **kwargs)
98
+ super().__init__(*args, **kwargs)
100
99
  self.fields["password"].widget = UnfoldReadOnlyPasswordHashWidget()
101
100
 
102
101
  self.fields["password"].help_text = _(
@@ -113,19 +112,19 @@ class UserChangeForm(BaseUserChangeForm):
113
112
  class AdminPasswordChangeForm(BaseAdminPasswordChangeForm):
114
113
  def __init__(
115
114
  self,
116
- request: Optional[HttpRequest] = None,
115
+ user: User,
117
116
  *args,
118
117
  **kwargs,
119
118
  ) -> None:
120
- super().__init__(request, *args, **kwargs)
119
+ super().__init__(user, *args, **kwargs)
121
120
 
122
121
  self.fields["password1"].widget.attrs["class"] = " ".join(INPUT_CLASSES)
123
122
  self.fields["password2"].widget.attrs["class"] = " ".join(INPUT_CLASSES)
124
123
 
125
124
 
126
125
  class AdminOwnPasswordChangeForm(BaseAdminOwnPasswordChangeForm):
127
- def __init__(self, *args, **kwargs) -> None:
128
- super().__init__(kwargs.pop("user"), *args, **kwargs)
126
+ def __init__(self, user: User, *args, **kwargs) -> None:
127
+ super().__init__(user, *args, **kwargs)
129
128
 
130
129
  self.fields["old_password"].widget.attrs["class"] = " ".join(INPUT_CLASSES)
131
130
  self.fields["new_password1"].widget.attrs["class"] = " ".join(INPUT_CLASSES)
unfold/sites.py CHANGED
@@ -7,8 +7,18 @@ from django.core.validators import EMPTY_VALUES
7
7
  from django.http import HttpRequest, HttpResponse
8
8
  from django.template.response import TemplateResponse
9
9
  from django.urls import URLPattern, path, reverse, reverse_lazy
10
+ from django.utils.decorators import method_decorator
10
11
  from django.utils.functional import lazy
11
12
  from django.utils.module_loading import import_string
13
+ from django.views.decorators.cache import never_cache
14
+
15
+ try:
16
+ from django.contrib.auth.decorators import login_not_required
17
+ except ImportError:
18
+
19
+ def login_not_required(func: Callable) -> Callable:
20
+ return func
21
+
12
22
 
13
23
  from .dataclasses import Favicon
14
24
  from .settings import get_config
@@ -178,6 +188,8 @@ class UnfoldAdminSite(AdminSite):
178
188
  },
179
189
  )
180
190
 
191
+ @method_decorator(never_cache)
192
+ @login_not_required
181
193
  def login(
182
194
  self, request: HttpRequest, extra_context: Optional[Dict[str, Any]] = None
183
195
  ) -> HttpResponse: