django-unfold 0.59.0__py3-none-any.whl → 0.61.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 (58) hide show
  1. {django_unfold-0.59.0.dist-info → django_unfold-0.61.0.dist-info}/METADATA +17 -7
  2. {django_unfold-0.59.0.dist-info → django_unfold-0.61.0.dist-info}/RECORD +58 -47
  3. unfold/admin.py +45 -13
  4. unfold/contrib/import_export/templates/admin/import_export/change_list_import.html +5 -0
  5. unfold/contrib/inlines/admin.py +11 -6
  6. unfold/contrib/inlines/forms.py +3 -1
  7. unfold/contrib/location_field/__init__.py +0 -0
  8. unfold/contrib/location_field/apps.py +6 -0
  9. unfold/contrib/location_field/templates/location_field/map_widget.html +5 -0
  10. unfold/contrib/simple_history/templates/simple_history/submit_line.html +16 -18
  11. unfold/fields.py +17 -19
  12. unfold/forms.py +96 -2
  13. unfold/mixins/base_model_admin.py +21 -2
  14. unfold/sites.py +18 -31
  15. unfold/static/admin/js/admin/RelatedObjectLookups.js +2 -2
  16. unfold/static/unfold/css/styles.css +1 -1
  17. unfold/static/unfold/js/app.js +61 -0
  18. unfold/styles.css +6 -8
  19. unfold/templates/admin/app_list.html +4 -1
  20. unfold/templates/admin/auth/user/add_form.html +1 -5
  21. unfold/templates/admin/change_form.html +3 -1
  22. unfold/templates/admin/change_list.html +4 -2
  23. unfold/templates/admin/change_list_results.html +3 -3
  24. unfold/templates/admin/edit_inline/stacked.html +18 -8
  25. unfold/templates/admin/edit_inline/tabular.html +2 -0
  26. unfold/templates/admin/includes/fieldset.html +9 -3
  27. unfold/templates/admin/login.html +45 -88
  28. unfold/templates/admin/search_form.html +14 -5
  29. unfold/templates/admin/submit_line.html +1 -1
  30. unfold/templates/unfold/components/button.html +10 -1
  31. unfold/templates/unfold/components/card.html +4 -4
  32. unfold/templates/unfold/helpers/add_link.html +3 -1
  33. unfold/templates/unfold/helpers/app_list.html +5 -2
  34. unfold/templates/unfold/helpers/app_list_default.html +2 -1
  35. unfold/templates/unfold/helpers/field.html +5 -3
  36. unfold/templates/unfold/helpers/fieldsets_tabs.html +3 -3
  37. unfold/templates/unfold/helpers/help_text.html +1 -1
  38. unfold/templates/unfold/helpers/messages.html +4 -4
  39. unfold/templates/unfold/helpers/pagination.html +1 -1
  40. unfold/templates/unfold/helpers/pagination_inline.html +28 -0
  41. unfold/templates/unfold/helpers/popup_header.html +27 -0
  42. unfold/templates/unfold/helpers/search.html +16 -12
  43. unfold/templates/unfold/helpers/search_results.html +10 -9
  44. unfold/templates/unfold/helpers/shortcut.html +3 -0
  45. unfold/templates/unfold/helpers/site_branding.html +2 -2
  46. unfold/templates/unfold/helpers/tab_action.html +4 -3
  47. unfold/templates/unfold/helpers/unauthenticated_header.html +15 -0
  48. unfold/templates/unfold/helpers/unauthenticated_title.html +11 -0
  49. unfold/templates/unfold/layouts/unauthenticated.html +37 -0
  50. unfold/templates/unfold/widgets/text.html +28 -0
  51. unfold/templates/unfold_crispy/field.html +12 -10
  52. unfold/templates/unfold_crispy/layout/checkbox.html +20 -4
  53. unfold/templates/unfold_crispy/layout/fieldset.html +3 -3
  54. unfold/templatetags/unfold.py +34 -4
  55. unfold/templatetags/unfold_list.py +4 -1
  56. unfold/widgets.py +42 -1
  57. {django_unfold-0.59.0.dist-info → django_unfold-0.61.0.dist-info}/LICENSE.md +0 -0
  58. {django_unfold-0.59.0.dist-info → django_unfold-0.61.0.dist-info}/WHEEL +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-unfold
3
- Version: 0.59.0
3
+ Version: 0.61.0
4
4
  Summary: Modern Django admin theme for seamless interface development
5
5
  License: MIT
6
6
  Keywords: django,admin,tailwind,theme
@@ -24,7 +24,7 @@ Description-Content-Type: text/markdown
24
24
 
25
25
  ![screenshot](https://github.com/user-attachments/assets/87aaad04-f454-42aa-b9ac-e14d41f189ac)
26
26
 
27
- ## Unfold Django Admin Theme
27
+ ## Unfold - Django Admin Theme
28
28
 
29
29
  [![PyPI - Version](https://img.shields.io/pypi/v/django-unfold.svg?style=for-the-badge)](https://pypi.org/project/django-unfold/)
30
30
  [![Discord](https://img.shields.io/discord/1297493955231088650?style=for-the-badge&logo=discord&logoColor=%23ffffff&color=7289da)](https://discord.gg/9sQj9MEbNz)
@@ -40,21 +40,30 @@ Transform your Django admin into a powerful, modern administrative interface wit
40
40
  - **Turbo:** A Django & Next.js boilerplate implementing Unfold is available at [github.com/unfoldadmin/turbo](https://github.com/unfoldadmin/turbo?utm_medium=github&utm_source=unfold).
41
41
  - **Discord:** Join our Unfold community on [Discord](https://discord.gg/9sQj9MEbNz).
42
42
 
43
- ## Django & Unfold Development Services
43
+ ## Profesional tools & services
44
44
 
45
- Need assistance with implementing Unfold or require custom Django development? Professional consulting and development services are available to help transform your Django admin interface and enhance your web applications. Whether migrating from the native Django admin to Unfold or seeking expert technical guidance, reach out to discuss your project requirements and explore development possibilities. [Get in touch](https://unfoldadmin.com/consulting?utm_medium=github&utm_source=unfold) to learn more about available services.
45
+ Looking for professional help with your Django or Unfold project? We offer a range of tools and services to support your development process:
46
46
 
47
- ## Unfold Studio
47
+ ### Consulting services
48
48
 
49
- Unfold Studio is a theme customizer for Django admin that helps you create a branded interface. You can customize colors, upload your logo, and adjust the style without coding. The tool is currently in development, and [you can join the waitlist](https://unfoldadmin.com/studio/) to be notified when it's available.
49
+ Professional consulting services for Django applications from architecture and performance optimization to feature development and Unfold integration.
50
+ Ideal for teams looking to scale, modernize, or customize their Django projects with expert support. Learn more at [unfoldadmin.com/consulting](https://unfoldadmin.com/consulting/?utm_medium=github&utm_source=unfold).
51
+
52
+ ### Support package
53
+
54
+ If you need assistance with integrating or customizing Unfold, support packages are available. They include live 1:1 calls, implementation review, and ongoing Discord-based support — fixed price, no ongoing commitment. Learn more at [unfoldadmin.com/support](https://unfoldadmin.com/support/?utm_medium=github&utm_source=unfold).
55
+
56
+ ### Unfold Studio
57
+
58
+ Unfold Studio lets you visually customize your Django admin without writing code — update colors, logos, sidebar, and interface styles to match your brand in minutes. Give your admin a polished, professional look that feels truly yours. Available at [unfoldadmin.com/studio](https://unfoldadmin.com/studio).
50
59
 
51
60
  ## Fresh Features & Enhancements
52
61
 
62
+ - **Paginated inlines:** Break down large record sets into pages within inlines for better admin performance
53
63
  - **Conditional fields:** Show or hide fields dynamically based on the values of other fields in the form
54
64
  - **Infinite paginator:** Efficiently handle large datasets with seamless pagination that reduces server load
55
65
  - **Checkbox & radio filters:** Enhanced filter options with checkbox and radio interfaces for intuitive filtering
56
66
  - **Site dropdown:** Configurable dropdown menu in the header area for managing custom navigation links
57
- - **Dropdown actions:** Organize action items in customizable dropdown menus
58
67
 
59
68
  ## Core Features & Capabilities
60
69
 
@@ -74,6 +83,7 @@ Unfold Studio is a theme customizer for Django admin that helps you create a bra
74
83
  - **Sortable inlines:** Allow sorting inlines by dragging and dropping
75
84
  - **Environment label:** Distinguish between environments by displaying a label
76
85
  - **Nonrelated inlines:** Display nonrelated models as inlines in the change form
86
+ - **Paginated inlines:** Break down large record sets into pages within inlines for better admin performance
77
87
  - **Favicons:** Built-in support for configuring various site favicons
78
88
  - **Themes:** Allow customization of color scheme, background color, border radius, and more
79
89
  - **Font colors:** Adjust font colors for better readability
@@ -1,5 +1,5 @@
1
1
  unfold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- unfold/admin.py,sha256=2YwKqP5slOtqpEInq_u-0-XlddY7Qnj21VeH-lsLkxg,6552
2
+ unfold/admin.py,sha256=B-MAEjAJuDSzGse2POA6fiLklwcDb9oVEsWR7Zn4z5Q,7455
3
3
  unfold/apps.py,sha256=SlBXPYrUd2uXn67qFbRvbXSUk3XFWrF4-5WELgDCvho,381
4
4
  unfold/checks.py,sha256=e5HEhbXRcu3FwZDT_d-IbimeVpjJ6jgCUPXWvsUjEw0,2601
5
5
  unfold/components.py,sha256=vqkQzseYUvLXDohmTVAlbKopALjyX4WA9yglvdfhqu4,1283
@@ -56,6 +56,7 @@ unfold/contrib/import_export/templates/admin/import_export/base.html,sha256=y-J1
56
56
  unfold/contrib/import_export/templates/admin/import_export/change_form.html,sha256=TYiMBf8bSJoMiSrHGAa-OwyheVyNG3WyWFNeH2tmZjc,460
57
57
  unfold/contrib/import_export/templates/admin/import_export/change_list_export.html,sha256=vZb2XVoJrDSjM1msiZqkQPMLQGjuqRHuLNdt11hmbQs,164
58
58
  unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html,sha256=pTDeqPKOlCPKH2dxMIfPnWuc2wVDzB7AzL73WbxSnRY,257
59
+ unfold/contrib/import_export/templates/admin/import_export/change_list_import.html,sha256=QTbp4m-XKKWFbnBotslw1Dw7O1fUWnFTDtAIymzOMDw,164
59
60
  unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html,sha256=JdKd6P2Ot9Ou4yg4CywTauuE1UiTz_mRvDwlx3vj3LI,229
60
61
  unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html,sha256=XUuRxnsx9YQbKvW-E_JGl_ha7kpTSGSoRefOTTizuX0,233
61
62
  unfold/contrib/import_export/templates/admin/import_export/export.html,sha256=uzv2LuTIV7MZKcg7L_I8EmI0weEpJBL_omXmGSHtyH0,3463
@@ -67,36 +68,39 @@ unfold/contrib/import_export/templates/admin/import_export/import_preview.html,s
67
68
  unfold/contrib/import_export/templates/admin/import_export/import_validation.html,sha256=K7j5OlWMQUTcSVulJtIraKfWIupSvmN4R5bZ2hH4tRA,5117
68
69
  unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.html,sha256=Bc6uD8aHA5YYbZgLAPpGUckFjnxn9uq19YuKKFxTj4Y,887
69
70
  unfold/contrib/inlines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- unfold/contrib/inlines/admin.py,sha256=LloGe9KaY0hb9LX0jICpWi01DcdnSCXRfpAdY9VxkiY,5929
71
+ unfold/contrib/inlines/admin.py,sha256=__U86gR2OfdEiLPmOsKwTu7t8X2be8_jL-NL1SSNb3Q,6066
71
72
  unfold/contrib/inlines/apps.py,sha256=Z9JBnzywq-DanZbD56fG0ndBfLXbojzkjVBleqoOBSU,136
72
73
  unfold/contrib/inlines/checks.py,sha256=0vkHUh-MtNSTrcOjCLbZmtI4961fFOygOv_dBAps6zw,534
73
- unfold/contrib/inlines/forms.py,sha256=s49xrIkQTbvSMsrP4DydXWkpP1v8NCUmQw_Bcoqf0i4,1322
74
+ unfold/contrib/inlines/forms.py,sha256=noZdrBgvsu9tCBbRW3f9p7o6xKSuXtWR14qbZPdZBPA,1395
75
+ unfold/contrib/location_field/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
+ unfold/contrib/location_field/apps.py,sha256=qbNLfWXWf9q_gZxnuwFNVj20liSk_OT29uWMAi1she8,150
77
+ unfold/contrib/location_field/templates/location_field/map_widget.html,sha256=HXNqZ7TRh8zxq7jxGv5V5De7jdB_L6smXSWX_KXujJs,179
74
78
  unfold/contrib/simple_history/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
79
  unfold/contrib/simple_history/apps.py,sha256=eF_KVYb60CAnGgWk2Z1YKYGfgA3TJBMr229qI7e2pgU,153
76
80
  unfold/contrib/simple_history/templates/simple_history/object_history.html,sha256=unZQE70be7cK6v0YPlITFeaosmiLt3kiei-pmmCjBg0,1711
77
81
  unfold/contrib/simple_history/templates/simple_history/object_history_form.html,sha256=1wsz8KTmjsgAthFS2myfcS3QvyeL0-qT8s2w7JINVhQ,2256
78
82
  unfold/contrib/simple_history/templates/simple_history/object_history_list.html,sha256=PWtjuAcxciAI001qIrXLvbUxzCFl_SDAaHA5FhR16Z8,6858
79
- unfold/contrib/simple_history/templates/simple_history/submit_line.html,sha256=tJgOgq7lMetWF4DJoBqUYdRSY6EeRivXhOBYlyPXzTk,1750
83
+ unfold/contrib/simple_history/templates/simple_history/submit_line.html,sha256=PEoPmWcWiiBIMs6XtXcoXswDtxp3FgntR3maieLDt4Y,1618
80
84
  unfold/dataclasses.py,sha256=a-9INnkCAIcnMgoffTcB1rxWCJH33AjhMCWIGWnjWbI,719
81
85
  unfold/decorators.py,sha256=jPiYFy1p0WGFn68VZhAZkYCPDF7argb9SDFaH6aemHk,4922
82
86
  unfold/enums.py,sha256=9sTfyEycMWeoGPBa-ft6ZhQGnW1vkFg108RMBVf9nko,187
83
87
  unfold/exceptions.py,sha256=gcCj1ox61E137bk_0Cqy4YC3SttdPgB-fiJUqpmyHSE,43
84
- unfold/fields.py,sha256=g8gWFWsCQAooTBT8ngASaryW3fgaBZx6aPuTdLc1NqY,7472
85
- unfold/forms.py,sha256=f8OanxLAmV6dftNj-apgjtCrIVj_iEU830AbMeZh71I,4709
88
+ unfold/fields.py,sha256=h7mpRlsoFu6xQrCbehrjsBpyxFsXc-lMDzEI1JREoJk,7304
89
+ unfold/forms.py,sha256=0u4TFw7oQ96S7njzJ2G79Qzt1X-4P4px-kfMgjVt49o,7762
86
90
  unfold/layout.py,sha256=Q-dFTA6UlvvPCA4PsGyTkHQmBLO7PL56xBfZi-bdt0c,1459
87
91
  unfold/mixins/__init__.py,sha256=YlhoDs9Y_DXQ8Ejr3enxuHMS1-Ij9fwukxNwpeOS4Co,190
88
92
  unfold/mixins/action_model_admin.py,sha256=9Zt4FLrQWEQSO2vrpwjzpFo_I3_yE000uEwHndsW5kg,12365
89
- unfold/mixins/base_model_admin.py,sha256=PR4eqU48yB4CNy9Bjd7fjxbOFiFpZM4etYmBOSaRX_M,4140
93
+ unfold/mixins/base_model_admin.py,sha256=PyTZSxF6tIcs20VlMCX08tFnB0ORU0VXvgcPArkiE68,4796
90
94
  unfold/overrides.py,sha256=ERVY9boZiXgjDYcTEZcIp7KWoeBZ45VM_zN31yAOjyQ,2922
91
95
  unfold/paginator.py,sha256=bZiEY-1kqZy_6CYGs9fHo6WntMgpnFCH-LJPoXkEESk,533
92
96
  unfold/sections.py,sha256=Lcg3xCZ76fqjm4vD4x7YdE5VsbTKluL-sX5QTEBlHxA,2379
93
97
  unfold/settings.py,sha256=DE3hComMaWtty8o-LqdgGGcoku3mevRWJah4NH1k5B4,2879
94
- unfold/sites.py,sha256=Zxz2ey_rfFnCrYwqiPaLAvUDSehftPxFLOm-AX6b50M,18166
95
- unfold/static/admin/js/admin/RelatedObjectLookups.js,sha256=0bZ2MGuO6F0IF_lQ7-hTP6ofqZtrH44Pt4ElaPqyNz8,9199
98
+ unfold/sites.py,sha256=GPeMbBA4ckhacUOPW9PXrzQrOttU7_91zwReaKJdZgc,17616
99
+ unfold/static/admin/js/admin/RelatedObjectLookups.js,sha256=ubKKhWmX_QborwPnaLHuQshTwQw6tK1pAViWdKIjw4E,9222
96
100
  unfold/static/admin/js/inlines.js,sha256=zcYwLGI_6RHg-gucDbbhp43RRoZd3so8bPk841KFaIE,15573
97
101
  unfold/static/unfold/css/simplebar/LICENSE,sha256=okNJf6UFl2NrEiC4iqORNBa16IKgUgV88acdcl9FbtY,1081
98
102
  unfold/static/unfold/css/simplebar/simplebar.css,sha256=5LLaEM11pKi6JFCOLt4XKuZxTpT9rpdq_tNlaQytFlU,4647
99
- unfold/static/unfold/css/styles.css,sha256=RYbHZGbPj3wTqi87UahjSTRRTeoC1Jrfpjah-o612jU,159143
103
+ unfold/static/unfold/css/styles.css,sha256=3Ch1P8TjpORzdOWrm41Gk5ljm-S2XImJkHOLmtMFaaE,158843
100
104
  unfold/static/unfold/fonts/inter/Inter-Bold.woff2,sha256=-oiBJ7baAVtlVp8DUfO1w5GtkokElR8cIOn4RiqNleo,114840
101
105
  unfold/static/unfold/fonts/inter/Inter-Medium.woff2,sha256=D_PpRhThST61VjFP0keubEqFp3g7TMhr5TmUDPg_Kkg,114348
102
106
  unfold/static/unfold/fonts/inter/Inter-Regular.woff2,sha256=4G9rG8VTqupORmgCPtCrChRxKcMQf1Ebx9A9NhsK4IU,111268
@@ -112,7 +116,7 @@ unfold/static/unfold/js/alpine/alpine.js,sha256=PtHu0lJIiSHfZeNj1nFd6wTX-Squ255S
112
116
  unfold/static/unfold/js/alpine/alpine.persist.js,sha256=jFBwr6faTqqhp3sVi4_VTxJ0FpaF9YGZN1ZGLl_5QYM,837
113
117
  unfold/static/unfold/js/alpine/alpine.resize.js,sha256=mXR2L6neT584cfNLY5_imDq5DKjW1noXys7fhb1yxY4,703
114
118
  unfold/static/unfold/js/alpine/alpine.sort.js,sha256=q6LxgConwu8M8R03mZSBcsKwJv6fF7oomP8sqLxVQ0w,37891
115
- unfold/static/unfold/js/app.js,sha256=mxCSV8gZvRLHab-_Xm_229NtQ9IX-59vS_GKWTp9liM,7748
119
+ unfold/static/unfold/js/app.js,sha256=UfVvyLqwoUUYci7dRbFXz1e4q68WTwz3M3K80JAQxfE,9414
116
120
  unfold/static/unfold/js/chart/LICENSE,sha256=QahKosq6ZF-WahjZwgVrc-bTqB2AvABGvAARomNNTM4,1093
117
121
  unfold/static/unfold/js/chart/chart.js,sha256=22W6cFERR-CElMOKRgMMicueMVP0Vf7FBEBYH8Z8tCk,200633
118
122
  unfold/static/unfold/js/htmx/LICENSE,sha256=09JFb3ZBTyRWEEZg69Za_xwEzXlmuUK9q9Y_PNsxajg,642
@@ -120,40 +124,40 @@ unfold/static/unfold/js/htmx/htmx.js,sha256=acrv0NqSJpBm5yXX_hdeJrnVDJYuMFZFnAxH
120
124
  unfold/static/unfold/js/select2.init.js,sha256=l0O8ggw_CkAw-QtH3qEzC8xWk0mR9QHjy4VzAjMwiQQ,1109
121
125
  unfold/static/unfold/js/simplebar/LICENSE,sha256=okNJf6UFl2NrEiC4iqORNBa16IKgUgV88acdcl9FbtY,1081
122
126
  unfold/static/unfold/js/simplebar/simplebar.js,sha256=t-uG1FAD6ZoiMeN--wac0XRS7SxoDVG6zvRnGuEp7X8,27176
123
- unfold/styles.css,sha256=YSDKjgENtZyAg9ceUztuJj9JXgAlUr3wJpwnSOZ6TMc,21246
127
+ unfold/styles.css,sha256=nFgCmto4fLeMBh2kZlRCTwLB4V6T-X9vNGKPXX8DWqo,21292
124
128
  unfold/templates/admin/actions.html,sha256=iuuubcAILkOoYBgV6cpXqFIyZUh4zMqyFp0JaDFlPKU,3096
125
129
  unfold/templates/admin/app_index.html,sha256=LRR07CLcZVsYpisCOncWdMSACARNstcDt536Oydnt60,1239
126
- unfold/templates/admin/app_list.html,sha256=2JbGENeKAVqYGYwm2Yv7I0lzQrLz0xRND18kPiMIi_Q,2861
127
- unfold/templates/admin/auth/user/add_form.html,sha256=tZgg6UoKxJ7zL6T99PLHlLBwd4LlDI2mGn6d5hmtsPs,486
130
+ unfold/templates/admin/app_list.html,sha256=-DEZKFdmkdTq3rix_cgZurPZ1r8PHg5pBL3i7ZtzVdI,2972
131
+ unfold/templates/admin/auth/user/add_form.html,sha256=-_YY4guGdAbw2rCskrQfRAAvQF2XzVHt5UMI0fsLDm4,337
128
132
  unfold/templates/admin/auth/user/change_password.html,sha256=028v1dfQTlSmdr-WCuV4lBOmFa7Oo38CsYhsXEe8ANI,2831
129
133
  unfold/templates/admin/base.html,sha256=z9sU8rezHLqOZk5x13_5nvnqpRYf6XxQaMfa7N_GU68,2460
130
134
  unfold/templates/admin/base_site.html,sha256=UOsecaCycpyn_ygJNIKO7MQtDFJuHv--r83-mzaVY30,300
131
- unfold/templates/admin/change_form.html,sha256=stW5bIL_HuxtD9Bb0RVLHZiP8ln8lGBQ3D3V6MeJbAY,5616
135
+ unfold/templates/admin/change_form.html,sha256=SioX04QmUiCRBQYHD22HRss8V2ubhHDgZ_YVNfqiPV0,5758
132
136
  unfold/templates/admin/change_form_object_tools.html,sha256=eyeH-i2HgEM0Yi-OJA2D1VnKJyC19A_my1IDGxxoP8Y,593
133
- unfold/templates/admin/change_list.html,sha256=49PwsDjJuTDXfoCqpUqAFc84HFNOJk8dIHSdYCQIDuk,5269
137
+ unfold/templates/admin/change_list.html,sha256=39S_LBbd25DiKhL9HjLOamXN1o-Ads4HfeQ6wEvv8JA,5361
134
138
  unfold/templates/admin/change_list_object_tools.html,sha256=cmMiT2nT20Ph5yfpj9aHPr76Z-JP4aSXp0o-Rnad28s,147
135
- unfold/templates/admin/change_list_results.html,sha256=u9eUoOTWJ9woVeLVYhftAriCXPNu1bYT3qdAQojD3ZI,8055
139
+ unfold/templates/admin/change_list_results.html,sha256=YwLpgmsPgSSEk5Lw1VmmMfKS85y0ACrkNo-v0BKEw9Q,8238
136
140
  unfold/templates/admin/date_hierarchy.html,sha256=A-sIqBKzZTMqSn3NSHORIL1yTEAqhj4Atff0OvWtqT0,1413
137
141
  unfold/templates/admin/delete_confirmation.html,sha256=IPSGhOpxDl6hJB9LtpSg_XRkVmbDO1BpO9q_dthqkac,4635
138
142
  unfold/templates/admin/delete_selected_confirmation.html,sha256=T3NNe7pP0WM2QM4F39AbkDGsfd_d_tKYRpwxvExahgU,4399
139
- unfold/templates/admin/edit_inline/stacked.html,sha256=RvdjkyXnTEzpWAI0GidvqxEFFK4x8NCEVHMlE2Y6OLQ,7664
140
- unfold/templates/admin/edit_inline/tabular.html,sha256=F8o80H3GVHcGv_OARw0l5XrMPKXcgdNWX4cgorsNvkU,2948
143
+ unfold/templates/admin/edit_inline/stacked.html,sha256=szX_jhvXShedo5owpYRGSjvRtYj2BjvukmnLfCsXvwc,8623
144
+ unfold/templates/admin/edit_inline/tabular.html,sha256=roeOKLctqSGga37jRkpm5X7cyaaXq5kJ31U4_WK2lSg,3015
141
145
  unfold/templates/admin/filter.html,sha256=DEyrLgCWuncS1O1WR0vlt1evGQFvKoZV2pABkHzSoGU,2039
142
- unfold/templates/admin/includes/fieldset.html,sha256=F1XS_7bxeIbIxILjNdclXk_jFTmceUs_fZ4GjVwT1VM,1161
146
+ unfold/templates/admin/includes/fieldset.html,sha256=knUIN44un4M-M4wlzoLIE1U6qHDlVSt7EH9bV8RwK4g,1461
143
147
  unfold/templates/admin/includes/object_delete_summary.html,sha256=FgwfapZCKWtnFtTHqh1MRuxxLot4bAw92WCcR_V8ImI,444
144
148
  unfold/templates/admin/index.html,sha256=9ey6IIXxBVTEkVSDiQw01AwvMbUnG_h0B08N1Zg3wTg,578
145
- unfold/templates/admin/login.html,sha256=fAY1FF3P0Zc4WYXh3CpZOMuyrr7Bfz29VxwD-MJ_vHg,4605
149
+ unfold/templates/admin/login.html,sha256=W07Dtr3-YQ-JP1jYKZMsBxrmO1u49A5R4UZyOUmZYfY,2465
146
150
  unfold/templates/admin/nav_sidebar.html,sha256=xvCaXOamXawmf80NhE0OwjjjuNwoyoePS--lsdqDeIE,772
147
151
  unfold/templates/admin/object_history.html,sha256=t-iJFQnpstowwsabGGA-FQjmcT1KIKhKLKbQ3iVELkk,4832
148
152
  unfold/templates/admin/pagination.html,sha256=-9kjc_lKEeqvDVHMrnTfnlXDxMSkM8GNRGZGuI9D8os,912
149
- unfold/templates/admin/search_form.html,sha256=ebd6ccOASaIUQsOZ0mVkcoB-EiKLqkN7y7cEm3fwsL8,1360
150
- unfold/templates/admin/submit_line.html,sha256=GvknbdmXXEw93BIQ8azUHhnQ1AcojExgGiSr0XaNg2A,4658
153
+ unfold/templates/admin/search_form.html,sha256=7ckco8llu5paptroZgr3jZw54DtowX-NiwFvxsCV898,1713
154
+ unfold/templates/admin/submit_line.html,sha256=9FDZ5HOfiJG11HSMtA4rfqjKe3ucC-_OChpx1CGTLac,4626
151
155
  unfold/templates/auth/widgets/read_only_password_hash.html,sha256=MlaNXJ2PLEbv8Nd01BBp-AQEfMB13LNxD_DzRemXhCg,775
152
156
  unfold/templates/registration/logged_out.html,sha256=oIdaqGcvIdBih3yNnUkXSEpvofRsBJ77obldnhcnP2U,997
153
157
  unfold/templates/registration/password_change_done.html,sha256=ITV6Fug4S6YG3WG-O1cm-sDAXTHEXPcNZ_w2x1IQFu8,1006
154
158
  unfold/templates/registration/password_change_form.html,sha256=-8AauxUHWHXVaokG269UsETY_FHKqU83Zx38ZzrAA1A,2159
155
- unfold/templates/unfold/components/button.html,sha256=PXYHCy5x_REPQSOukXiyT901D5KmoWoSfMWlMrUPSEA,670
156
- unfold/templates/unfold/components/card.html,sha256=N9ld_SWpXdmaqAea9bboy0bTg1YqIkAhsJmOj7nd0qs,1353
159
+ unfold/templates/unfold/components/button.html,sha256=RlNNIa_JmcsNFH151ECHkbB2TxpgeCPRh-eW1Bc0Xtk,933
160
+ unfold/templates/unfold/components/card.html,sha256=fwko37u8KJIDQwiD2v8RoVuvZu8qBPyPl2TambOcFnc,1349
157
161
  unfold/templates/unfold/components/chart/bar.html,sha256=nDdDCUXvFd793OpNgNPQo0vBmvYngMsQyPHVTf1vfOw,297
158
162
  unfold/templates/unfold/components/chart/cohort.html,sha256=L00WR-igYv0C3t2yT_nZqeI-M5gVHpoaGv5RooRojqU,2402
159
163
  unfold/templates/unfold/components/chart/line.html,sha256=DHaZUFTlCs5cX7ioYdTzoN4ITHWNcEoNSUp7v3hlo_E,298
@@ -169,9 +173,9 @@ unfold/templates/unfold/components/title.html,sha256=aMYSO30ybFYqPnqwlJVh2uNmcgn
169
173
  unfold/templates/unfold/components/tracker.html,sha256=krlvsb06lpfdOIANsyrBOoLq1sgv6rXUGr-7MmP5Le0,292
170
174
  unfold/templates/unfold/helpers/account_links.html,sha256=Tq30bAkOU8QRR6CaB1CvTfTgkoPP5dz2v0OHYq0pRSE,2348
171
175
  unfold/templates/unfold/helpers/actions_row.html,sha256=RqhZsxgIFR-r1casv5CueL81uxNl8rA3XuCMDP--zLA,2586
172
- unfold/templates/unfold/helpers/add_link.html,sha256=Z0TzUavXH8AQ7A-I0SQ79t-UI87dyP_PZEpsDrm13Q8,810
173
- unfold/templates/unfold/helpers/app_list.html,sha256=AoTyb-0jQTnnAtPmXtiN52oEaeIbdtQZgzqqZZhquOc,5744
174
- unfold/templates/unfold/helpers/app_list_default.html,sha256=LbyLT9xYgev0xXwprkXOghtqqVhcRwGS4CPXeJQnR-8,3918
176
+ unfold/templates/unfold/helpers/add_link.html,sha256=vd-oy-xMIDiVmFVvwDL3-S360hOOmyAdfqcOTdDU1hI,870
177
+ unfold/templates/unfold/helpers/app_list.html,sha256=baydU9R_xmH9pWgs8B7PUcwTWcLxHDhD1ehs75c5PD0,5879
178
+ unfold/templates/unfold/helpers/app_list_default.html,sha256=0TR2ZTy0KUqa6YR8IgihA_4RQqBIFOroYpRHHIyD4H8,4015
175
179
  unfold/templates/unfold/helpers/attrs.html,sha256=Mwpj72kuwYj8hOT3J2T8qx6f1r_4xwwaS1slHA-82jI,166
176
180
  unfold/templates/unfold/helpers/boolean.html,sha256=kcSZr3siQeBWIy_jsx1tFf4m6IB3ooRnu8UUNQrh6so,569
177
181
  unfold/templates/unfold/helpers/breadcrumb_item.html,sha256=9T6ojN7LOXIlgwSwlIwHgy5U22eQYtarCqcmzsQIoPU,201
@@ -189,18 +193,18 @@ unfold/templates/unfold/helpers/edit_inline/tabular_heading.html,sha256=wvnpGFJV
189
193
  unfold/templates/unfold/helpers/edit_inline/tabular_row.html,sha256=eCyWEYvvDDCr9SR4_0ua5-GqCLIlFzgQYIZP0ip8cp8,2145
190
194
  unfold/templates/unfold/helpers/edit_inline/tabular_title.html,sha256=2sk1TRzpmwy8PPPMNdf6CJx0zVSk-I2q3yX8uEPjuxE,2710
191
195
  unfold/templates/unfold/helpers/empty_results.html,sha256=zN1XM6_9_Oj-inMZlDxEnicYfBRr4HhwS9ODAnMiRYc,1947
192
- unfold/templates/unfold/helpers/field.html,sha256=2q2M4dfisKJ9v8jt8gcq-iRf74t6H9W6xg16scZNF70,979
196
+ unfold/templates/unfold/helpers/field.html,sha256=KEs1SQRxzJ0x11zithlxVyv5zfQ9a_XGoJJ9AiWk1Vc,1038
193
197
  unfold/templates/unfold/helpers/field_readonly.html,sha256=4qtXjWE7SA2qZSTYLOv0lT4pQfD0TE34mvWQJY7jhS8,237
194
198
  unfold/templates/unfold/helpers/field_readonly_value.html,sha256=FI_CFEsCN7ELQux9gF-IaZ7nT7jyzidqwR2Med-E52g,504
195
199
  unfold/templates/unfold/helpers/fieldset_row.html,sha256=LriorPLXU4VmqstjX1oBc3T49H8CbhCrRxwQ7YfUSkI,1219
196
200
  unfold/templates/unfold/helpers/fieldset_row_checkbox.html,sha256=z4aRab--zJS2PC0jfKPez85IptKGRrqgkPpwW6_IKoo,1467
197
201
  unfold/templates/unfold/helpers/fieldset_row_field.html,sha256=cqLT1fHsCCszOHxvYlDFDTAd-6RRoOjdqfdBdhFgHOo,647
198
- unfold/templates/unfold/helpers/fieldsets_tabs.html,sha256=NRmkr_vWnEyIFZ1xLpJf_VW1H3xcDlIhMFBuElp3dIo,1468
202
+ unfold/templates/unfold/helpers/fieldsets_tabs.html,sha256=-xKeJvEma2arbfle1gMMVR3wjaros7EIcbSyAgR0Lh4,1541
199
203
  unfold/templates/unfold/helpers/form_errors.html,sha256=mrv2_J7RPcLfVtoN1UHh3rfUyOSZpHl67wk1UGqtPcY,266
200
204
  unfold/templates/unfold/helpers/form_label.html,sha256=7FfaXfviQmqKpsA1E7NSwM8rJiMNLl9e73XQram0Pfs,249
201
205
  unfold/templates/unfold/helpers/header.html,sha256=cHAPz7niLLQDQbrZpURZS1hiA8OYLzkGaqnYzjgv8aE,1151
202
206
  unfold/templates/unfold/helpers/header_back_button.html,sha256=lNZcYZzQRZdNSI70UrxJ-pq7xnxifziZXtSK1FoPy_U,416
203
- unfold/templates/unfold/helpers/help_text.html,sha256=o-2_hyruIr_Xt0fo38aGgrpptPJFhddnVMPOVQOYhE4,113
207
+ unfold/templates/unfold/helpers/help_text.html,sha256=fDsSptYt6aPO3xPdMgbpwaINaF1FGFmaOb_1FiS_Bsg,118
204
208
  unfold/templates/unfold/helpers/history.html,sha256=qxfCZxFIyl91qDpxfwozhmyVFZwULysA8Y_2H8XJ7bM,1937
205
209
  unfold/templates/unfold/helpers/label.html,sha256=DRs0B08SmIvNY0QcFy78xDiI0hAKyfjExu-cm33PAaQ,911
206
210
  unfold/templates/unfold/helpers/language_form.html,sha256=Ve1qfIcL4DV6cxYfhqGkC_KghDjNyEB8j3hYts1S34M,708
@@ -211,31 +215,37 @@ unfold/templates/unfold/helpers/messages/errornote.html,sha256=3RVj4BIdft3yEUOdz
211
215
  unfold/templates/unfold/helpers/messages/info.html,sha256=4SCFtg3p6F33ZHJhYoIm2VVO5UPdW0ef04mTTqIdcD0,153
212
216
  unfold/templates/unfold/helpers/messages/success.html,sha256=UWHpRJTvVhXiYC9-AvJ9HeEZJj-poejFgy7EgLvwpf8,157
213
217
  unfold/templates/unfold/helpers/messages/warning.html,sha256=UldycPr8wdyp5vdjlkfs_yHCEvNg9PgspyzTALAjdDY,161
214
- unfold/templates/unfold/helpers/messages.html,sha256=ISkUlIDraDAVBwASkX1tFXHo8TY1vHKmmhh8BAg123E,915
218
+ unfold/templates/unfold/helpers/messages.html,sha256=SYVGFWdL1ZhFamxnZ6ZJUvs9GKITYpY4fvdebBlSprU,1003
215
219
  unfold/templates/unfold/helpers/navigation.html,sha256=U9cMmw3ETMI88zqHvSf5VQkMehcU6YfLKTcH1CmS4fY,554
216
220
  unfold/templates/unfold/helpers/navigation_header.html,sha256=08_LTuJF6MrG0hK6lUI9daCP5kQr5Q7FwY7Pl4kFxJQ,1474
217
- unfold/templates/unfold/helpers/pagination.html,sha256=N5TQDlj5kgJLj02oRiaX8W62jQtZVNoWfI2hXdpuY1g,439
221
+ unfold/templates/unfold/helpers/pagination.html,sha256=cvD4Jtw1YeKcgvWuY10iyM9Qjs52iokskzYG3TLscyY,375
218
222
  unfold/templates/unfold/helpers/pagination_current_item.html,sha256=4cZ2KLVcP0Y7xuGyXgexDQ07r94cgM5Gnmtv11dkRPQ,69
219
223
  unfold/templates/unfold/helpers/pagination_default.html,sha256=pseTrqaG5EOn_IpCy0GXNht3ickSkZYJ4lJaocZeI6A,496
220
224
  unfold/templates/unfold/helpers/pagination_ellipsis.html,sha256=8g0KUUKtqRkXx_EBLGtsJsiYQO4tPS3GazZjxT90e0M,56
221
225
  unfold/templates/unfold/helpers/pagination_infinite.html,sha256=QyHcYb36CeuiwpukC0Y553UC4LU2tPolGos-0mh7WP0,557
222
- unfold/templates/unfold/helpers/search.html,sha256=Pu2hxLGkN_NA-BU8_t4E7Q6uaY6hYTLoD8NZHyrcCaQ,1549
223
- unfold/templates/unfold/helpers/search_results.html,sha256=pQx7KoDMapWDusV88qe5hxlxicfP-S9iacji1Hq41Kc,661
224
- unfold/templates/unfold/helpers/site_branding.html,sha256=_pUyOvdjlV624eRq0wjpJkgXpn9DCDGc-0U6Mw0FupI,266
226
+ unfold/templates/unfold/helpers/pagination_inline.html,sha256=wFuXDvW1p-9OF1FSlOERkhP1Jt1WLzNfN7UkqsHtOQ4,1414
227
+ unfold/templates/unfold/helpers/popup_header.html,sha256=IDR9B0OO6v6TvJggeof-OMGJ4cYK2INStU_2a1AlWfM,1325
228
+ unfold/templates/unfold/helpers/search.html,sha256=Eo59yc7wRlZ-Ee-AuQCSi-CfBUXUnLBMiSQO8uxaUoo,1772
229
+ unfold/templates/unfold/helpers/search_results.html,sha256=awd6DWTLILIBnx-QkwN7my8IncTN9BfE8jHm7OibgoM,846
230
+ unfold/templates/unfold/helpers/shortcut.html,sha256=gVoXCDwEpbjxLilJ3QEoFLWmFlH18-vgoWdHv6aRLfQ,199
231
+ unfold/templates/unfold/helpers/site_branding.html,sha256=_hhWQZqUrMYGqRJRpeANjbRJPfCROPZkQLZLV7FiRk8,268
225
232
  unfold/templates/unfold/helpers/site_dropdown.html,sha256=UwGFImzujCt20M4_WZt_T9TjeqVSEattYtLXHq57bcY,910
226
233
  unfold/templates/unfold/helpers/site_icon.html,sha256=q9YynbaAZsEXKXT3SDZy54iSdjUwR6i2vo0AFyllGQ0,1490
227
234
  unfold/templates/unfold/helpers/site_logo.html,sha256=S_QJoT2qh0xw0ciaKxoT4GJ6QIH5eqgRSC0abbWWkOI,423
228
235
  unfold/templates/unfold/helpers/submit.html,sha256=LaJdnSDzucH1CpWNCLfqHe_tCcCBMLap8c9ysY2q1HU,211
229
- unfold/templates/unfold/helpers/tab_action.html,sha256=cy4JxV-wfXv9tNOTgsWXuj1bc8gT_CRy6tZFVATUZ-U,3346
236
+ unfold/templates/unfold/helpers/tab_action.html,sha256=mJd87_2qkSNQEwDZZCDkvll5ZbizBkPxWFnBR-kH89o,3431
230
237
  unfold/templates/unfold/helpers/tab_actions.html,sha256=Ir0HFxNAdZWdE6GuxaanSScNYONft0lNB1sZZcKMS5Q,685
231
238
  unfold/templates/unfold/helpers/tab_items.html,sha256=5kZcU7R9tZKKxVLahp2siZpZf7FhrluBH1dIAIaWoAg,3377
232
239
  unfold/templates/unfold/helpers/tab_list.html,sha256=mprad7Fu5ms1qGqjDl9HMmtfUodk43smd3IjagYOyr0,452
233
240
  unfold/templates/unfold/helpers/theme_switch.html,sha256=Y46KKpULH_G-fKQuc5LzfSB7Pubcgj_dBJPRMwZoWxE,2408
241
+ unfold/templates/unfold/helpers/unauthenticated_header.html,sha256=DNfZt_JDnMFwwo_SG0iYEB3I7eQIbwaB4QcpJGs1dtk,535
242
+ unfold/templates/unfold/helpers/unauthenticated_title.html,sha256=2aGnsdZbDV6yno9pb4sqEi15J7M9iLiMz3FY9F0Sgq4,387
234
243
  unfold/templates/unfold/helpers/userlinks.html,sha256=bJRDQXQ_0XgxLpfmZoNgU9xpn4X6T6LOAgEmzepFXOI,740
235
244
  unfold/templates/unfold/helpers/welcomemsg.html,sha256=Z3dDvozCJ5VhSVA_1go0F4ZD0lQYhCmoWqd_RM00pec,2019
236
245
  unfold/templates/unfold/layouts/base.html,sha256=e9T-vuPvrySHf23LLwRuTQXUg0Q4x-6gmT_yXghqc-I,278
237
246
  unfold/templates/unfold/layouts/base_simple.html,sha256=qUZ9YM24UHgWbmTl61zgN4_ty49P1FZJQ2siNbwnFnQ,1244
238
247
  unfold/templates/unfold/layouts/skeleton.html,sha256=2AWjJx6TxpYbXldwrXRbtyp9XTpAu6O0U_zcJtfYfWs,4684
248
+ unfold/templates/unfold/layouts/unauthenticated.html,sha256=Rh84psp8Ek-i1hVIiYz-HX7lyiQL7FnqA_uAp-D69DI,1022
239
249
  unfold/templates/unfold/templatetags/preserve_changelist_filters.html,sha256=sx2jUhogNY4emBhY8PqxQ6mXifbXQb_IQI9Hd0boJI0,111
240
250
  unfold/templates/unfold/widgets/clearable_file_input.html,sha256=8dXZnc6z2D2K08hqHsQwR5UJffcIRnmYBT02zmCOr9A,2191
241
251
  unfold/templates/unfold/widgets/clearable_file_input_small.html,sha256=zhnaDz72mJgMrq-nCPCMuR5tEJaFVfJyOJUAzR6tQWc,2624
@@ -249,23 +259,24 @@ unfold/templates/unfold/widgets/select.html,sha256=MyhlEO4sf7AUjOgH84rL76rhYM0WE
249
259
  unfold/templates/unfold/widgets/split_datetime.html,sha256=Hfv2PoHxPmV_21DmBFmMcR4WVP9vTV9SrfjVdliRci8,1074
250
260
  unfold/templates/unfold/widgets/split_datetime_vertical.html,sha256=39lZsRyRcKr8DIcy9oL39zC8nAHZTHwW6gyTYOKePrQ,806
251
261
  unfold/templates/unfold/widgets/split_money.html,sha256=AFLUBmzGbY-RXgsfz7gaDxVRhplaIPhXjg_hWYo9xcY,352
262
+ unfold/templates/unfold/widgets/text.html,sha256=jR_nrBN5A-evlX8aHpJplB_CG4aJblaVLMdp8z4-dG8,949
252
263
  unfold/templates/unfold/widgets/textarea.html,sha256=-ZLDGrtASero7L-J3VvTNq_KjPAZh_kLVw0Ow3awqXM,144
253
264
  unfold/templates/unfold/widgets/time.html,sha256=ih9wj8koTaHb9s1NGUmyN9rHvSAmqCMbti9ONDOIujg,122
254
265
  unfold/templates/unfold/widgets/url.html,sha256=IRLgW44VTKN7UrSWeywJwaxQhfG5jhhXuT-KTadKX58,304
255
266
  unfold/templates/unfold_crispy/display_form.html,sha256=tGyr8hvMlnKkm2ILbVj0enj6IrjtqiKo6nO9Z-zHE2Q,270
256
267
  unfold/templates/unfold_crispy/errors.html,sha256=bzTXuZh_UkQLb4sPaa0En5Uopveoe573TaEOM9OQVcw,132
257
268
  unfold/templates/unfold_crispy/errors_formset.html,sha256=D52cx_PmIF9KSTO8WmQu0m2atpDfLIt79SPKz9LmjSE,136
258
- unfold/templates/unfold_crispy/field.html,sha256=K8B4K28oMI914QiD_21g6NO_86_9T66t7Amxomja12c,1681
269
+ unfold/templates/unfold_crispy/field.html,sha256=yOxniE7kAzzPRl8sHH5hHKzSoCYKfJTNeEngoTBHW3U,2079
259
270
  unfold/templates/unfold_crispy/inputs.html,sha256=6aMXsUY26q_JcIVYgd6X4lwbwbagWj68KHyAYk_fCN4,238
260
271
  unfold/templates/unfold_crispy/layout/attrs.html,sha256=LsLlfKenzHKl6n25m4Ers2NepLSA_RBy9AqezKZ7rH8,173
261
272
  unfold/templates/unfold_crispy/layout/baseinput.html,sha256=GjMxXoqpnxCPkPC1E3v_crzlxDb_hHMf_UgJYfqSsYE,440
262
273
  unfold/templates/unfold_crispy/layout/button.html,sha256=evlO80en9FkbW3UayLPTNUZXAYvgr3slSAsGPKXs96M,67
263
274
  unfold/templates/unfold_crispy/layout/buttonholder.html,sha256=ruHqViROk7nh4luckA8-mcfmnYBqsVM85e8j0rOi3cU,415
264
- unfold/templates/unfold_crispy/layout/checkbox.html,sha256=V1YGDcYfn4spUHx6M5ux8fzfY7vrWCPCO2UfqFyAKos,769
275
+ unfold/templates/unfold_crispy/layout/checkbox.html,sha256=wyx8RdcRI6YSCxAOl2kKd82rCuKnGwDaVt2qA751FR0,1707
265
276
  unfold/templates/unfold_crispy/layout/column.html,sha256=Bob4xRcbJOHScDjSjLMRIMNf4lonNmm8F_JOm2azTik,172
266
277
  unfold/templates/unfold_crispy/layout/div.html,sha256=RE9qQ2w2I2zpi7Z7xzVmVO03UXq0yZvMw-W7rVJkEdw,174
267
278
  unfold/templates/unfold_crispy/layout/field_errors.html,sha256=N0eNJo4OvYzFHPD6vX2gSZWabm46W1GP011sd_dua1I,291
268
- unfold/templates/unfold_crispy/layout/fieldset.html,sha256=hbbJVTNUOwFoBtpFMpqGaf-I4cXnQZEG5s91EUxBUzY,654
279
+ unfold/templates/unfold_crispy/layout/fieldset.html,sha256=g1ZIjrdkO3vdoaAj0KO43kss3VJvueh2f7HuP2Z5yLE,764
269
280
  unfold/templates/unfold_crispy/layout/fieldset_subheader.html,sha256=fAD3wa9JiuYJwbo8bsmW-LhMw72V2j27EkRgy0G6Kc8,209
270
281
  unfold/templates/unfold_crispy/layout/help_text.html,sha256=FY0UQv5FsoOFhrqvbILEfZE78Hj30r73YHCtg_MWNeY,207
271
282
  unfold/templates/unfold_crispy/layout/help_text_and_errors.html,sha256=Um14wIg0FHthNM0mKE9VdptTrC-lTTcrDUO-UbbXxhY,108
@@ -277,13 +288,13 @@ unfold/templates/unfold_crispy/uni_form.html,sha256=l9UNCUrIycgJ0p_B6qhtO_YxdARy
277
288
  unfold/templates/unfold_crispy/whole_uni_form.html,sha256=ufXRKCIGqkqKFOsh166rpKUnHpFMyBV4eYUCRhs3iws,475
278
289
  unfold/templates/unfold_crispy/whole_uni_formset.html,sha256=CYksfG2hRUdi5n691KW2ih-FfBxpOU4qVBfbOvcu1zs,873
279
290
  unfold/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
280
- unfold/templatetags/unfold.py,sha256=wIooF34mIRmyN-9l_hKSMVYWNauH8kwL_q11J7OJ3vQ,17411
281
- unfold/templatetags/unfold_list.py,sha256=ayShOYEXcV3o7wKt3t2aFTWvg62Mb-WGlxjYVGgk3a0,14344
291
+ unfold/templatetags/unfold.py,sha256=rk4f43w954HawFjhfwqY3zSwNRUGcSfR7FSYCko8_aE,18179
292
+ unfold/templatetags/unfold_list.py,sha256=WWQSCM4QmQMr8YddA4krFztuuUXo2y28RA7jZfOiewE,14415
282
293
  unfold/typing.py,sha256=i7LM2LiwYTAjT5-OLDUPVn5b9X-DMmHnjlZG2toWwSE,692
283
294
  unfold/utils.py,sha256=lXKkvhaTxoTtd4p3bB0wHIZD26md6XzBcDkPL5bJGH8,6191
284
295
  unfold/views.py,sha256=FuYnMrlg6SegLUDDN6An__yZj8rchD_iBK8myieYhkA,1492
285
- unfold/widgets.py,sha256=z8bWwus1CYn20jp4f7tn_ChGUDCS563RZYp09I2kxIY,23216
286
- django_unfold-0.59.0.dist-info/LICENSE.md,sha256=Ltk_quRyyvV3J5v3brtOqmibeZSw2Hrb8bY1W3ya0Ik,1077
287
- django_unfold-0.59.0.dist-info/METADATA,sha256=AhBYGL06Dc5hTu3wW55BLYdrLmQxF_-NvvgX3cIibFY,7951
288
- django_unfold-0.59.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
289
- django_unfold-0.59.0.dist-info/RECORD,,
296
+ unfold/widgets.py,sha256=S_HEcRNml7E4PqwYUpY58QIP7X6KH-5EHRHwEploCrU,24557
297
+ django_unfold-0.61.0.dist-info/LICENSE.md,sha256=Ltk_quRyyvV3J5v3brtOqmibeZSw2Hrb8bY1W3ya0Ik,1077
298
+ django_unfold-0.61.0.dist-info/METADATA,sha256=4YnEukbJQi-U2XT4-O4yzA5RlXDP-5YoO5Du-uSqwFA,8445
299
+ django_unfold-0.61.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
300
+ django_unfold-0.61.0.dist-info/RECORD,,
unfold/admin.py CHANGED
@@ -1,11 +1,18 @@
1
1
  from functools import update_wrapper
2
- from typing import Optional
2
+ from typing import Any, Optional
3
3
 
4
4
  from django import forms
5
5
  from django.contrib.admin import ModelAdmin as BaseModelAdmin
6
6
  from django.contrib.admin import StackedInline as BaseStackedInline
7
7
  from django.contrib.admin import TabularInline as BaseTabularInline
8
8
  from django.contrib.admin import display, helpers
9
+ from django.contrib.admin.options import InlineModelAdmin
10
+ from django.contrib.contenttypes.admin import (
11
+ GenericStackedInline as BaseGenericStackedInline,
12
+ )
13
+ from django.contrib.contenttypes.admin import (
14
+ GenericTabularInline as BaseGenericTabularInline,
15
+ )
9
16
  from django.db.models import BLANK_CHOICE_DASH, Model
10
17
  from django.http import HttpRequest, HttpResponse
11
18
  from django.shortcuts import redirect
@@ -16,8 +23,11 @@ from django.utils.translation import gettext_lazy as _
16
23
  from django.views import View
17
24
 
18
25
  from unfold.checks import UnfoldModelAdminChecks
19
- from unfold.fields import UnfoldAdminField, UnfoldAdminReadonlyField
20
- from unfold.forms import ActionForm
26
+ from unfold.forms import (
27
+ ActionForm,
28
+ PaginationGenericInlineFormSet,
29
+ PaginationInlineFormSet,
30
+ )
21
31
  from unfold.mixins import ActionModelAdminMixin, BaseModelAdminMixin
22
32
  from unfold.overrides import FORMFIELD_OVERRIDES_INLINE
23
33
  from unfold.typing import FieldsetsType
@@ -32,10 +42,6 @@ checkbox = UnfoldBooleanWidget(
32
42
  lambda value: False,
33
43
  )
34
44
 
35
- helpers.AdminField = UnfoldAdminField
36
-
37
- helpers.AdminReadonlyField = UnfoldAdminReadonlyField
38
-
39
45
 
40
46
  class ModelAdmin(BaseModelAdminMixin, ActionModelAdminMixin, BaseModelAdmin):
41
47
  action_form = ActionForm
@@ -182,16 +188,42 @@ class ModelAdmin(BaseModelAdminMixin, ActionModelAdminMixin, BaseModelAdmin):
182
188
  def get_changelist(self, request, **kwargs):
183
189
  return ChangeList
184
190
 
191
+ def get_formset_kwargs(
192
+ self, request: HttpRequest, obj: Model, inline: InlineModelAdmin, prefix: str
193
+ ) -> dict[str, Any]:
194
+ formset_kwargs = super().get_formset_kwargs(request, obj, inline, prefix)
185
195
 
186
- class TabularInline(BaseModelAdminMixin, BaseTabularInline):
187
- formfield_overrides = FORMFIELD_OVERRIDES_INLINE
188
- readonly_preprocess_fields = {}
189
- ordering_field = None
190
- hide_ordering_field = False
196
+ if hasattr(inline, "per_page"):
197
+ formset_kwargs["request"] = request
198
+ formset_kwargs["per_page"] = inline.per_page
191
199
 
200
+ return formset_kwargs
192
201
 
193
- class StackedInline(BaseModelAdminMixin, BaseStackedInline):
202
+
203
+ class BaseInlineMixin:
194
204
  formfield_overrides = FORMFIELD_OVERRIDES_INLINE
195
205
  readonly_preprocess_fields = {}
196
206
  ordering_field = None
207
+ per_page = None
197
208
  hide_ordering_field = False
209
+ collapsible = False
210
+
211
+
212
+ class TabularInline(BaseInlineMixin, BaseModelAdminMixin, BaseTabularInline):
213
+ formset = PaginationInlineFormSet
214
+
215
+
216
+ class StackedInline(BaseInlineMixin, BaseModelAdminMixin, BaseStackedInline):
217
+ formset = PaginationInlineFormSet
218
+
219
+
220
+ class GenericStackedInline(
221
+ BaseInlineMixin, BaseModelAdminMixin, BaseGenericStackedInline
222
+ ):
223
+ formset = PaginationGenericInlineFormSet
224
+
225
+
226
+ class GenericTabularInline(
227
+ BaseInlineMixin, BaseModelAdminMixin, BaseGenericTabularInline
228
+ ):
229
+ formset = PaginationGenericInlineFormSet
@@ -0,0 +1,5 @@
1
+ {% extends "admin/import_export/change_list.html" %}
2
+
3
+ {% block actions-items %}
4
+ {% include "admin/import_export/change_list_import_item.html" %}
5
+ {% endblock %}
@@ -12,10 +12,15 @@ from django.http import HttpRequest
12
12
  from django.utils.text import get_text_list
13
13
  from django.utils.translation import gettext_lazy as _
14
14
 
15
- from unfold.admin import StackedInline, TabularInline
16
-
17
- from .checks import NonrelatedModelAdminChecks
18
- from .forms import NonrelatedInlineModelFormSet, nonrelated_inline_formset_factory
15
+ from unfold.admin import (
16
+ StackedInline,
17
+ TabularInline,
18
+ )
19
+ from unfold.contrib.inlines.checks import NonrelatedModelAdminChecks
20
+ from unfold.contrib.inlines.forms import (
21
+ NonrelatedInlineModelFormSet,
22
+ nonrelated_inline_formset_factory,
23
+ )
19
24
 
20
25
 
21
26
  class NonrelatedInlineMixin:
@@ -135,8 +140,8 @@ class NonrelatedInlineMixin:
135
140
 
136
141
 
137
142
  class NonrelatedStackedInline(NonrelatedInlineMixin, StackedInline):
138
- pass
143
+ formset = NonrelatedInlineModelFormSet
139
144
 
140
145
 
141
146
  class NonrelatedTabularInline(NonrelatedInlineMixin, TabularInline):
142
- pass
147
+ formset = NonrelatedInlineModelFormSet
@@ -3,8 +3,10 @@ from typing import Any, Callable, Optional
3
3
  from django.db.models import Model, QuerySet
4
4
  from django.forms import BaseModelFormSet, ModelForm, modelformset_factory
5
5
 
6
+ from unfold.forms import PaginationFormSetMixin
6
7
 
7
- class NonrelatedInlineModelFormSet(BaseModelFormSet):
8
+
9
+ class NonrelatedInlineModelFormSet(PaginationFormSetMixin, BaseModelFormSet):
8
10
  def __init__(
9
11
  self,
10
12
  instance: Optional[Model] = None,
File without changes
@@ -0,0 +1,6 @@
1
+ from django.apps import AppConfig
2
+
3
+
4
+ class DefaultAppConfig(AppConfig):
5
+ name = "unfold.contrib.location_field"
6
+ label = "unfold_location_field"
@@ -0,0 +1,5 @@
1
+ <div class="map-widget flex flex-col gap-2">
2
+ {{ field_input }}
3
+
4
+ <div id="map_{{ field_name }}" class="border gap-2 h-72 max-w-2xl rounded-default shadow-xs"></div>
5
+ </div>
@@ -1,25 +1,23 @@
1
1
  {% load i18n %}
2
2
 
3
- <div {% if not is_popup %}id="submit-row"{% endif %} class="relative z-20 {% if not is_popup %} mt-20 lg:mt-8{% endif %}">
4
- <div class="{% if not is_popup %}bottom-0 fixed left-0 right-0{% endif %}" {% if not is_popup %}x-bind:class="{'xl:left-0': !sidebarDesktopOpen, 'xl:left-72': sidebarDesktopOpen}"{% endif %}>
5
- <div class="bg-white dark:bg-base-900 {% if not is_popup %}border-t border-base-200 px-4 py-4 relative scrollable-top dark:border-base-800{% endif %}">
6
- <div class="container flex flex-col-reverse gap-3 items-center mx-auto lg:flex-row-reverse">
7
- {% if not revert_disabled %}
8
- <button type="submit" class="bg-primary-600 block border border-transparent font-medium px-3 py-2 rounded-default text-sm text-white w-full lg:w-auto" name="_save" {{ onclick_attrib }}>
9
- {% trans 'Revert' %}
10
- </button>
11
- {% endif %}
3
+ <div {% if not is_popup %}id="submit-row"{% endif %} class="relative lg:sticky lg:bottom-0 z-40">
4
+ <div class="backdrop-blur-xs bg-white/80 rounded-b-default pb-4 px-4 dark:bg-base-900/80 {% if not is_popup %}lg:border-t lg:border-base-200 relative lg:scrollable-top lg:py-0 dark:border-base-800{% endif %}">
5
+ <div class="flex flex-col-reverse gap-3 items-center mx-auto lg:flex-row-reverse container lg:h-[64px]">
6
+ {% if not revert_disabled %}
7
+ <button type="submit" form="{{ opts.model_name }}_form" class="bg-primary-600 block border border-transparent cursor-pointer font-medium px-3 py-2 rounded-default text-sm text-white w-full lg:w-auto" name="_save" {{ onclick_attrib }}>
8
+ {% trans 'Revert' %}
9
+ </button>
10
+ {% endif %}
12
11
 
13
- {% if change_history %}
14
- <button type="submit" class="bg-primary-600 block border border-transparent font-medium px-3 py-2 rounded-default text-sm text-white w-full lg:w-auto" name="_change_history" {{ onclick_attrib }}>
15
- {% trans 'Change History' %}
16
- </button>
17
- {% endif %}
12
+ {% if change_history %}
13
+ <button type="submit" form="{{ opts.model_name }}_form" class="bg-primary-600 block border border-transparent cursor-pointer font-medium px-3 py-2 rounded-default text-sm text-white w-full lg:w-auto" name="_change_history" {{ onclick_attrib }}>
14
+ {% trans 'Change History' %}
15
+ </button>
16
+ {% endif %}
18
17
 
19
- <a href="{{ history_url }}" class="border border-base-200 font-medium mr-auto px-3 py-2 rounded-default text-sm text-base-500 text-center transition-all w-full hover:bg-base-50 lg:block lg:w-auto dark:border-base-700 dark:text-font-default-dark dark:hover:text-base-200 dark:hover:bg-base-900">
20
- {% trans 'Close' %}
21
- </a>
22
- </div>
18
+ <a href="{{ history_url }}" class="border border-base-200 font-medium mr-auto px-3 py-2 rounded-default text-sm text-base-500 text-center transition-all w-full hover:bg-base-50 lg:block lg:w-auto dark:border-base-700 dark:text-font-default-dark dark:hover:text-base-200 dark:hover:bg-base-900">
19
+ {% trans 'Close' %}
20
+ </a>
23
21
  </div>
24
22
  </div>
25
23
  </div>
unfold/fields.py CHANGED
@@ -17,33 +17,24 @@ from django.utils.module_loading import import_string
17
17
  from django.utils.safestring import SafeText, mark_safe
18
18
  from django.utils.text import capfirst
19
19
 
20
- from unfold.mixins import BaseModelAdminMixin
21
20
  from unfold.settings import get_config
22
21
  from unfold.utils import display_for_field, prettify_json
23
- from unfold.widgets import CHECKBOX_LABEL_CLASSES, LABEL_CLASSES
22
+ from unfold.widgets import (
23
+ CHECKBOX_LABEL_CLASSES,
24
+ INPUT_CLASSES,
25
+ LABEL_CLASSES,
26
+ )
24
27
 
25
28
 
26
29
  class UnfoldAdminReadonlyField(helpers.AdminReadonlyField):
27
30
  def label_tag(self) -> SafeText:
28
- from .admin import ModelAdmin
29
-
30
- if not isinstance(self.model_admin, ModelAdmin) and not isinstance(
31
- self.model_admin, BaseModelAdminMixin
32
- ):
33
- return super().label_tag()
34
-
35
31
  attrs = {
36
32
  "class": " ".join(LABEL_CLASSES + ["mb-2"]),
37
33
  }
38
34
 
39
35
  label = self.field["label"]
40
36
 
41
- return format_html(
42
- "<label{}>{}{}</label>",
43
- flatatt(attrs),
44
- capfirst(label),
45
- self.form.label_suffix,
46
- )
37
+ return format_html("<label{}>{}</label>", flatatt(attrs), capfirst(label))
47
38
 
48
39
  def is_json(self) -> bool:
49
40
  field, obj, model_admin = (
@@ -174,12 +165,19 @@ class UnfoldAdminReadonlyField(helpers.AdminReadonlyField):
174
165
 
175
166
 
176
167
  class UnfoldAdminField(helpers.AdminField):
168
+ def __init__(self, *args, **kwargs):
169
+ super().__init__(*args, **kwargs)
170
+
171
+ try:
172
+ from location_field.widgets import LocationWidget
173
+
174
+ if isinstance(self.field.field.widget, LocationWidget):
175
+ self.field.field.widget.attrs["class"] = " ".join(INPUT_CLASSES)
176
+ except ImportError:
177
+ pass
178
+
177
179
  def label_tag(self) -> SafeText:
178
180
  classes = []
179
- if not self.field.field.widget.__class__.__name__.startswith(
180
- "Unfold"
181
- ) and not self.field.field.widget.template_name.startswith("unfold"):
182
- return super().label_tag()
183
181
 
184
182
  # TODO load config from current AdminSite (override Fieldline.__iter__ method)
185
183
  for lang, flag in get_config()["EXTENSIONS"]["modeltranslation"][