django-unfold 0.39.0__py3-none-any.whl → 0.41.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
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: