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.
- django_unfold-0.41.0/PKG-INFO +74 -0
- django_unfold-0.41.0/README.md +48 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/pyproject.toml +7 -6
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/admin.py +7 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/forms.py +2 -2
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/templates/unfold/forms/array.html +2 -2
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +1 -1
- {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
- {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
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/unfold/guardian/user_form.html +3 -3
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/export.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/forms.py +7 -8
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/sites.py +12 -0
- django_unfold-0.41.0/src/unfold/static/admin/js/inlines.js +439 -0
- django_unfold-0.41.0/src/unfold/static/unfold/css/styles.css +1 -0
- django_unfold-0.41.0/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/material-symbols/styles.css +1 -2
- django_unfold-0.41.0/src/unfold/static/unfold/js/alpine.sort.js +1 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/app.js +36 -10
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/select2.init.js +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/styles.css +5 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/app_index.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/app_list.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/auth/user/change_password.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/base.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/change_form.html +1 -1
- django_unfold-0.41.0/src/unfold/templates/admin/change_list.html +128 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/delete_confirmation.html +4 -9
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/delete_selected_confirmation.html +4 -8
- django_unfold-0.41.0/src/unfold/templates/admin/edit_inline/stacked.html +96 -0
- django_unfold-0.41.0/src/unfold/templates/admin/edit_inline/tabular.html +178 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/login.html +2 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/object_history.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/submit_line.html +8 -8
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/registration/password_change_done.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/registration/password_change_form.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/change_list_filter.html +7 -9
- django_unfold-0.41.0/src/unfold/templates/unfold/components/button.html +4 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/card.html +1 -1
- django_unfold-0.41.0/src/unfold/templates/unfold/components/progress.html +21 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/separator.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/app_list.html +2 -2
- django_unfold-0.41.0/src/unfold/templates/unfold/helpers/delete_submit_line.html +11 -0
- django_unfold-0.41.0/src/unfold/templates/unfold/helpers/display_header.html +30 -0
- django_unfold-0.41.0/src/unfold/templates/unfold/helpers/field_readonly_value.html +1 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/fieldset_row.html +2 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/welcomemsg.html +1 -1
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/layouts/skeleton.html +1 -0
- django_unfold-0.41.0/src/unfold/templates/unfold/widgets/url.html +9 -0
- django_unfold-0.39.0/PKG-INFO +0 -70
- django_unfold-0.39.0/README.md +0 -45
- django_unfold-0.39.0/src/unfold/static/unfold/css/styles.css +0 -1
- django_unfold-0.39.0/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
- django_unfold-0.39.0/src/unfold/templates/admin/change_list.html +0 -118
- django_unfold-0.39.0/src/unfold/templates/admin/edit_inline/stacked.html +0 -94
- django_unfold-0.39.0/src/unfold/templates/admin/edit_inline/tabular.html +0 -169
- django_unfold-0.39.0/src/unfold/templates/unfold/components/button.html +0 -3
- django_unfold-0.39.0/src/unfold/templates/unfold/components/progress.html +0 -21
- django_unfold-0.39.0/src/unfold/templates/unfold/helpers/display_header.html +0 -25
- django_unfold-0.39.0/src/unfold/templates/unfold/helpers/field_readonly_value.html +0 -1
- django_unfold-0.39.0/src/unfold/templates/unfold/widgets/url.html +0 -7
- {django_unfold-0.39.0 → django_unfold-0.41.0}/LICENSE.md +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/__init__.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/apps.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/checks.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/__init__.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/__init__.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/admin.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/apps.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider.min.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/static/unfold/filters/js/wNumb.min.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_field.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/__init__.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/apps.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix.css +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.config.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/templates/unfold/forms/wysiwyg.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/forms/widgets.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/__init__.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/apps.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/change_form.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/field.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/guardian/templates/unfold/guardian/group_form.html +2 -2
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/__init__.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/apps.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/forms.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/base.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_form.html +0 -0
- {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
- {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
- {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
- {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
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_confirm.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_errors.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_form.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_preview.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_validation.html +0 -0
- {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
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/__init__.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/admin.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/apps.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/checks.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/inlines/forms.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/__init__.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/apps.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_list.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/contrib/simple_history/templates/simple_history/submit_line.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/dataclasses.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/decorators.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/exceptions.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/fields.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/settings.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/admin/js/admin/RelatedObjectLookups.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/css/simplebar.css +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/Inter-Bold.woff2 +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/Inter-Medium.woff2 +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/Inter-Regular.woff2 +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2 +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/fonts/inter/styles.css +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/alpine.anchor.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/alpine.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/alpine.persist.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/chart.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/htmx.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/static/unfold/js/simplebar.js +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/actions.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/auth/user/add_form.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/base_site.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/change_form_object_tools.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/change_list_object_tools.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/change_list_results.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/date_hierarchy.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/filter.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/includes/fieldset.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/includes/object_delete_summary.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/index.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/nav_sidebar.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/pagination.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/admin/search_form.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/auth/widgets/read_only_password_hash.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/registration/logged_out.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/chart/bar.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/chart/line.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/container.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/flex.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/icon.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/navigation.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/table.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/text.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/components/title.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/account_links.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/actions_row.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/add_link.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/app_list_default.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/attrs.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/boolean.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/breadcrumb_item.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/display_label.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/field.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/field_readonly.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/fieldsets_tabs.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/form_errors.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/form_label.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/header.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/help_text.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/history.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/label.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/messages/error.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/messages/errornote.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/messages/info.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/messages.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/navigation.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/pagination_current_item.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/pagination_ellipsis.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/search.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/search_results.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/site_icon.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/site_logo.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/submit.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/tab_action.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/tab_list.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/theme_switch.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/helpers/userlinks.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/layouts/base.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/layouts/base_simple.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/clearable_file_input.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/clearable_file_input_small.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/date.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/radio.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/radio_option.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/range.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/related_widget_wrapper.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/split_datetime.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/split_datetime_vertical.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/split_money.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/textarea.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/textarea_expandable.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templates/unfold/widgets/time.html +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templatetags/__init__.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templatetags/unfold.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/templatetags/unfold_list.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/typing.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/utils.py +0 -0
- {django_unfold-0.39.0 → django_unfold-0.41.0}/src/unfold/views.py +0 -0
- {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
|
+

|
27
|
+
|
28
|
+
## Unfold Django Admin Theme
|
29
|
+
|
30
|
+
[](https://pypi.org/project/django-unfold/)
|
31
|
+
[](https://github.com/unfoldadmin/django-unfold/actions?query=workflow%3Arelease)
|
32
|
+

|
33
|
+

|
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
|
+

|
2
|
+
|
3
|
+
## Unfold Django Admin Theme
|
4
|
+
|
5
|
+
[](https://pypi.org/project/django-unfold/)
|
6
|
+
[](https://github.com/unfoldadmin/django-unfold/actions?query=workflow%3Arelease)
|
7
|
+

|
8
|
+

|
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.
|
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 = "^
|
31
|
-
pytest-django = "^4.
|
32
|
-
tox = "^4.
|
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
|
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
|
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__(
|
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__(
|
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
|
-
|
115
|
+
user: User,
|
117
116
|
*args,
|
118
117
|
**kwargs,
|
119
118
|
) -> None:
|
120
|
-
super().__init__(
|
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__(
|
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:
|