django-unfold 0.39.0__tar.gz → 0.41.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (219) hide show
  1. django_unfold-0.41.0/PKG-INFO +74 -0
  2. django_unfold-0.41.0/README.md +48 -0
  3. {django_unfold-0.39.0 → django_unfold-0.41.0}/pyproject.toml +7 -6
  4. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/admin.py +7 -0
  5. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/forms.py +2 -2
  6. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/templates/unfold/forms/array.html +2 -2
  7. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +1 -1
  8. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +1 -1
  9. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +1 -1
  10. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/unfold/guardian/user_form.html +3 -3
  11. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/export.html +1 -1
  12. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import.html +1 -1
  13. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +1 -1
  14. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/forms.py +7 -8
  15. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/sites.py +12 -0
  16. django_unfold-0.41.0/src/unfold/static/admin/js/inlines.js +439 -0
  17. django_unfold-0.41.0/src/unfold/static/unfold/css/styles.css +1 -0
  18. django_unfold-0.41.0/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
  19. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/material-symbols/styles.css +1 -2
  20. django_unfold-0.41.0/src/unfold/static/unfold/js/alpine.sort.js +1 -0
  21. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/app.js +36 -10
  22. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/select2.init.js +1 -1
  23. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/styles.css +5 -1
  24. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/app_index.html +1 -1
  25. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/app_list.html +1 -1
  26. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/auth/user/change_password.html +1 -1
  27. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/base.html +1 -1
  28. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/change_form.html +1 -1
  29. django_unfold-0.41.0/src/unfold/templates/admin/change_list.html +128 -0
  30. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/delete_confirmation.html +4 -9
  31. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/delete_selected_confirmation.html +4 -8
  32. django_unfold-0.41.0/src/unfold/templates/admin/edit_inline/stacked.html +96 -0
  33. django_unfold-0.41.0/src/unfold/templates/admin/edit_inline/tabular.html +178 -0
  34. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/login.html +2 -0
  35. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/object_history.html +1 -1
  36. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/submit_line.html +8 -8
  37. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/registration/password_change_done.html +1 -1
  38. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/registration/password_change_form.html +1 -1
  39. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/change_list_filter.html +7 -9
  40. django_unfold-0.41.0/src/unfold/templates/unfold/components/button.html +4 -0
  41. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/card.html +1 -1
  42. django_unfold-0.41.0/src/unfold/templates/unfold/components/progress.html +21 -0
  43. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/separator.html +1 -1
  44. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/app_list.html +2 -2
  45. django_unfold-0.41.0/src/unfold/templates/unfold/helpers/delete_submit_line.html +11 -0
  46. django_unfold-0.41.0/src/unfold/templates/unfold/helpers/display_header.html +30 -0
  47. django_unfold-0.41.0/src/unfold/templates/unfold/helpers/field_readonly_value.html +1 -0
  48. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/fieldset_row.html +2 -0
  49. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/welcomemsg.html +1 -1
  50. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/layouts/skeleton.html +1 -0
  51. django_unfold-0.41.0/src/unfold/templates/unfold/widgets/url.html +9 -0
  52. django_unfold-0.39.0/PKG-INFO +0 -70
  53. django_unfold-0.39.0/README.md +0 -45
  54. django_unfold-0.39.0/src/unfold/static/unfold/css/styles.css +0 -1
  55. django_unfold-0.39.0/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
  56. django_unfold-0.39.0/src/unfold/templates/admin/change_list.html +0 -118
  57. django_unfold-0.39.0/src/unfold/templates/admin/edit_inline/stacked.html +0 -94
  58. django_unfold-0.39.0/src/unfold/templates/admin/edit_inline/tabular.html +0 -169
  59. django_unfold-0.39.0/src/unfold/templates/unfold/components/button.html +0 -3
  60. django_unfold-0.39.0/src/unfold/templates/unfold/components/progress.html +0 -21
  61. django_unfold-0.39.0/src/unfold/templates/unfold/helpers/display_header.html +0 -25
  62. django_unfold-0.39.0/src/unfold/templates/unfold/helpers/field_readonly_value.html +0 -1
  63. django_unfold-0.39.0/src/unfold/templates/unfold/widgets/url.html +0 -7
  64. {django_unfold-0.39.0 → django_unfold-0.41.0}/LICENSE.md +0 -0
  65. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/__init__.py +0 -0
  66. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/apps.py +0 -0
  67. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/checks.py +0 -0
  68. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/__init__.py +0 -0
  69. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/__init__.py +0 -0
  70. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/admin.py +0 -0
  71. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/apps.py +0 -0
  72. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css +0 -0
  73. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js +0 -0
  74. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +0 -0
  75. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider.min.js +0 -0
  76. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/js/wNumb.min.js +0 -0
  77. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +0 -0
  78. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +0 -0
  79. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_field.html +0 -0
  80. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +0 -0
  81. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +0 -0
  82. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +0 -0
  83. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/__init__.py +0 -0
  84. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/apps.py +0 -0
  85. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix.css +0 -0
  86. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.config.js +0 -0
  87. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.js +0 -0
  88. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +0 -0
  89. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/templates/unfold/forms/wysiwyg.html +0 -0
  90. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/widgets.py +0 -0
  91. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/__init__.py +0 -0
  92. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/apps.py +0 -0
  93. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/change_form.html +0 -0
  94. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/field.html +0 -0
  95. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/unfold/guardian/group_form.html +2 -2
  96. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/__init__.py +0 -0
  97. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/apps.py +0 -0
  98. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/forms.py +0 -0
  99. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/base.html +0 -0
  100. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_form.html +0 -0
  101. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export.html +0 -0
  102. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html +0 -0
  103. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html +0 -0
  104. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html +0 -0
  105. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_confirm.html +0 -0
  106. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_errors.html +0 -0
  107. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_form.html +0 -0
  108. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_preview.html +0 -0
  109. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_validation.html +0 -0
  110. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.html +0 -0
  111. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/__init__.py +0 -0
  112. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/admin.py +0 -0
  113. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/apps.py +0 -0
  114. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/checks.py +0 -0
  115. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/forms.py +0 -0
  116. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/__init__.py +0 -0
  117. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/apps.py +0 -0
  118. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history.html +0 -0
  119. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_list.html +0 -0
  120. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/templates/simple_history/submit_line.html +0 -0
  121. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/dataclasses.py +0 -0
  122. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/decorators.py +0 -0
  123. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/exceptions.py +0 -0
  124. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/fields.py +0 -0
  125. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/settings.py +0 -0
  126. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/admin/js/admin/RelatedObjectLookups.js +0 -0
  127. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/css/simplebar.css +0 -0
  128. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/Inter-Bold.woff2 +0 -0
  129. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/Inter-Medium.woff2 +0 -0
  130. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/Inter-Regular.woff2 +0 -0
  131. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2 +0 -0
  132. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/styles.css +0 -0
  133. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/alpine.anchor.js +0 -0
  134. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/alpine.js +0 -0
  135. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/alpine.persist.js +0 -0
  136. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/chart.js +0 -0
  137. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/htmx.js +0 -0
  138. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/simplebar.js +0 -0
  139. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/actions.html +0 -0
  140. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/auth/user/add_form.html +0 -0
  141. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/base_site.html +0 -0
  142. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/change_form_object_tools.html +0 -0
  143. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/change_list_object_tools.html +0 -0
  144. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/change_list_results.html +0 -0
  145. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/date_hierarchy.html +0 -0
  146. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/filter.html +0 -0
  147. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/includes/fieldset.html +0 -0
  148. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/includes/object_delete_summary.html +0 -0
  149. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/index.html +0 -0
  150. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/nav_sidebar.html +0 -0
  151. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/pagination.html +0 -0
  152. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/search_form.html +0 -0
  153. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/auth/widgets/read_only_password_hash.html +0 -0
  154. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/registration/logged_out.html +0 -0
  155. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/chart/bar.html +0 -0
  156. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/chart/line.html +0 -0
  157. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/container.html +0 -0
  158. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/flex.html +0 -0
  159. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/icon.html +0 -0
  160. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/navigation.html +0 -0
  161. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/table.html +0 -0
  162. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/text.html +0 -0
  163. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/title.html +0 -0
  164. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/account_links.html +0 -0
  165. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/actions_row.html +0 -0
  166. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/add_link.html +0 -0
  167. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/app_list_default.html +0 -0
  168. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/attrs.html +0 -0
  169. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/boolean.html +0 -0
  170. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/breadcrumb_item.html +0 -0
  171. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/display_label.html +0 -0
  172. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/field.html +0 -0
  173. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/field_readonly.html +0 -0
  174. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/fieldsets_tabs.html +0 -0
  175. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/form_errors.html +0 -0
  176. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/form_label.html +0 -0
  177. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/header.html +0 -0
  178. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/help_text.html +0 -0
  179. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/history.html +0 -0
  180. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/label.html +0 -0
  181. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/messages/error.html +0 -0
  182. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/messages/errornote.html +0 -0
  183. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/messages/info.html +0 -0
  184. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/messages.html +0 -0
  185. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/navigation.html +0 -0
  186. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/pagination_current_item.html +0 -0
  187. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/pagination_ellipsis.html +0 -0
  188. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/search.html +0 -0
  189. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/search_results.html +0 -0
  190. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/site_icon.html +0 -0
  191. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/site_logo.html +0 -0
  192. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/submit.html +0 -0
  193. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/tab_action.html +0 -0
  194. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/tab_list.html +0 -0
  195. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/theme_switch.html +0 -0
  196. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/userlinks.html +0 -0
  197. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/layouts/base.html +0 -0
  198. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/layouts/base_simple.html +0 -0
  199. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/clearable_file_input.html +0 -0
  200. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/clearable_file_input_small.html +0 -0
  201. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/date.html +0 -0
  202. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +0 -0
  203. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/radio.html +0 -0
  204. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/radio_option.html +0 -0
  205. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/range.html +0 -0
  206. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/related_widget_wrapper.html +0 -0
  207. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/split_datetime.html +0 -0
  208. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/split_datetime_vertical.html +0 -0
  209. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/split_money.html +0 -0
  210. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/textarea.html +0 -0
  211. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/textarea_expandable.html +0 -0
  212. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/time.html +0 -0
  213. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templatetags/__init__.py +0 -0
  214. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templatetags/unfold.py +0 -0
  215. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templatetags/unfold_list.py +0 -0
  216. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/typing.py +0 -0
  217. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/utils.py +0 -0
  218. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/views.py +0 -0
  219. {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/widgets.py +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
+
@@ -0,0 +1,48 @@
1
+ ![screenshot](https://github.com/user-attachments/assets/b5ec09b6-c8c7-454a-85af-1bba97593632)
2
+
3
+ ## Unfold Django Admin Theme
4
+
5
+ [![PyPI - Version](https://img.shields.io/pypi/v/django-unfold.svg?style=for-the-badge)](https://pypi.org/project/django-unfold/)
6
+ [![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)
7
+ ![Pre Commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white&style=for-the-badge)
8
+ ![Code Style - Ruff](https://img.shields.io/badge/code%20style-ruff-30173D.svg?style=for-the-badge)
9
+
10
+ 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.
11
+
12
+ - **Documentation:** Full docs are available at [unfoldadmin.com](https://unfoldadmin.com?utm_medium=github&utm_source=unfold).
13
+ - **Unfold:** Demo site is available at [unfoldadmin.com](https://unfoldadmin.com?utm_medium=github&utm_source=unfold).
14
+ - **Formula:** Repository with demo implementation at [github.com/unfoldadmin/formula](https://github.com/unfoldadmin/formula?utm_medium=github&utm_source=unfold).
15
+ - **Turbo:** Django & Next.js boilerplate implementing Unfold at [github.com/unfoldadmin/turbo](https://github.com/unfoldadmin/turbo?utm_medium=github&utm_source=unfold).
16
+ - **Discord:** Join the Unfold community on [Discord](https://discord.gg/9sQj9MEbNz).
17
+
18
+
19
+
20
+ ## Are you using Unfold and need help?
21
+
22
+ 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.
23
+
24
+ ## Features
25
+
26
+ - **Visual**: Provides a new user interface based on the Tailwind CSS framework.
27
+ - **Sidebar:** Simplifies the creation of sidebar navigation with icons, collapsibles, and more.
28
+ - **Dark mode:** Supports both light and dark mode versions.
29
+ - **Actions:** Offers multiple ways to define actions within different parts of the admin interface.
30
+ - **Filters:** Custom dropdowns, numeric, datetime, and text fields.
31
+ - **Dashboard:** Includes helpers for creating custom dashboard pages.
32
+ - **Components:** Reusable UI components such as cards, buttons, and charts.
33
+ - **WYSIWYG widget:** Built-in support for WYSIWYG (Trix).
34
+ - **Array widget:** Built-in widget for `django.contrib.postgres.fields.ArrayField`.
35
+ - **Inline tabs:** Groups inlines into tab navigation in the change form.
36
+ - **Model tabs:** Allows defining custom tab navigation for models.
37
+ - **Fieldset tabs:** Merges multiple fieldsets into tabs in the change form.
38
+ - **Sortable inlines:** Allows sorting inlines by dragging and dropping.
39
+ - **Environment label**: Distinguishes between environments by displaying a label.
40
+ - **Nonrelated inlines**: Displays nonrelated models as inlines in the change form.
41
+ - **Favicons**: Built-in support for configuring various site favicons.
42
+ - **Colors:** Allows customization of the default color scheme.
43
+ - **Changeform modes:** Displays fields in compressed mode in the change form.
44
+ - **Parallel admin**: Supports [running the default admin](https://unfoldadmin.com/blog/migrating-django-admin-unfold/?utm_medium=github&utm_source=unfold) alongside Unfold.
45
+ - **Third party packages:** Default support for multiple popular applications.
46
+ - **Configuration:** Most basic options can be changed in `settings.py`.
47
+ - **Dependencies:** Fully based on `django.contrib.admin`.
48
+ - **VS Code**: Project configuration and development container included.
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "django-unfold"
3
- version = "0.39.0"
3
+ version = "0.41.0"
4
4
  description = "Modern Django admin theme for seamless interface development"
5
5
  license = "MIT"
6
6
  readme = "README.md"
@@ -16,6 +16,7 @@ classifiers = [
16
16
  "Programming Language :: Python :: 3.10",
17
17
  "Programming Language :: Python :: 3.11",
18
18
  "Programming Language :: Python :: 3.12",
19
+ "Programming Language :: Python :: 3.13",
19
20
  "Operating System :: OS Independent",
20
21
  "Environment :: Web Environment",
21
22
  "Intended Audience :: Developers",
@@ -27,13 +28,13 @@ python = ">=3.8"
27
28
  django = ">=3.2"
28
29
 
29
30
  [tool.poetry.group.test.dependencies]
30
- pytest = "^7.3.1"
31
- pytest-django = "^4.5.2"
32
- tox = "^4.5.2"
31
+ pytest = "^8.3"
32
+ pytest-django = "^4.9"
33
+ tox = "^4.21"
33
34
 
34
35
 
35
36
  [tool.poetry.group.dev.dependencies]
36
- python-semantic-release = "^8.7.0"
37
+ python-semantic-release = "^8.7"
37
38
 
38
39
  [tool.ruff]
39
40
  fix = true
@@ -89,7 +90,7 @@ legacy_tox_ini = """
89
90
  [tox]
90
91
  isolated_build = true
91
92
  envlist =
92
- python{38,39,310,311,312}-django{32,41,42,50,51}
93
+ python{38,39,310,311,312,313}-django{32,41,42,50,51}
93
94
 
94
95
  [testenv]
95
96
  skip_install = true
@@ -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 %}
@@ -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 %}
@@ -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)
@@ -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: