django-unfold 0.46.0__py3-none-any.whl → 0.48.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. {django_unfold-0.46.0.dist-info → django_unfold-0.48.0.dist-info}/METADATA +5 -6
  2. {django_unfold-0.46.0.dist-info → django_unfold-0.48.0.dist-info}/RECORD +52 -43
  3. {django_unfold-0.46.0.dist-info → django_unfold-0.48.0.dist-info}/WHEEL +1 -1
  4. unfold/admin.py +15 -16
  5. unfold/checks.py +4 -4
  6. unfold/components.py +5 -5
  7. unfold/contrib/filters/admin/__init__.py +43 -0
  8. unfold/contrib/filters/admin/autocomplete_filters.py +16 -0
  9. unfold/contrib/filters/admin/datetime_filters.py +212 -0
  10. unfold/contrib/filters/admin/dropdown_filters.py +100 -0
  11. unfold/contrib/filters/admin/mixins.py +146 -0
  12. unfold/contrib/filters/admin/numeric_filters.py +196 -0
  13. unfold/contrib/filters/admin/text_filters.py +65 -0
  14. unfold/contrib/filters/admin.py +32 -32
  15. unfold/contrib/filters/forms.py +68 -17
  16. unfold/contrib/forms/widgets.py +9 -9
  17. unfold/contrib/inlines/checks.py +2 -4
  18. unfold/contrib/simple_history/templates/simple_history/object_history.html +17 -1
  19. unfold/contrib/simple_history/templates/simple_history/object_history_list.html +1 -1
  20. unfold/dataclasses.py +9 -2
  21. unfold/decorators.py +4 -3
  22. unfold/settings.py +4 -2
  23. unfold/sites.py +176 -140
  24. unfold/static/unfold/css/styles.css +1 -1
  25. unfold/static/unfold/js/app.js +2 -2
  26. unfold/templates/admin/app_index.html +1 -5
  27. unfold/templates/admin/base_site.html +1 -1
  28. unfold/templates/admin/filter.html +1 -1
  29. unfold/templates/admin/index.html +1 -5
  30. unfold/templates/admin/login.html +1 -1
  31. unfold/templates/admin/search_form.html +4 -2
  32. unfold/templates/unfold/helpers/account_links.html +1 -1
  33. unfold/templates/unfold/helpers/actions_row.html +1 -1
  34. unfold/templates/unfold/helpers/change_list_filter.html +2 -2
  35. unfold/templates/unfold/helpers/change_list_filter_actions.html +1 -1
  36. unfold/templates/unfold/helpers/header_back_button.html +2 -2
  37. unfold/templates/unfold/helpers/language_switch.html +1 -1
  38. unfold/templates/unfold/helpers/navigation_header.html +15 -5
  39. unfold/templates/unfold/helpers/site_branding.html +9 -0
  40. unfold/templates/unfold/helpers/site_dropdown.html +19 -0
  41. unfold/templates/unfold/helpers/site_icon.html +10 -2
  42. unfold/templates/unfold/helpers/tab_list.html +7 -1
  43. unfold/templates/unfold/helpers/theme_switch.html +1 -1
  44. unfold/templates/unfold/layouts/base.html +1 -5
  45. unfold/templates/unfold/layouts/skeleton.html +1 -1
  46. unfold/templatetags/unfold.py +55 -22
  47. unfold/templatetags/unfold_list.py +2 -2
  48. unfold/typing.py +5 -4
  49. unfold/utils.py +3 -2
  50. unfold/views.py +2 -2
  51. unfold/widgets.py +27 -27
  52. {django_unfold-0.46.0.dist-info → django_unfold-0.48.0.dist-info}/LICENSE.md +0 -0
@@ -1,11 +1,10 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: django-unfold
3
- Version: 0.46.0
3
+ Version: 0.48.0
4
4
  Summary: Modern Django admin theme for seamless interface development
5
- Home-page: https://unfoldadmin.com
6
5
  License: MIT
7
6
  Keywords: django,admin,tailwind,theme
8
- Requires-Python: >=3.8
7
+ Requires-Python: >=3.9
9
8
  Classifier: Environment :: Web Environment
10
9
  Classifier: Framework :: Django
11
10
  Classifier: Intended Audience :: Developers
@@ -13,13 +12,13 @@ Classifier: License :: OSI Approved :: MIT License
13
12
  Classifier: Operating System :: OS Independent
14
13
  Classifier: Programming Language :: Python
15
14
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.8
17
15
  Classifier: Programming Language :: Python :: 3.9
18
16
  Classifier: Programming Language :: Python :: 3.10
19
17
  Classifier: Programming Language :: Python :: 3.11
20
18
  Classifier: Programming Language :: Python :: 3.12
21
19
  Classifier: Programming Language :: Python :: 3.13
22
20
  Requires-Dist: django (>=3.2)
21
+ Project-URL: Homepage, https://unfoldadmin.com
23
22
  Project-URL: Repository, https://github.com/unfoldadmin/django-unfold
24
23
  Description-Content-Type: text/markdown
25
24
 
@@ -52,7 +51,7 @@ Have you decided to start using Unfold but don’t have time to make the switch
52
51
  - **Sidebar:** Simplifies the creation of sidebar navigation with icons, collapsibles, and more.
53
52
  - **Dark mode:** Supports both light and dark mode versions.
54
53
  - **Actions:** Offers multiple ways to define actions within different parts of the admin interface.
55
- - **Filters:** Custom dropdowns, numeric, datetime, and text fields.
54
+ - **Filters:** Custom dropdowns, autocomplete, numeric, datetime, and text fields.
56
55
  - **Dashboard:** Includes helpers for creating custom dashboard pages.
57
56
  - **Components:** Reusable UI components such as cards, buttons, and charts.
58
57
  - **WYSIWYG widget:** Built-in support for WYSIWYG (Trix).
@@ -1,13 +1,20 @@
1
1
  unfold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- unfold/admin.py,sha256=mipNoMPKxrKv3dhzpWqWJgkE5U6Ve0O4EKQWBI6pvws,20060
2
+ unfold/admin.py,sha256=kIMEWKwiqnBo5eEDa_sBUlHh1XsZUhCt-Ct9bQ_H9vg,20018
3
3
  unfold/apps.py,sha256=SlBXPYrUd2uXn67qFbRvbXSUk3XFWrF4-5WELgDCvho,381
4
- unfold/checks.py,sha256=Smgji9w19hnYjJElJ_FJnnyTEAE-E-OUB6otHu7lasY,1670
5
- unfold/components.py,sha256=OKYEpAeawhqSUWOy0VB8EZTsPRzV19oOjSrWckLLeHI,1295
4
+ unfold/checks.py,sha256=8I3i4xR_KgyJdpQyZUZzKNeyYf-sNzg6PAlsREuMfgI,1664
5
+ unfold/components.py,sha256=vqkQzseYUvLXDohmTVAlbKopALjyX4WA9yglvdfhqu4,1283
6
6
  unfold/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  unfold/contrib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- unfold/contrib/filters/admin.py,sha256=L69oFj7DZMkLqJSJwY2bEh7VF_XqBEQ-uWYnWks1pME,21152
8
+ unfold/contrib/filters/admin/__init__.py,sha256=2pyv21jMqQVC8pnP8FOERHRH2hgZSOLQzV0BUn5wjHo,1216
9
+ unfold/contrib/filters/admin/autocomplete_filters.py,sha256=Jh3m3iQ8YubZRQDVzHPGfpk9RulOhHkZc0N7L6KV9wc,514
10
+ unfold/contrib/filters/admin/datetime_filters.py,sha256=cVari_7jsfeYxJoRBhcAUOr6v9XdtDtMuMs-S1Irafo,7757
11
+ unfold/contrib/filters/admin/dropdown_filters.py,sha256=SycJ6zgZbR4isy16oxiD0ZpAX_WuKUYNcifJG71b8Sw,3323
12
+ unfold/contrib/filters/admin/mixins.py,sha256=VMFyXz9yXGjOphB2pllKJSbJGnWkIpY33iq56OoG6Cg,4767
13
+ unfold/contrib/filters/admin/numeric_filters.py,sha256=8GNmesgMmMIfEZb2IrGbaBoJuvB2FpIc7wPIPBpHat4,6420
14
+ unfold/contrib/filters/admin/text_filters.py,sha256=NXyKm0Ed24N9pNfR7Dys5kTpZ_V5FUurdxk7KDMdRIg,2084
15
+ unfold/contrib/filters/admin.py,sha256=TvgtP5PZVMD9JJ22YdjC1CyH0Q9oxZON5zVXq2yGZVU,21127
9
16
  unfold/contrib/filters/apps.py,sha256=wEySJy0gMLzFLb9XNKE-RexiO05X7NaQ5QmxZyziJ_k,136
10
- unfold/contrib/filters/forms.py,sha256=p1vfCdhBVEGmvHG0EAtv12B1Ssm2xtXuImL4R0bHOV0,5748
17
+ unfold/contrib/filters/forms.py,sha256=lIhrmYv6rXXIT14xaChDpfzklUb-B9w8yz5YgdEegOg,7238
11
18
  unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css,sha256=rddL_jOGGVEY6wR-aw0VYovAfz5fPeAIsulrlSNb1hc,4221
12
19
  unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js,sha256=jgFNBDf6aHvUlyv0LEDHggXO-xA8pWOCWFWcVupdA30,19332
13
20
  unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js,sha256=nTkiiJk4Abn9d6KigxPSEsereFhFq-v5n_boiiY1eII,1668
@@ -27,7 +34,7 @@ unfold/contrib/forms/static/unfold/forms/js/trix.js,sha256=HJXkWw7Mtocr7IeyBVplE
27
34
  unfold/contrib/forms/templates/unfold/forms/array.html,sha256=utd_6pwpIDAP2WWg9uXofZzyuunk_u-x7EL7L-v5H-0,1779
28
35
  unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html,sha256=wK4yPTuKLmKdr_zonhksD3qONtbzchV19baIk6mqTXk,9746
29
36
  unfold/contrib/forms/templates/unfold/forms/wysiwyg.html,sha256=uLLf59jsD3apAm9Uh1TH4pwCOtO7pL2djAeZLOHyNAI,399
30
- unfold/contrib/forms/widgets.py,sha256=PuB1XnaKaL3ub-wbdpZAhvu9ZE79DBoAUG7FzyDFoiM,3139
37
+ unfold/contrib/forms/widgets.py,sha256=YiG6jRrVWMNW3NGAbqvm68FgcdTKyforROmhL7oAK9U,3127
31
38
  unfold/contrib/guardian/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
39
  unfold/contrib/guardian/apps.py,sha256=ObJqwh4vHxkD4XfduP5IQAiYiWZxsXUOUqF1_R1GsRI,136
33
40
  unfold/contrib/guardian/templates/admin/guardian/model/change_form.html,sha256=FSJc4MYYWyzZAy8Ay0b7Ov-cUo-oELHOM5fQehM54Lg,403
@@ -57,25 +64,25 @@ unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.
57
64
  unfold/contrib/inlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
65
  unfold/contrib/inlines/admin.py,sha256=LloGe9KaY0hb9LX0jICpWi01DcdnSCXRfpAdY9VxkiY,5929
59
66
  unfold/contrib/inlines/apps.py,sha256=Z9JBnzywq-DanZbD56fG0ndBfLXbojzkjVBleqoOBSU,136
60
- unfold/contrib/inlines/checks.py,sha256=8sdyBcxw0erqQvp9sHlpGgy0rXfum-cd2eQE0rXFKQ0,559
67
+ unfold/contrib/inlines/checks.py,sha256=0vkHUh-MtNSTrcOjCLbZmtI4961fFOygOv_dBAps6zw,534
61
68
  unfold/contrib/inlines/forms.py,sha256=s49xrIkQTbvSMsrP4DydXWkpP1v8NCUmQw_Bcoqf0i4,1322
62
69
  unfold/contrib/simple_history/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
70
  unfold/contrib/simple_history/apps.py,sha256=eF_KVYb60CAnGgWk2Z1YKYGfgA3TJBMr229qI7e2pgU,153
64
- unfold/contrib/simple_history/templates/simple_history/object_history.html,sha256=tlSA-y1742cCIIz7VHRBOvw0op9KT6gMhYVJWK0Tbdw,745
71
+ unfold/contrib/simple_history/templates/simple_history/object_history.html,sha256=z0yFKZB9iBX2aNanx-yBAD-ikshE1FCfbi2lTNDfIgA,1683
65
72
  unfold/contrib/simple_history/templates/simple_history/object_history_form.html,sha256=JKCe-QTBZMB2ol5LPiX3gNuNxFpi_rqlXC9X92PFBPE,2296
66
- unfold/contrib/simple_history/templates/simple_history/object_history_list.html,sha256=qp_D3gkKYaZPPfsgJrLa84hMdxFkEyI_pf4hynmi2zY,6852
73
+ unfold/contrib/simple_history/templates/simple_history/object_history_list.html,sha256=ls_xEAAgGzbu0IXdjZk7scEyEJx0S7i3Khr9ND98gzY,6842
67
74
  unfold/contrib/simple_history/templates/simple_history/submit_line.html,sha256=y8BleGHPNztA_R37rTB-zjJ68uDbE8flYSvMD0Jfl5Y,1734
68
- unfold/dataclasses.py,sha256=4PAWLVlUhyGMq1Mwai7afCgrRO0Inulw0opFUKVEOBk,483
69
- unfold/decorators.py,sha256=jyjE2sunazp8gK1QIsNRJGEEDwO7RDKWDKnOI3GDWZE,3338
75
+ unfold/dataclasses.py,sha256=41LuzojpU1NehkpbPP4FaJwMTXZtwb6jKNhc0iLQlqY,587
76
+ unfold/decorators.py,sha256=7VNVSz3KoaMwCRAcBGO18wURXozXWrf_B0qPQity46c,3359
70
77
  unfold/exceptions.py,sha256=gcCj1ox61E137bk_0Cqy4YC3SttdPgB-fiJUqpmyHSE,43
71
78
  unfold/fields.py,sha256=yhtpDfqycpOxqdQlbncCg9qhELxGk3AtXizkZyzzH0g,7410
72
79
  unfold/forms.py,sha256=BKv7eCbv29eCIuf1d_ZBmD4-_OIIzRaopiFd2nKbXNY,4520
73
- unfold/settings.py,sha256=5VqCrNcOdD_fe1z_O-Qt3LmXseeVSQEsUWrsmcBhrzc,2622
74
- unfold/sites.py,sha256=iXbwaDx5c_rFxXUrKIKeQxOFcCZ4-_nLBWCWIwNdC7U,15146
80
+ unfold/settings.py,sha256=5gs0iewBoUUrsF9LHHqcGOhW1HnyfZWY_zXuATjJOzE,2671
81
+ unfold/sites.py,sha256=EVGzu9GvMW6iwl22htt7OaPnXAzTNN4uAwLrj149X2I,15998
75
82
  unfold/static/admin/js/admin/RelatedObjectLookups.js,sha256=alI0-yq7YPDJJJn-yg1ce79-Cv88yQDUrfaGqFZnsaY,9048
76
83
  unfold/static/admin/js/inlines.js,sha256=gxmQEUlJ9yasELjz9qpluogFZB-bD1KJfHs4PI7UjsA,14687
77
84
  unfold/static/unfold/css/simplebar.css,sha256=5LLaEM11pKi6JFCOLt4XKuZxTpT9rpdq_tNlaQytFlU,4647
78
- unfold/static/unfold/css/styles.css,sha256=uELyfb7w1gGpsd5HkhRGB3Hjt6Y-l3LC7Rb5UT7bYP8,157275
85
+ unfold/static/unfold/css/styles.css,sha256=2e50NohpwTJCkCq4h0lC17mpFLF3uwz-cKTxZCtF7G0,158571
79
86
  unfold/static/unfold/fonts/inter/Inter-Bold.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
80
87
  unfold/static/unfold/fonts/inter/Inter-Medium.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
81
88
  unfold/static/unfold/fonts/inter/Inter-Regular.woff2,sha256=O88EyjAeRPE_QEyKBKpK5wf2epUOEu8wwjj5bnhCZqE,46552
@@ -88,19 +95,19 @@ unfold/static/unfold/js/alpine.js,sha256=NY2a-7GrW--i9IBhowd25bzXcH9BCmBrqYX5i8O
88
95
  unfold/static/unfold/js/alpine.persist.js,sha256=jFBwr6faTqqhp3sVi4_VTxJ0FpaF9YGZN1ZGLl_5QYM,837
89
96
  unfold/static/unfold/js/alpine.resize.js,sha256=mXR2L6neT584cfNLY5_imDq5DKjW1noXys7fhb1yxY4,703
90
97
  unfold/static/unfold/js/alpine.sort.js,sha256=q6LxgConwu8M8R03mZSBcsKwJv6fF7oomP8sqLxVQ0w,37891
91
- unfold/static/unfold/js/app.js,sha256=dntPgbih0m4q2XCA3FmjQR5ypC6csekjwHp-3iA4aSY,7736
98
+ unfold/static/unfold/js/app.js,sha256=mxCSV8gZvRLHab-_Xm_229NtQ9IX-59vS_GKWTp9liM,7748
92
99
  unfold/static/unfold/js/chart.js,sha256=22W6cFERR-CElMOKRgMMicueMVP0Vf7FBEBYH8Z8tCk,200633
93
100
  unfold/static/unfold/js/htmx.js,sha256=acrv0NqSJpBm5yXX_hdeJrnVDJYuMFZFnAxHcVTNudM,50918
94
101
  unfold/static/unfold/js/select2.init.js,sha256=siSDCwzy2PsOwA0Kj26JA_ELBtZlS70O8D8f1qTMmqg,291
95
102
  unfold/static/unfold/js/simplebar.js,sha256=t-uG1FAD6ZoiMeN--wac0XRS7SxoDVG6zvRnGuEp7X8,27176
96
103
  unfold/styles.css,sha256=XrdDgMYgyCw77ieNcxhHcwhkRLBvQCa-5PBf66JLZvU,18796
97
104
  unfold/templates/admin/actions.html,sha256=aroIid16mORcx-0p8O2dOoWupEoTGX66pt-PAXjSYZ0,3063
98
- unfold/templates/admin/app_index.html,sha256=fphodUAgaL7X4pOz-QxiWOKnESEs8wRqPoShSF6iBaU,1345
105
+ unfold/templates/admin/app_index.html,sha256=GSBry97gDcK3scTP-Fs4FXcSItRxxE87Wv4sDtMTlbc,1244
99
106
  unfold/templates/admin/app_list.html,sha256=VtntgHpbZdXbt_HXBLAtbuMdz1alS7F_S7eG37M5Rig,2855
100
107
  unfold/templates/admin/auth/user/add_form.html,sha256=kZDtUyhrvCIH9rlAq0iXLKYt97j1a-GsrWZQCQDASYM,479
101
108
  unfold/templates/admin/auth/user/change_password.html,sha256=OxpsKnVQm5lDrK5tGH0EAPFCPs288m0Jcy5WNYsdBXw,2896
102
109
  unfold/templates/admin/base.html,sha256=3xQmoD_7cu2UlgEdvnt7v_CibT9t1Iul0b-VU2Awu_U,2395
103
- unfold/templates/admin/base_site.html,sha256=FM8OOaXsQqJlYapeJvBznXCOt7poMiWrweTWcsMHzeI,365
110
+ unfold/templates/admin/base_site.html,sha256=UOsecaCycpyn_ygJNIKO7MQtDFJuHv--r83-mzaVY30,300
104
111
  unfold/templates/admin/change_form.html,sha256=LfeAeLYpJvNhOMJWQFeb9oSrAznlB4pnFrqTVMCIy4o,5340
105
112
  unfold/templates/admin/change_form_object_tools.html,sha256=eyeH-i2HgEM0Yi-OJA2D1VnKJyC19A_my1IDGxxoP8Y,593
106
113
  unfold/templates/admin/change_list.html,sha256=V2DgxlGaQvcOS1qAxe4no1EJCq-9nIOa10kYLkcE2Ag,5008
@@ -111,15 +118,15 @@ unfold/templates/admin/delete_confirmation.html,sha256=yT_NHbFHZEjkSCaGVcM52GCG-
111
118
  unfold/templates/admin/delete_selected_confirmation.html,sha256=QR0JhrPR8YI8KpQnB3xyrKxaui-_pEQmfaMDbcXjjZ0,4391
112
119
  unfold/templates/admin/edit_inline/stacked.html,sha256=-ASy7Jd0SwWBDxurucbus86YT2AokJEcCUrqPlHVDQA,7644
113
120
  unfold/templates/admin/edit_inline/tabular.html,sha256=FBgzUb-U0cZCN28-cpHzRSyPE6bgseD_r3MY1AP0nGQ,2813
114
- unfold/templates/admin/filter.html,sha256=ZXldjgLjrBVrNEtAc9H9zlMd_lXJBDhBk2yf2rMG1-Y,1965
121
+ unfold/templates/admin/filter.html,sha256=ZnnJbg-9e6LM0OyKJW7V-DA7mmxkGhJeOpEfnM5JGM8,1998
115
122
  unfold/templates/admin/includes/fieldset.html,sha256=gX-dc-jPLswk21XSKUXzAU8WFl3CFfeVrIAU2bviPyg,812
116
123
  unfold/templates/admin/includes/object_delete_summary.html,sha256=FgwfapZCKWtnFtTHqh1MRuxxLot4bAw92WCcR_V8ImI,444
117
- unfold/templates/admin/index.html,sha256=pkGdKWdD3zzOvkRdELvdb15sleSpfl4eHPA14PAh7z0,684
118
- unfold/templates/admin/login.html,sha256=cer0pvCSNHrXltlgE1-2j9u4hK4XQ1yUjQbWXHaBYPQ,4445
124
+ unfold/templates/admin/index.html,sha256=JnNDpNKqFKVKMQvpUQo6ddcFqGadK5g78pxpKAHLuMU,583
125
+ unfold/templates/admin/login.html,sha256=5khGm_cafDVQaDRwaTtix4g2DH4R4LrwgqO0S4aumaE,4476
119
126
  unfold/templates/admin/nav_sidebar.html,sha256=cadJwXcReRHwVTpXGycF3uv5VZ5JDcIbY1pCabeQlCo,250
120
127
  unfold/templates/admin/object_history.html,sha256=bfad4_lfLQFcoMV67yW7BnAi1Hwrptmgxj2tgPYQjtI,4816
121
128
  unfold/templates/admin/pagination.html,sha256=1UIc6Hm2LnDDAHUE5UjuPzdFdiAat4tF6sk058UfRP0,2251
122
- unfold/templates/admin/search_form.html,sha256=FUSQPwjjKrsarJxar6O2wFhucy0Eq7EOc6V-EHt86sE,1370
129
+ unfold/templates/admin/search_form.html,sha256=eQkwq4OWVgNUSjZPzxAjtT4LcxUNcTSgDVKJ4lWwslQ,1447
123
130
  unfold/templates/admin/submit_line.html,sha256=5mxHoCVwMuocYW27P2YORmXduCNd251jTuJgHjxXvfo,4501
124
131
  unfold/templates/auth/widgets/read_only_password_hash.html,sha256=bQiYKDKJkyVP0_2eJG16oKviB4WEA0V7lSp6sGfgows,751
125
132
  unfold/templates/registration/logged_out.html,sha256=GgLzqmOGpiw5FcA-Aw_T6YvhYHhGFWhyES40T28waLQ,1002
@@ -140,8 +147,8 @@ unfold/templates/unfold/components/table.html,sha256=_mIfauxVCt7gFC8CJpDdBp3TaGc
140
147
  unfold/templates/unfold/components/text.html,sha256=-GjxvdiaBQIaNfPSzT6SSIwnc3R27FkSDQMoF3FDPso,102
141
148
  unfold/templates/unfold/components/title.html,sha256=aMYSO30ybFYqPnqwlJVh2uNmcgnVrRycZkHTjJTjpX8,171
142
149
  unfold/templates/unfold/components/tracker.html,sha256=-PvDHdAAB2G5mKXpQUtljWJYhhavsa1aEoBvLrCiCJo,284
143
- unfold/templates/unfold/helpers/account_links.html,sha256=dU72CTNO1KubSa-lhTedM1KaGqES8HmkoTp33KBDWAw,1869
144
- unfold/templates/unfold/helpers/actions_row.html,sha256=p_Rn9B-izHYAQTGiivm4NDqfvX2N5h0Mva4Ak1wHBLA,1960
150
+ unfold/templates/unfold/helpers/account_links.html,sha256=8LBsa4uvwcbqc2kewHfSC8HaQAL3B-hPQIzV81rw_TU,1886
151
+ unfold/templates/unfold/helpers/actions_row.html,sha256=0sz8i-dIDbCvmp-5JfMPZU3d_pfH43V7eXa4lIzF0EM,1977
145
152
  unfold/templates/unfold/helpers/add_link.html,sha256=Z0TzUavXH8AQ7A-I0SQ79t-UI87dyP_PZEpsDrm13Q8,810
146
153
  unfold/templates/unfold/helpers/app_list.html,sha256=eIvBuP_g8oHvXZTy-IMjyynFCC1CChtMq4qZia6i77E,5751
147
154
  unfold/templates/unfold/helpers/app_list_default.html,sha256=74x9GIhXHp4J-qxfyS7siSaV8A4XlRwc_ivzvvKw_FY,3902
@@ -149,8 +156,8 @@ unfold/templates/unfold/helpers/attrs.html,sha256=Mwpj72kuwYj8hOT3J2T8qx6f1r_4xw
149
156
  unfold/templates/unfold/helpers/boolean.html,sha256=kcSZr3siQeBWIy_jsx1tFf4m6IB3ooRnu8UUNQrh6so,569
150
157
  unfold/templates/unfold/helpers/breadcrumb_item.html,sha256=9T6ojN7LOXIlgwSwlIwHgy5U22eQYtarCqcmzsQIoPU,201
151
158
  unfold/templates/unfold/helpers/change_list_actions.html,sha256=p1_vC2Q_Fb-gAHA8y1zzOXqqn5TPQMrQfE26PkOY_ok,656
152
- unfold/templates/unfold/helpers/change_list_filter.html,sha256=GlKdsLwnAcE8LS7FXQaV0tMWgCCgKdY6HX5IBhvmf7A,1876
153
- unfold/templates/unfold/helpers/change_list_filter_actions.html,sha256=nFiZltfPF0pT7s6eX87o7QNMC_NFG_RWaF9NlwxD9Fk,1742
159
+ unfold/templates/unfold/helpers/change_list_filter.html,sha256=0l-c4H2PcDkAuzI6asAJf2rBfYavYG62F9d7yWWdkSI,1852
160
+ unfold/templates/unfold/helpers/change_list_filter_actions.html,sha256=Dy8CGBPNuMJAHf1_ynGYOjLrsemQJI1vkDldKBWtSlk,1777
154
161
  unfold/templates/unfold/helpers/delete_submit_line.html,sha256=N1w_TDIDN7Spj5diuhRUVOVgz2TiSeHVK2QvBjTLv2w,665
155
162
  unfold/templates/unfold/helpers/display_header.html,sha256=rhru2GSxR0mH8_FEQuQVIS8gGGjaiWMV9f2HCPGMsaQ,1698
156
163
  unfold/templates/unfold/helpers/display_label.html,sha256=LS9DWzYjHkYLV27sZDwyXlg2sLJ0AlId9FbjnXpsbfg,317
@@ -170,11 +177,11 @@ unfold/templates/unfold/helpers/fieldsets_tabs.html,sha256=KW2rzVqpIICEu55GR_Knu
170
177
  unfold/templates/unfold/helpers/form_errors.html,sha256=EwerIJptSCWXvtAJ1IZKfEn98qlShBIGavsTThbklAs,266
171
178
  unfold/templates/unfold/helpers/form_label.html,sha256=BRX3DxVQfEvcmpFcRuhl4v_icMCCd5O_zmYm6MGLtts,327
172
179
  unfold/templates/unfold/helpers/header.html,sha256=ZoQH_Fs1v7fbo6fWQ5UEgfM9xPQlsYQxeabLf7nndB8,1050
173
- unfold/templates/unfold/helpers/header_back_button.html,sha256=0c8KPfVEl_ib0G_81TueVAq5fo4vtr3GCuinhTONw4g,371
180
+ unfold/templates/unfold/helpers/header_back_button.html,sha256=6DXkxsZJnIt0Z_AILDJNlj1gntEetFD-_b40mWFXwro,413
174
181
  unfold/templates/unfold/helpers/help_text.html,sha256=o-2_hyruIr_Xt0fo38aGgrpptPJFhddnVMPOVQOYhE4,113
175
182
  unfold/templates/unfold/helpers/history.html,sha256=QUYUQXcccyIl9pKPwVS_R8Is2Zo096rLZA6inlGNhkw,1921
176
183
  unfold/templates/unfold/helpers/label.html,sha256=pGzRBfuY8tos-imyA9psBxj7r93LUTfr78ff2rYPvmc,900
177
- unfold/templates/unfold/helpers/language_switch.html,sha256=WDVFkPrym3Kd5PKlULSxhZLuk0w3DCaIZVvjgPvW1SE,1469
184
+ unfold/templates/unfold/helpers/language_switch.html,sha256=RB7TMbLFaDejOLoNtE1mQoCtqVMfLTvgpLfTBXj85_s,1486
178
185
  unfold/templates/unfold/helpers/messages/debug.html,sha256=7GhaVXLkrdyecr6yAnLxyyPT5a8TMHkRFq-EfXJrymI,141
179
186
  unfold/templates/unfold/helpers/messages/error.html,sha256=5s51qKr0vHnIWngsc2U1TK9mAV3yBqwa7ekAYMyumlI,592
180
187
  unfold/templates/unfold/helpers/messages/errornote.html,sha256=pJ4Xjmp6ZimpimqMYUdCK6VZcWn_qlCSNTjRyyiZu-E,393
@@ -183,22 +190,24 @@ unfold/templates/unfold/helpers/messages/success.html,sha256=FVg3HNLW7i6VVZLqiUz
183
190
  unfold/templates/unfold/helpers/messages/warning.html,sha256=1bJj813EfxNSWcdQj6rM9bon4QTgMyrMydZY521h53E,149
184
191
  unfold/templates/unfold/helpers/messages.html,sha256=I9RIKfi4T65AG16-2s0C32RwbFkn0qLhdSqDfXpSbyE,915
185
192
  unfold/templates/unfold/helpers/navigation.html,sha256=HNr9bxZOg84zsbgORkOhJFXKSp0c2im438yiWCfonb0,787
186
- unfold/templates/unfold/helpers/navigation_header.html,sha256=LFC-Wwhq0Zow9wMBxz8LE-TBVywN0qC2KnLFFakO-kc,591
193
+ unfold/templates/unfold/helpers/navigation_header.html,sha256=NrRCeHo_vrEPj4y8YYju9J7hNCGoLYL0AVR77N2_Tk8,1328
187
194
  unfold/templates/unfold/helpers/pagination_current_item.html,sha256=4cZ2KLVcP0Y7xuGyXgexDQ07r94cgM5Gnmtv11dkRPQ,69
188
195
  unfold/templates/unfold/helpers/pagination_ellipsis.html,sha256=8g0KUUKtqRkXx_EBLGtsJsiYQO4tPS3GazZjxT90e0M,56
189
196
  unfold/templates/unfold/helpers/search.html,sha256=w8Ute3qVfSIqUXzA3TKOx91RzW_qnffFi2Oe9qedtV4,1643
190
197
  unfold/templates/unfold/helpers/search_results.html,sha256=5gxOAfFBPOkRgDziyYio6ZXcDG1bzFw7t-KXGFaWrUk,653
191
- unfold/templates/unfold/helpers/site_icon.html,sha256=KYN0gI8U2Eoh2CFJxxYrwA0Oj6dTx04lnCdxMNRG2Hk,874
198
+ unfold/templates/unfold/helpers/site_branding.html,sha256=_pUyOvdjlV624eRq0wjpJkgXpn9DCDGc-0U6Mw0FupI,266
199
+ unfold/templates/unfold/helpers/site_dropdown.html,sha256=2UrE2DA-sbgTEce97rP57WctAuB-1XGGJLWbUDy-xVY,869
200
+ unfold/templates/unfold/helpers/site_icon.html,sha256=5Mr6VmLmKpGbgROlfJHVkaCes-K1i42ZhStdTFMfOEk,1207
192
201
  unfold/templates/unfold/helpers/site_logo.html,sha256=S_QJoT2qh0xw0ciaKxoT4GJ6QIH5eqgRSC0abbWWkOI,423
193
202
  unfold/templates/unfold/helpers/submit.html,sha256=4Mgf4lx7Atm8GPqD6LTJK3NA9zoSJjs9VPig7sDp8Ao,203
194
203
  unfold/templates/unfold/helpers/tab_action.html,sha256=l7TBZm5FjDjlJpTsYXFonLSFBDpN91jDiILY3hjjj5s,376
195
- unfold/templates/unfold/helpers/tab_list.html,sha256=FT_DMLyS0fBcV8LNJnwtGbkg0agDsLe0EmcawDfOxig,4509
196
- unfold/templates/unfold/helpers/theme_switch.html,sha256=jiHqwz46GFb_pXjP23VTzV0S4E2LB-fdKpsIfjDaB8w,2201
204
+ unfold/templates/unfold/helpers/tab_list.html,sha256=ULuTZ7VaUFsgtqNr9eCb-A_Qmhp7gqt43V8sdu5fEII,5032
205
+ unfold/templates/unfold/helpers/theme_switch.html,sha256=Kh3Q8RuBWCUuY8YJLwBwd5yKzDhK6y0Ggx_ERoGEGv8,2218
197
206
  unfold/templates/unfold/helpers/userlinks.html,sha256=oZqiwCxG_zRecAbzYrr8_hQvkndVB6-liP6LEZM1UZc,863
198
207
  unfold/templates/unfold/helpers/welcomemsg.html,sha256=a7VjZ8J1mn-DAo57nhUP096SEcBOqcCWrWt2qoT0cyg,1882
199
- unfold/templates/unfold/layouts/base.html,sha256=bAXZDbyiyxNiE-49mqr7pHUFhC2mHZQzIDUY-js_yZ0,379
208
+ unfold/templates/unfold/layouts/base.html,sha256=e9T-vuPvrySHf23LLwRuTQXUg0Q4x-6gmT_yXghqc-I,278
200
209
  unfold/templates/unfold/layouts/base_simple.html,sha256=VigjNWnWOt_XtbahvqsroPf8mdwl7cDGbg5fEaLmG9s,1211
201
- unfold/templates/unfold/layouts/skeleton.html,sha256=Z0N9FkqQRmBANMHg68-I_wupbywR3OThGzNMQGLwS3w,4540
210
+ unfold/templates/unfold/layouts/skeleton.html,sha256=cE29ydXMseyXut1k7Yme3alnUBFXhBDxT0WFZCgrvGQ,4600
202
211
  unfold/templates/unfold/templatetags/preserve_changelist_filters.html,sha256=sx2jUhogNY4emBhY8PqxQ6mXifbXQb_IQI9Hd0boJI0,111
203
212
  unfold/templates/unfold/widgets/clearable_file_input.html,sha256=4vsLRjqOmGqdU4aPSq81rc-mdRvpBr-H_bC5ScyUkEY,2231
204
213
  unfold/templates/unfold/widgets/clearable_file_input_small.html,sha256=NNlosUwhzv-3SZH9LdliL5c6fdoVNRb1JP0uHwFV-N8,2849
@@ -216,13 +225,13 @@ unfold/templates/unfold/widgets/textarea_expandable.html,sha256=Pqi2udY0FWxVA-B1
216
225
  unfold/templates/unfold/widgets/time.html,sha256=WXo2LG1v_gBZBSg-zocj7oujMKI0MWLYCIFfB04HMLQ,122
217
226
  unfold/templates/unfold/widgets/url.html,sha256=IRLgW44VTKN7UrSWeywJwaxQhfG5jhhXuT-KTadKX58,304
218
227
  unfold/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
219
- unfold/templatetags/unfold.py,sha256=l2OrOfU-m6sXvaGmSgQI3gvJoJ8PevGhK99YkrL8RxE,11181
220
- unfold/templatetags/unfold_list.py,sha256=QSDm69hqo3GpOMRe4O2uw7KpGirQCzXnpq23ZrZNyPw,14239
221
- unfold/typing.py,sha256=1P8PWM2oeaceUJtA5j071RbKEBpHYaux441u7Hd6wv4,643
222
- unfold/utils.py,sha256=36WgmgGRayf_fkNtjoFoI1_G9w8f8gZflNzzqQ3256U,5459
223
- unfold/views.py,sha256=hQCyeeMa9kcJV1IZeeYqj8PGW7J4QWME8n-5n0UGmiU,1003
224
- unfold/widgets.py,sha256=u3E_T4fBzP1_UL2gWuofX98mthINBRdQj3XWYuMjfmo,20185
225
- django_unfold-0.46.0.dist-info/LICENSE.md,sha256=Ltk_quRyyvV3J5v3brtOqmibeZSw2Hrb8bY1W3ya0Ik,1077
226
- django_unfold-0.46.0.dist-info/METADATA,sha256=7xSRpNo1C4BffSq61zmJJPm6GWlYxybumK3T1teTRFY,4864
227
- django_unfold-0.46.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
228
- django_unfold-0.46.0.dist-info/RECORD,,
228
+ unfold/templatetags/unfold.py,sha256=C2x_fqjVCWku4WdyaD_u4UjXq9eue1CgnmEz5PCfrS8,12364
229
+ unfold/templatetags/unfold_list.py,sha256=-KOU6Ib2k4gokuw_CgRooFCto8xJkiDyotbQbKAqkEY,14233
230
+ unfold/typing.py,sha256=ZVeXbABOYjUFgtGlFLMh6jdiM9bHVCwxMW0pNtbvwuw,651
231
+ unfold/utils.py,sha256=L0oC9-j1B__BZ21M7i6rTXNbzCQaZ4T0qHYQcNupk0A,5480
232
+ unfold/views.py,sha256=nqv-meiwGtCeET2r8WBVyijWnE94Dssc4QmdUVMMcEM,997
233
+ unfold/widgets.py,sha256=ZsjOAlQgEGmllPvXfN5ApbtW3VFs51lJzW4V44v9Ilg,20172
234
+ django_unfold-0.48.0.dist-info/LICENSE.md,sha256=Ltk_quRyyvV3J5v3brtOqmibeZSw2Hrb8bY1W3ya0Ik,1077
235
+ django_unfold-0.48.0.dist-info/METADATA,sha256=Fw263kbNqMSQtyLw3NIplBzm6GyLISsCIE1HuojBADU,4840
236
+ django_unfold-0.48.0.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
237
+ django_unfold-0.48.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 2.0.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
unfold/admin.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import copy
2
2
  from functools import update_wrapper
3
- from typing import Any, Callable, Dict, List, Optional, Tuple, Union
3
+ from typing import Any, Callable, Optional, Union
4
4
 
5
5
  from django import forms
6
6
  from django.contrib.admin import ModelAdmin as BaseModelAdmin
@@ -272,9 +272,9 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
272
272
  def _filter_unfold_actions_by_permissions(
273
273
  self,
274
274
  request: HttpRequest,
275
- actions: List[UnfoldAction],
275
+ actions: list[UnfoldAction],
276
276
  object_id: Optional[Union[int, str]] = None,
277
- ) -> List[UnfoldAction]:
277
+ ) -> list[UnfoldAction]:
278
278
  """Filter out any Unfold actions that the user doesn't have access to."""
279
279
  filtered_actions = []
280
280
  for action in actions:
@@ -299,12 +299,12 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
299
299
 
300
300
  return filtered_actions
301
301
 
302
- def get_actions_list(self, request: HttpRequest) -> List[UnfoldAction]:
302
+ def get_actions_list(self, request: HttpRequest) -> list[UnfoldAction]:
303
303
  return self._filter_unfold_actions_by_permissions(
304
304
  request, self._get_base_actions_list()
305
305
  )
306
306
 
307
- def _get_base_actions_list(self) -> List[UnfoldAction]:
307
+ def _get_base_actions_list(self) -> list[UnfoldAction]:
308
308
  """
309
309
  Returns all available list global actions, prior to any filtering
310
310
  """
@@ -312,23 +312,23 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
312
312
 
313
313
  def get_actions_detail(
314
314
  self, request: HttpRequest, object_id: int
315
- ) -> List[UnfoldAction]:
315
+ ) -> list[UnfoldAction]:
316
316
  return self._filter_unfold_actions_by_permissions(
317
317
  request, self._get_base_actions_detail(), object_id
318
318
  )
319
319
 
320
- def _get_base_actions_detail(self) -> List[UnfoldAction]:
320
+ def _get_base_actions_detail(self) -> list[UnfoldAction]:
321
321
  """
322
322
  Returns all available detail actions, prior to any filtering
323
323
  """
324
324
  return [self.get_unfold_action(action) for action in self.actions_detail or []]
325
325
 
326
- def get_actions_row(self, request: HttpRequest) -> List[UnfoldAction]:
326
+ def get_actions_row(self, request: HttpRequest) -> list[UnfoldAction]:
327
327
  return self._filter_unfold_actions_by_permissions(
328
328
  request, self._get_base_actions_row()
329
329
  )
330
330
 
331
- def _get_base_actions_row(self) -> List[UnfoldAction]:
331
+ def _get_base_actions_row(self) -> list[UnfoldAction]:
332
332
  """
333
333
  Returns all available row actions, prior to any filtering
334
334
  """
@@ -336,12 +336,12 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
336
336
 
337
337
  def get_actions_submit_line(
338
338
  self, request: HttpRequest, object_id: int
339
- ) -> List[UnfoldAction]:
339
+ ) -> list[UnfoldAction]:
340
340
  return self._filter_unfold_actions_by_permissions(
341
341
  request, self._get_base_actions_submit_line(), object_id
342
342
  )
343
343
 
344
- def _get_base_actions_submit_line(self) -> List[UnfoldAction]:
344
+ def _get_base_actions_submit_line(self) -> list[UnfoldAction]:
345
345
  """
346
346
  Returns all available submit row actions, prior to any filtering
347
347
  """
@@ -349,7 +349,7 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
349
349
  self.get_unfold_action(action) for action in self.actions_submit_line or []
350
350
  ]
351
351
 
352
- def get_custom_urls(self) -> Tuple[Tuple[str, str, View], ...]:
352
+ def get_custom_urls(self) -> tuple[tuple[str, str, View], ...]:
353
353
  """
354
354
  Method to get custom views for ModelAdmin with their urls
355
355
 
@@ -358,7 +358,7 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
358
358
  """
359
359
  return () if self.custom_urls is None else self.custom_urls
360
360
 
361
- def get_urls(self) -> List[URLPattern]:
361
+ def get_urls(self) -> list[URLPattern]:
362
362
  urls = super().get_urls()
363
363
 
364
364
  def wrap(view):
@@ -409,7 +409,6 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
409
409
  )
410
410
 
411
411
  def _path_from_custom_url(self, custom_url) -> URLPattern:
412
- # TODO: wrap()
413
412
  return path(
414
413
  custom_url[0],
415
414
  self.admin_site.admin_view(custom_url[2]),
@@ -422,7 +421,7 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
422
421
  request: HttpRequest,
423
422
  object_id: Optional[str] = None,
424
423
  form_url: str = "",
425
- extra_context: Optional[Dict[str, bool]] = None,
424
+ extra_context: Optional[dict[str, bool]] = None,
426
425
  ) -> Any:
427
426
  if extra_context is None:
428
427
  extra_context = {}
@@ -451,7 +450,7 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
451
450
  return super().changeform_view(request, object_id, form_url, extra_context)
452
451
 
453
452
  def changelist_view(
454
- self, request: HttpRequest, extra_context: Optional[Dict[str, str]] = None
453
+ self, request: HttpRequest, extra_context: Optional[dict[str, str]] = None
455
454
  ) -> TemplateResponse:
456
455
  if extra_context is None:
457
456
  extra_context = {}
unfold/checks.py CHANGED
@@ -1,4 +1,4 @@
1
- from typing import Any, List
1
+ from typing import Any
2
2
 
3
3
  from django.contrib.admin.checks import ModelAdminChecks
4
4
  from django.contrib.admin.options import BaseModelAdmin
@@ -8,18 +8,18 @@ from .dataclasses import UnfoldAction
8
8
 
9
9
 
10
10
  class UnfoldModelAdminChecks(ModelAdminChecks):
11
- def check(self, admin_obj: BaseModelAdmin, **kwargs) -> List[checks.Error]:
11
+ def check(self, admin_obj: BaseModelAdmin, **kwargs) -> list[checks.Error]:
12
12
  return [
13
13
  *super().check(admin_obj, **kwargs),
14
14
  *self._check_unfold_action_permission_methods(admin_obj),
15
15
  ]
16
16
 
17
- def _check_unfold_action_permission_methods(self, obj: Any) -> List[checks.Error]:
17
+ def _check_unfold_action_permission_methods(self, obj: Any) -> list[checks.Error]:
18
18
  """
19
19
  Actions with an allowed_permission attribute require the ModelAdmin to
20
20
  implement a has_<perm>_permission() method for each permission.
21
21
  """
22
- actions: List[UnfoldAction] = [
22
+ actions: list[UnfoldAction] = [
23
23
  *obj._get_base_actions_list(),
24
24
  *obj._get_base_actions_detail(),
25
25
  *obj._get_base_actions_row(),
unfold/components.py CHANGED
@@ -1,13 +1,13 @@
1
- from typing import Any, Dict, Optional, Type
1
+ from typing import Any, Optional
2
2
 
3
3
  from django.http import HttpRequest
4
4
 
5
5
 
6
6
  class ComponentRegistry:
7
- _registry: Dict[str, Type] = {}
7
+ _registry: dict[str, type] = {}
8
8
 
9
9
  @classmethod
10
- def register_class(cls, component_cls: Type) -> None:
10
+ def register_class(cls, component_cls: type) -> None:
11
11
  if not issubclass(component_cls, BaseComponent):
12
12
  raise ValueError(
13
13
  f"Class '{component_cls.__name__}' must inherit from BaseComponent."
@@ -21,7 +21,7 @@ class ComponentRegistry:
21
21
  cls._registry[class_name] = component_cls
22
22
 
23
23
  @classmethod
24
- def get_class(cls, class_name: str) -> Optional[Type]:
24
+ def get_class(cls, class_name: str) -> Optional[type]:
25
25
  return cls._registry.get(class_name)
26
26
 
27
27
  @classmethod
@@ -34,7 +34,7 @@ class ComponentRegistry:
34
34
  return component_cls(**kwargs)
35
35
 
36
36
 
37
- def register_component(cls: Type) -> Type:
37
+ def register_component(cls: type) -> type:
38
38
  ComponentRegistry.register_class(cls)
39
39
  return cls
40
40
 
@@ -0,0 +1,43 @@
1
+ from unfold.contrib.filters.admin.autocomplete_filters import (
2
+ AutocompleteSelectFilter,
3
+ AutocompleteSelectMultipleFilter,
4
+ )
5
+ from unfold.contrib.filters.admin.datetime_filters import (
6
+ RangeDateFilter,
7
+ RangeDateTimeFilter,
8
+ )
9
+ from unfold.contrib.filters.admin.dropdown_filters import (
10
+ ChoicesDropdownFilter,
11
+ DropdownFilter,
12
+ MultipleChoicesDropdownFilter,
13
+ MultipleDropdownFilter,
14
+ MultipleRelatedDropdownFilter,
15
+ RelatedDropdownFilter,
16
+ )
17
+ from unfold.contrib.filters.admin.numeric_filters import (
18
+ RangeNumericFilter,
19
+ RangeNumericListFilter,
20
+ SingleNumericFilter,
21
+ SliderNumericFilter,
22
+ )
23
+ from unfold.contrib.filters.admin.text_filters import FieldTextFilter, TextFilter
24
+
25
+ __all__ = [
26
+ "ChoicesDropdownFilter",
27
+ "MultipleChoicesDropdownFilter",
28
+ "DropdownFilter",
29
+ "RelatedDropdownFilter",
30
+ "MultipleDropdownFilter",
31
+ "MultipleRelatedDropdownFilter",
32
+ "FieldTextFilter",
33
+ "TextFilter",
34
+ "RangeDateFilter",
35
+ "RangeDateFilter",
36
+ "RangeDateTimeFilter",
37
+ "SingleNumericFilter",
38
+ "RangeNumericFilter",
39
+ "RangeNumericListFilter",
40
+ "SliderNumericFilter",
41
+ "AutocompleteSelectFilter",
42
+ "AutocompleteSelectMultipleFilter",
43
+ ]
@@ -0,0 +1,16 @@
1
+ from unfold.contrib.filters.admin.dropdown_filters import (
2
+ MultipleRelatedDropdownFilter,
3
+ RelatedDropdownFilter,
4
+ )
5
+ from unfold.contrib.filters.admin.mixins import AutocompleteMixin
6
+ from unfold.contrib.filters.forms import AutocompleteDropdownForm
7
+
8
+
9
+ class AutocompleteSelectFilter(AutocompleteMixin, RelatedDropdownFilter):
10
+ form_class = AutocompleteDropdownForm
11
+
12
+
13
+ class AutocompleteSelectMultipleFilter(
14
+ AutocompleteMixin, MultipleRelatedDropdownFilter
15
+ ):
16
+ form_class = AutocompleteDropdownForm