django-unfold 0.53.0__tar.gz → 0.54.0__tar.gz
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.
- {django_unfold-0.53.0 → django_unfold-0.54.0}/PKG-INFO +1 -1
- {django_unfold-0.53.0 → django_unfold-0.54.0}/pyproject.toml +1 -1
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/admin/__init__.py +17 -0
- django_unfold-0.54.0/src/unfold/contrib/filters/admin/choice_filters.py +134 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/forms.py +41 -3
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +1 -1
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +1 -1
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/admin/js/inlines.js +23 -3
- django_unfold-0.54.0/src/unfold/static/unfold/css/styles.css +1 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/styles.css +2 -1
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/change_list.html +15 -13
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/change_list_results.html +1 -1
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/edit_inline/tabular.html +1 -2
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/chart/cohort.html +2 -2
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/change_list_filter.html +2 -2
- django_unfold-0.54.0/src/unfold/templates/unfold/helpers/change_list_filter_actions.html +33 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_field.html +10 -8
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/field.html +4 -2
- django_unfold-0.54.0/src/unfold/templates/unfold/helpers/form_label.html +7 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/tab_action.html +17 -2
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/radio_option.html +1 -1
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templatetags/unfold.py +11 -5
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/widgets.py +2 -0
- django_unfold-0.53.0/src/unfold/static/unfold/css/styles.css +0 -1
- django_unfold-0.53.0/src/unfold/templates/unfold/helpers/change_list_filter_actions.html +0 -31
- django_unfold-0.53.0/src/unfold/templates/unfold/helpers/form_label.html +0 -7
- {django_unfold-0.53.0 → django_unfold-0.54.0}/LICENSE.md +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/README.md +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/admin.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/apps.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/checks.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/components.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/admin/autocomplete_filters.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/admin/datetime_filters.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/admin/dropdown_filters.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/admin/mixins.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/admin/numeric_filters.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/admin/text_filters.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/apps.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider.min.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/static/unfold/filters/js/wNumb.min.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_field.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/forms/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/forms/apps.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix.css +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.config.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/forms/templates/unfold/forms/array.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/forms/templates/unfold/forms/wysiwyg.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/forms/widgets.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/guardian/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/guardian/apps.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/change_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/field.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/guardian/templates/unfold/guardian/group_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/guardian/templates/unfold/guardian/user_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/apps.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/forms.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/base.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/export.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/import.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_confirm.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_errors.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_preview.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_validation.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/inlines/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/inlines/admin.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/inlines/apps.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/inlines/checks.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/inlines/forms.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/simple_history/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/simple_history/apps.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_list.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/contrib/simple_history/templates/simple_history/submit_line.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/dataclasses.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/decorators.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/enums.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/exceptions.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/fields.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/forms.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/mixins/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/mixins/action_model_admin.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/mixins/base_model_admin.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/overrides.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/paginator.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/sections.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/settings.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/sites.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/admin/js/admin/RelatedObjectLookups.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/css/simplebar.css +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/fonts/inter/Inter-Bold.woff2 +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/fonts/inter/Inter-Medium.woff2 +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/fonts/inter/Inter-Regular.woff2 +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2 +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/fonts/inter/styles.css +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/fonts/material-symbols/styles.css +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/alpine.anchor.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/alpine.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/alpine.persist.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/alpine.resize.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/alpine.sort.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/app.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/chart.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/htmx.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/select2.init.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/static/unfold/js/simplebar.js +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/actions.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/app_index.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/app_list.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/auth/user/add_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/auth/user/change_password.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/base.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/base_site.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/change_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/change_form_object_tools.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/change_list_object_tools.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/date_hierarchy.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/delete_confirmation.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/delete_selected_confirmation.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/edit_inline/stacked.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/filter.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/includes/fieldset.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/includes/object_delete_summary.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/index.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/login.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/nav_sidebar.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/object_history.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/pagination.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/search_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/admin/submit_line.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/auth/widgets/read_only_password_hash.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/registration/logged_out.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/registration/password_change_done.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/registration/password_change_form.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/button.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/card.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/chart/bar.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/chart/line.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/container.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/flex.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/icon.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/navigation.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/progress.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/separator.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/table.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/text.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/title.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/components/tracker.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/account_links.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/actions_row.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/add_link.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/app_list.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/app_list_default.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/attrs.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/boolean.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/breadcrumb_item.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/change_list_actions.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/delete_submit_line.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/display_dropdown.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/display_header.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/display_label.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_delete.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_error.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_heading.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_row.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_title.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/empty_results.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/field_readonly.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/field_readonly_value.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/fieldset_row.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/fieldset_row_checkbox.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/fieldset_row_field.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/fieldsets_tabs.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/form_errors.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/header.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/header_back_button.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/help_text.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/history.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/label.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/language_switch.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/messages/debug.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/messages/error.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/messages/errornote.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/messages/info.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/messages/success.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/messages/warning.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/messages.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/navigation.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/navigation_header.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/pagination_current_item.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/pagination_default.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/pagination_ellipsis.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/pagination_infinite.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/search.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/search_results.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/site_branding.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/site_dropdown.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/site_icon.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/site_logo.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/submit.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/tab_actions.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/tab_items.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/tab_list.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/theme_switch.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/userlinks.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/helpers/welcomemsg.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/layouts/base.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/layouts/base_simple.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/layouts/skeleton.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/templatetags/preserve_changelist_filters.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/clearable_file_input.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/clearable_file_input_small.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/date.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/radio.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/range.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/related_widget_wrapper.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/split_datetime.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/split_datetime_vertical.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/split_money.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/textarea.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/time.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templates/unfold/widgets/url.html +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templatetags/__init__.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/templatetags/unfold_list.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/typing.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/utils.py +0 -0
- {django_unfold-0.53.0 → django_unfold-0.54.0}/src/unfold/views.py +0 -0
@@ -2,6 +2,15 @@ from unfold.contrib.filters.admin.autocomplete_filters import (
|
|
2
2
|
AutocompleteSelectFilter,
|
3
3
|
AutocompleteSelectMultipleFilter,
|
4
4
|
)
|
5
|
+
from unfold.contrib.filters.admin.choice_filters import (
|
6
|
+
AllValuesCheckboxFilter,
|
7
|
+
BooleanRadioFilter,
|
8
|
+
CheckboxFilter,
|
9
|
+
ChoicesCheckboxFilter,
|
10
|
+
ChoicesRadioFilter,
|
11
|
+
RadioFilter,
|
12
|
+
RelatedCheckboxFilter,
|
13
|
+
)
|
5
14
|
from unfold.contrib.filters.admin.datetime_filters import (
|
6
15
|
RangeDateFilter,
|
7
16
|
RangeDateTimeFilter,
|
@@ -23,12 +32,20 @@ from unfold.contrib.filters.admin.numeric_filters import (
|
|
23
32
|
from unfold.contrib.filters.admin.text_filters import FieldTextFilter, TextFilter
|
24
33
|
|
25
34
|
__all__ = [
|
35
|
+
"AllValuesCheckboxFilter",
|
36
|
+
"BooleanRadioFilter",
|
37
|
+
"CheckboxFilter",
|
38
|
+
"ChoicesCheckboxFilter",
|
39
|
+
"ChoicesRadioFilter",
|
40
|
+
"MultipleRelatedCheckboxFilter",
|
41
|
+
"RadioFilter",
|
26
42
|
"ChoicesDropdownFilter",
|
27
43
|
"MultipleChoicesDropdownFilter",
|
28
44
|
"DropdownFilter",
|
29
45
|
"RelatedDropdownFilter",
|
30
46
|
"MultipleDropdownFilter",
|
31
47
|
"MultipleRelatedDropdownFilter",
|
48
|
+
"RelatedCheckboxFilter",
|
32
49
|
"FieldTextFilter",
|
33
50
|
"TextFilter",
|
34
51
|
"RangeDateFilter",
|
@@ -0,0 +1,134 @@
|
|
1
|
+
from collections.abc import Generator
|
2
|
+
from typing import Any
|
3
|
+
|
4
|
+
from django.contrib import admin
|
5
|
+
from django.contrib.admin.views.main import ChangeList
|
6
|
+
from django.core.validators import EMPTY_VALUES
|
7
|
+
from django.db.models import QuerySet
|
8
|
+
from django.http import HttpRequest
|
9
|
+
from django.utils.translation import gettext_lazy as _
|
10
|
+
|
11
|
+
from unfold.contrib.filters.admin.mixins import MultiValueMixin, ValueMixin
|
12
|
+
from unfold.contrib.filters.forms import CheckboxForm, HorizontalRadioForm, RadioForm
|
13
|
+
|
14
|
+
|
15
|
+
class RadioFilter(admin.SimpleListFilter):
|
16
|
+
template = "unfold/filters/filters_field.html"
|
17
|
+
form_class = RadioForm
|
18
|
+
all_option = ["", _("All")]
|
19
|
+
|
20
|
+
def choices(self, changelist: ChangeList) -> tuple[dict[str, Any], ...]:
|
21
|
+
if self.all_option:
|
22
|
+
choices = [self.all_option, *self.lookup_choices]
|
23
|
+
else:
|
24
|
+
choices = self.lookup_choices
|
25
|
+
|
26
|
+
return (
|
27
|
+
{
|
28
|
+
"form": self.form_class(
|
29
|
+
label=_(" By %(filter_title)s ") % {"filter_title": self.title},
|
30
|
+
name=self.parameter_name,
|
31
|
+
choices=choices,
|
32
|
+
data={self.parameter_name: self.value()},
|
33
|
+
),
|
34
|
+
},
|
35
|
+
)
|
36
|
+
|
37
|
+
|
38
|
+
class CheckboxFilter(RadioFilter):
|
39
|
+
form_class = CheckboxForm
|
40
|
+
all_option = None
|
41
|
+
|
42
|
+
|
43
|
+
class ChoicesMixin:
|
44
|
+
template = "unfold/filters/filters_field.html"
|
45
|
+
|
46
|
+
def choices(self, changelist: ChangeList) -> Generator[dict[str, Any], None, None]:
|
47
|
+
if self.all_option:
|
48
|
+
choices = [self.all_option, *self.field.flatchoices]
|
49
|
+
else:
|
50
|
+
choices = self.field.flatchoices
|
51
|
+
|
52
|
+
yield {
|
53
|
+
"form": self.form_class(
|
54
|
+
label=_(" By %(filter_title)s ") % {"filter_title": self.title},
|
55
|
+
name=self.lookup_kwarg,
|
56
|
+
choices=choices,
|
57
|
+
data={self.lookup_kwarg: self.value()},
|
58
|
+
),
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
class ChoicesRadioFilter(ValueMixin, ChoicesMixin, admin.ChoicesFieldListFilter):
|
63
|
+
form_class = RadioForm
|
64
|
+
all_option = ["", _("All")]
|
65
|
+
|
66
|
+
|
67
|
+
class ChoicesCheckboxFilter(ValueMixin, ChoicesMixin, admin.ChoicesFieldListFilter):
|
68
|
+
form_class = CheckboxForm
|
69
|
+
all_option = None
|
70
|
+
|
71
|
+
|
72
|
+
class BooleanRadioFilter(ValueMixin, admin.BooleanFieldListFilter):
|
73
|
+
template = "unfold/filters/filters_field.html"
|
74
|
+
form_class = HorizontalRadioForm
|
75
|
+
all_option = ["", _("All")]
|
76
|
+
|
77
|
+
def choices(self, changelist: ChangeList) -> Generator[dict[str, Any], None, None]:
|
78
|
+
choices = [
|
79
|
+
self.all_option,
|
80
|
+
*[
|
81
|
+
("1", _("Yes")),
|
82
|
+
("0", _("No")),
|
83
|
+
],
|
84
|
+
]
|
85
|
+
|
86
|
+
yield {
|
87
|
+
"form": self.form_class(
|
88
|
+
label=_(" By %(filter_title)s ") % {"filter_title": self.title},
|
89
|
+
name=self.lookup_kwarg,
|
90
|
+
choices=choices,
|
91
|
+
data={self.lookup_kwarg: self.value()},
|
92
|
+
),
|
93
|
+
}
|
94
|
+
|
95
|
+
|
96
|
+
class RelatedCheckboxFilter(MultiValueMixin, admin.RelatedFieldListFilter):
|
97
|
+
template = "unfold/filters/filters_field.html"
|
98
|
+
form_class = CheckboxForm
|
99
|
+
|
100
|
+
def queryset(self, request: HttpRequest, queryset: QuerySet) -> QuerySet:
|
101
|
+
if self.value() not in EMPTY_VALUES:
|
102
|
+
return super().queryset(request, queryset)
|
103
|
+
|
104
|
+
return queryset
|
105
|
+
|
106
|
+
def choices(self, changelist: ChangeList) -> Generator[dict[str, Any], None, None]:
|
107
|
+
yield {
|
108
|
+
"form": self.form_class(
|
109
|
+
label=_(" By %(filter_title)s ") % {"filter_title": self.title},
|
110
|
+
name=self.lookup_kwarg,
|
111
|
+
choices=self.lookup_choices,
|
112
|
+
data={self.lookup_kwarg: self.value()},
|
113
|
+
),
|
114
|
+
}
|
115
|
+
|
116
|
+
|
117
|
+
class AllValuesCheckboxFilter(MultiValueMixin, admin.AllValuesFieldListFilter):
|
118
|
+
template = "unfold/filters/filters_field.html"
|
119
|
+
form_class = CheckboxForm
|
120
|
+
|
121
|
+
def choices(self, changelist: ChangeList) -> Generator[dict[str, Any], None, None]:
|
122
|
+
choices = [[i, val] for i, val in enumerate(self.lookup_choices)]
|
123
|
+
|
124
|
+
if len(choices) == 0:
|
125
|
+
return
|
126
|
+
|
127
|
+
yield {
|
128
|
+
"form": self.form_class(
|
129
|
+
label=_(" By %(filter_title)s ") % {"filter_title": self.title},
|
130
|
+
name=self.lookup_kwarg,
|
131
|
+
choices=[[i, val] for i, val in enumerate(self.lookup_choices)],
|
132
|
+
data={self.lookup_kwarg: self.value()},
|
133
|
+
),
|
134
|
+
}
|
@@ -1,14 +1,20 @@
|
|
1
1
|
from django import forms
|
2
|
+
from django.contrib.admin.options import HORIZONTAL
|
2
3
|
from django.contrib.admin.widgets import AutocompleteSelect, AutocompleteSelectMultiple
|
3
4
|
from django.db.models import Field as ModelField
|
4
|
-
from django.forms import
|
5
|
+
from django.forms import (
|
6
|
+
ChoiceField,
|
7
|
+
ModelMultipleChoiceField,
|
8
|
+
MultipleChoiceField,
|
9
|
+
)
|
5
10
|
from django.http import HttpRequest
|
6
11
|
from django.utils.translation import gettext_lazy as _
|
7
12
|
|
8
13
|
from unfold.admin import ModelAdmin
|
9
|
-
|
10
|
-
from ...widgets import (
|
14
|
+
from unfold.widgets import (
|
11
15
|
INPUT_CLASSES,
|
16
|
+
UnfoldAdminCheckboxSelectMultiple,
|
17
|
+
UnfoldAdminRadioSelectWidget,
|
12
18
|
UnfoldAdminSelectMultipleWidget,
|
13
19
|
UnfoldAdminSelectWidget,
|
14
20
|
UnfoldAdminSplitDateTimeVerticalWidget,
|
@@ -71,6 +77,38 @@ class AutocompleteDropdownForm(forms.Form):
|
|
71
77
|
}
|
72
78
|
|
73
79
|
|
80
|
+
class CheckboxForm(forms.Form):
|
81
|
+
field = MultipleChoiceField
|
82
|
+
widget = UnfoldAdminCheckboxSelectMultiple
|
83
|
+
|
84
|
+
def __init__(
|
85
|
+
self,
|
86
|
+
name: str,
|
87
|
+
label: str,
|
88
|
+
choices: tuple,
|
89
|
+
*args,
|
90
|
+
**kwargs,
|
91
|
+
) -> None:
|
92
|
+
super().__init__(*args, **kwargs)
|
93
|
+
|
94
|
+
self.fields[name] = self.field(
|
95
|
+
label=label,
|
96
|
+
required=False,
|
97
|
+
choices=choices,
|
98
|
+
widget=self.widget,
|
99
|
+
)
|
100
|
+
|
101
|
+
|
102
|
+
class RadioForm(CheckboxForm):
|
103
|
+
field = ChoiceField
|
104
|
+
widget = UnfoldAdminRadioSelectWidget
|
105
|
+
|
106
|
+
|
107
|
+
class HorizontalRadioForm(RadioForm):
|
108
|
+
horizontal = True
|
109
|
+
widget = UnfoldAdminRadioSelectWidget(radio_style=HORIZONTAL)
|
110
|
+
|
111
|
+
|
74
112
|
class DropdownForm(forms.Form):
|
75
113
|
widget = UnfoldAdminSelectWidget(
|
76
114
|
attrs={
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div class="flex flex-col">
|
5
5
|
<h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
|
-
<div class="flex flex-col space-y-
|
7
|
+
<div class="flex flex-col space-y-2">
|
8
8
|
{% for field in choice.form %}
|
9
9
|
<div class="flex flex-row flex-wrap group relative{% if field.errors %} errors{% endif %}">
|
10
10
|
{{ field }}
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div class="flex flex-col">
|
5
5
|
<h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
|
-
<div class="flex flex-col space-y-
|
7
|
+
<div class="flex flex-col space-y-2">
|
8
8
|
{% for field in choice.form %}
|
9
9
|
<div class="flex flex-row flex-wrap group relative{% if field.errors %} errors{% endif %}">
|
10
10
|
{{ field }}
|
@@ -96,12 +96,23 @@
|
|
96
96
|
.removeClass(options.emptyCssClass)
|
97
97
|
.addClass(options.formCssClass)
|
98
98
|
.attr("id", options.prefix + "-" + nextIndex);
|
99
|
+
|
99
100
|
addInlineDeleteButton(row);
|
100
101
|
row.find("*").each(function () {
|
101
102
|
updateElementIndex(this, options.prefix, totalForms.val());
|
102
103
|
});
|
104
|
+
|
103
105
|
// Insert the new form when it has been fully edited.
|
104
|
-
|
106
|
+
// !CHANGED from original
|
107
|
+
if ($(template).parent().is("tbody")) {
|
108
|
+
row
|
109
|
+
.wrap('<tbody class="template"></tbody>')
|
110
|
+
.parent()
|
111
|
+
.insertBefore($(template).parent());
|
112
|
+
} else {
|
113
|
+
row.insertBefore($(template));
|
114
|
+
}
|
115
|
+
|
105
116
|
// Update number of total forms.
|
106
117
|
$(totalForms).val(parseInt(totalForms.val(), 10) + 1);
|
107
118
|
nextIndex += 1;
|
@@ -183,7 +194,13 @@
|
|
183
194
|
if (prevRow.length && prevRow.hasClass("row-form-errors")) {
|
184
195
|
prevRow.remove();
|
185
196
|
}
|
186
|
-
|
197
|
+
|
198
|
+
// !CHANGED from original
|
199
|
+
if (deleteButton.parent().parent().parent().parent().is("tbody")) {
|
200
|
+
row.parent().remove();
|
201
|
+
} else {
|
202
|
+
row.remove();
|
203
|
+
}
|
187
204
|
nextIndex -= 1;
|
188
205
|
// Pass the deleted form to the post-delete callback, if provided.
|
189
206
|
if (options.removed) {
|
@@ -245,8 +262,11 @@
|
|
245
262
|
}
|
246
263
|
|
247
264
|
// Create the delete buttons for all unsaved inlines:
|
265
|
+
// !CHANGED from original, added parent() and used find() instead of filter()
|
248
266
|
$this
|
249
|
-
.
|
267
|
+
.parent()
|
268
|
+
.parent()
|
269
|
+
.find(
|
250
270
|
"." +
|
251
271
|
options.formCssClass +
|
252
272
|
":not(.has_original):not(." +
|