django-unfold 0.32.0__tar.gz → 0.34.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {django_unfold-0.32.0 → django_unfold-0.34.0}/PKG-INFO +96 -37
- {django_unfold-0.32.0 → django_unfold-0.34.0}/README.md +95 -36
- {django_unfold-0.32.0 → django_unfold-0.34.0}/pyproject.toml +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/admin.py +5 -9
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/guardian/templates/unfold/guardian/group_form.html +10 -10
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/guardian/templates/unfold/guardian/user_form.html +10 -10
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_confirm.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_errors.html +3 -3
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_preview.html +6 -6
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_validation.html +8 -8
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_list.html +18 -18
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/fields.py +2 -2
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/forms.py +2 -1
- django_unfold-0.34.0/src/unfold/static/unfold/css/styles.css +1 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/styles.css +6 -10
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/actions.html +14 -12
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/app_list.html +3 -5
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/change_list.html +4 -4
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/change_list_results.html +4 -4
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/delete_confirmation.html +9 -9
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/delete_selected_confirmation.html +9 -9
- django_unfold-0.34.0/src/unfold/templates/admin/edit_inline/stacked.html +92 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/edit_inline/tabular.html +37 -29
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/filter.html +5 -5
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/includes/object_delete_summary.html +2 -2
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/object_history.html +9 -9
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/pagination.html +3 -3
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/submit_line.html +7 -7
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/change_list_filter.html +3 -3
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/progress.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/table.html +4 -4
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/title.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/account_links.html +2 -2
- django_unfold-0.34.0/src/unfold/templates/unfold/helpers/actions_row.html +21 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/add_link.html +2 -2
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/app_list.html +7 -7
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/app_list_default.html +7 -7
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/breadcrumb_item.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/display_header.html +4 -2
- django_unfold-0.34.0/src/unfold/templates/unfold/helpers/field_readonly_value.html +1 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/fieldset_row.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/fieldsets_tabs.html +1 -1
- django_unfold-0.34.0/src/unfold/templates/unfold/helpers/help_text.html +5 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/history.html +3 -3
- django_unfold-0.34.0/src/unfold/templates/unfold/helpers/label.html +16 -0
- django_unfold-0.34.0/src/unfold/templates/unfold/helpers/messages.html +20 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/navigation.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/search_results.html +2 -2
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/site_icon.html +1 -1
- django_unfold-0.34.0/src/unfold/templates/unfold/helpers/tab_action.html +5 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/tab_list.html +9 -5
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/theme_switch.html +2 -2
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/welcomemsg.html +5 -3
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/layouts/skeleton.html +2 -2
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/clearable_file_input.html +2 -2
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/clearable_file_input_small.html +2 -2
- django_unfold-0.34.0/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +19 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/radio_option.html +1 -1
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/split_datetime.html +2 -2
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/split_datetime_vertical.html +2 -2
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templatetags/unfold_list.py +6 -7
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/widgets.py +10 -5
- django_unfold-0.32.0/src/unfold/static/unfold/css/styles.css +0 -1
- django_unfold-0.32.0/src/unfold/templates/admin/edit_inline/stacked.html +0 -78
- django_unfold-0.32.0/src/unfold/templates/unfold/helpers/actions_row.html +0 -19
- django_unfold-0.32.0/src/unfold/templates/unfold/helpers/field_readonly_value.html +0 -1
- django_unfold-0.32.0/src/unfold/templates/unfold/helpers/help_text.html +0 -5
- django_unfold-0.32.0/src/unfold/templates/unfold/helpers/label.html +0 -16
- django_unfold-0.32.0/src/unfold/templates/unfold/helpers/messages.html +0 -9
- django_unfold-0.32.0/src/unfold/templates/unfold/helpers/tab_action.html +0 -5
- django_unfold-0.32.0/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +0 -15
- {django_unfold-0.32.0 → django_unfold-0.34.0}/LICENSE.md +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/__init__.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/apps.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/checks.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/__init__.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/__init__.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/admin.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/apps.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/forms.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider.min.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/static/unfold/filters/js/wNumb.min.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_field.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/forms/__init__.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/forms/apps.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix.css +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.config.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/forms/templates/unfold/forms/array.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/forms/templates/unfold/forms/wysiwyg.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/forms/widgets.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/guardian/__init__.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/guardian/apps.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/change_form.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/field.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/__init__.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/apps.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/forms.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/base.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_form.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/export.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/import.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_form.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/inlines/__init__.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/inlines/admin.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/inlines/apps.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/inlines/checks.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/inlines/forms.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/simple_history/__init__.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/simple_history/apps.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/contrib/simple_history/templates/simple_history/submit_line.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/dataclasses.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/decorators.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/exceptions.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/settings.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/sites.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/css/simplebar.css +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/fonts/inter/Inter-Bold.woff2 +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/fonts/inter/Inter-Medium.woff2 +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/fonts/inter/Inter-Regular.woff2 +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2 +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/fonts/inter/styles.css +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/fonts/material-symbols/styles.css +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/js/alpine.anchor.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/js/alpine.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/js/alpine.persist.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/js/app.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/js/chart.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/js/htmx.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/static/unfold/js/simplebar.js +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/app_index.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/auth/user/add_form.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/auth/user/change_password.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/base.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/base_site.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/change_form.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/change_form_object_tools.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/change_list_object_tools.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/date_hierarchy.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/includes/fieldset.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/index.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/login.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/nav_sidebar.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/admin/search_form.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/auth/widgets/read_only_password_hash.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/registration/logged_out.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/registration/password_change_done.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/registration/password_change_form.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/button.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/card.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/chart/bar.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/chart/line.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/container.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/flex.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/icon.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/navigation.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/separator.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/components/text.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/attrs.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/boolean.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/display_label.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/field.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/field_readonly.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/form_errors.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/form_label.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/header.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/messages/error.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/messages/errornote.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/messages/info.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/pagination_current_item.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/pagination_ellipsis.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/search.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/site_logo.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/submit.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/helpers/userlinks.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/layouts/base.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/layouts/base_simple.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/date.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/radio.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/range.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/related_widget_wrapper.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/split_money.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/textarea.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/textarea_expandable.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templates/unfold/widgets/time.html +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templatetags/__init__.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/templatetags/unfold.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/typing.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/utils.py +0 -0
- {django_unfold-0.32.0 → django_unfold-0.34.0}/src/unfold/views.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: django-unfold
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.34.0
|
4
4
|
Summary: Modern Django admin theme for seamless interface development
|
5
5
|
Home-page: https://unfoldadmin.com
|
6
6
|
License: MIT
|
@@ -85,9 +85,13 @@ Did you decide to start using Unfold but you don't have time to make the switch
|
|
85
85
|
- [Numeric filters](#numeric-filters)
|
86
86
|
- [Date/time filters](#datetime-filters)
|
87
87
|
- [Custom admin pages](#custom-admin-pages)
|
88
|
-
- [Nonrelated inlines](#nonrelated-inlines)
|
89
88
|
- [Display decorator](#display-decorator)
|
90
89
|
- [Change form tabs](#change-form-tabs)
|
90
|
+
- [Inlines](#inlines)
|
91
|
+
- [Custom title](#custom-title)
|
92
|
+
- [Hide title row](#hide-title-row)
|
93
|
+
- [Display as tabs](#display-as-tabs)
|
94
|
+
- [Nonrelated inlines](#nonrelated-inlines)
|
91
95
|
- [Third party packages](#third-party-packages)
|
92
96
|
- [django-celery-beat](#django-celery-beat)
|
93
97
|
- [django-guardian](#django-guardian)
|
@@ -107,6 +111,7 @@ Did you decide to start using Unfold but you don't have time to make the switch
|
|
107
111
|
- [Pre-commit](#pre-commit)
|
108
112
|
- [Poetry configuration](#poetry-configuration)
|
109
113
|
- [Compiling Tailwind](#compiling-tailwind)
|
114
|
+
- [Design system](#design-system)
|
110
115
|
- [Using VS Code with containers](#using-vs-code-with-containers)
|
111
116
|
- [Development server](#development-server)
|
112
117
|
- [Compiling Tailwind in devcontainer](#compiling-tailwind-in-devcontainer)
|
@@ -370,6 +375,9 @@ class CustomAdminClass(ModelAdmin):
|
|
370
375
|
# Position horizontal scrollbar in changelist at the top
|
371
376
|
list_horizontal_scrollbar_top = False
|
372
377
|
|
378
|
+
# Dsable select all action in changelist
|
379
|
+
list_disable_select_all = False
|
380
|
+
|
373
381
|
# Custom actions
|
374
382
|
actions_list = [] # Displayed above the results list
|
375
383
|
actions_row = [] # Displayed in a table row in results list
|
@@ -775,41 +783,6 @@ The template is straightforward, extend from `unfold/layouts/base.html` and the
|
|
775
783
|
{% endblock %}
|
776
784
|
```
|
777
785
|
|
778
|
-
## Nonrelated inlines
|
779
|
-
|
780
|
-
To display inlines which are not related (no foreign key pointing at the main model) to the model instance in changeform, you can use nonrelated inlines which are included in `unfold.contrib.inlines` module. Make sure this module is included in `INSTALLED_APPS` in settings.py.
|
781
|
-
|
782
|
-
```python
|
783
|
-
from django.contrib.auth.models import User
|
784
|
-
from unfold.admin import ModelAdmin
|
785
|
-
from unfold.contrib.inlines.admin import NonrelatedTabularInline
|
786
|
-
from .models import OtherModel
|
787
|
-
|
788
|
-
class OtherNonrelatedInline(NonrelatedTabularInline): # NonrelatedStackedInline is available as well
|
789
|
-
model = OtherModel
|
790
|
-
fields = ["field1", "field2"] # Ignore property to display all fields
|
791
|
-
|
792
|
-
def get_form_queryset(self, obj):
|
793
|
-
"""
|
794
|
-
Gets all nonrelated objects needed for inlines. Method must be implemented.
|
795
|
-
"""
|
796
|
-
return self.model.objects.all()
|
797
|
-
|
798
|
-
def save_new_instance(self, parent, instance):
|
799
|
-
"""
|
800
|
-
Extra save method which can for example update inline instances based on current
|
801
|
-
main model object. Method must be implemented.
|
802
|
-
"""
|
803
|
-
pass
|
804
|
-
|
805
|
-
|
806
|
-
@admin.register(User)
|
807
|
-
class UserAdmin(ModelAdmin):
|
808
|
-
inlines = [OtherNonrelatedInline]
|
809
|
-
```
|
810
|
-
|
811
|
-
**NOTE:** credit for this functionality goes to [django-nonrelated-inlines](https://github.com/bhomnick/django-nonrelated-inlines)
|
812
|
-
|
813
786
|
## Display decorator
|
814
787
|
|
815
788
|
Unfold introduces it's own `unfold.decorators.display` decorator. By default it has exactly same behavior as native `django.contrib.admin.decorators.display` but it adds same customizations which helps to extends default logic.
|
@@ -936,6 +909,44 @@ class MyModelAdmin(ModelAdmin):
|
|
936
909
|
)
|
937
910
|
```
|
938
911
|
|
912
|
+
## Inlines
|
913
|
+
|
914
|
+
### Custom title
|
915
|
+
|
916
|
+
By default, the title available for each inline row is coming from the `__str__` implementation of the model. Unfold allows you to override this title by implementing `get_inline_title` on the model which can return your own custom title just for the inline.
|
917
|
+
|
918
|
+
```python
|
919
|
+
from unfold.admin import TabularInline
|
920
|
+
|
921
|
+
|
922
|
+
class User(models.Model):
|
923
|
+
# fiels, meta ...
|
924
|
+
|
925
|
+
def get_inline_title(self):
|
926
|
+
return "Custom title"
|
927
|
+
|
928
|
+
|
929
|
+
class MyInline(TabularInline):
|
930
|
+
model = User
|
931
|
+
```
|
932
|
+
|
933
|
+
### Hide title row
|
934
|
+
|
935
|
+
By applying `hide_title` attribute set to `True`, it is possible to hide the title row which is available for `StackedInline` or `TabularInline`. For `StackedInline` it is required to have disabled delete permission `can_delete` to be able to hide the title row, because the checkbox with the delete action is inside this title.
|
936
|
+
|
937
|
+
```python
|
938
|
+
# admin.py
|
939
|
+
|
940
|
+
from unfold.admin import TabularInline
|
941
|
+
|
942
|
+
|
943
|
+
class MyInline(TabularInline):
|
944
|
+
model = User
|
945
|
+
hide_title = True
|
946
|
+
```
|
947
|
+
|
948
|
+
### Display as tabs
|
949
|
+
|
939
950
|
Inlines can be grouped into tab navigation by specifying `tab` attribute in the inline class.
|
940
951
|
|
941
952
|
```python
|
@@ -949,6 +960,42 @@ class MyInline(TabularInline):
|
|
949
960
|
tab = True
|
950
961
|
```
|
951
962
|
|
963
|
+
### Nonrelated inlines
|
964
|
+
|
965
|
+
To display inlines which are not related (no foreign key pointing at the main model) to the model instance in changeform, you can use nonrelated inlines which are included in `unfold.contrib.inlines` module. Make sure this module is included in `INSTALLED_APPS` in settings.py.
|
966
|
+
|
967
|
+
```python
|
968
|
+
from django.contrib.auth.models import User
|
969
|
+
from unfold.admin import ModelAdmin
|
970
|
+
from unfold.contrib.inlines.admin import NonrelatedTabularInline
|
971
|
+
from .models import OtherModel
|
972
|
+
|
973
|
+
class OtherNonrelatedInline(NonrelatedTabularInline): # NonrelatedStackedInline is available as well
|
974
|
+
model = OtherModel
|
975
|
+
fields = ["field1", "field2"] # Ignore property to display all fields
|
976
|
+
|
977
|
+
def get_form_queryset(self, obj):
|
978
|
+
"""
|
979
|
+
Gets all nonrelated objects needed for inlines. Method must be implemented.
|
980
|
+
"""
|
981
|
+
return self.model.objects.all()
|
982
|
+
|
983
|
+
def save_new_instance(self, parent, instance):
|
984
|
+
"""
|
985
|
+
Extra save method which can for example update inline instances based on current
|
986
|
+
main model object. Method must be implemented.
|
987
|
+
"""
|
988
|
+
pass
|
989
|
+
|
990
|
+
|
991
|
+
@admin.register(User)
|
992
|
+
class UserAdmin(ModelAdmin):
|
993
|
+
inlines = [OtherNonrelatedInline]
|
994
|
+
```
|
995
|
+
|
996
|
+
**NOTE:** credit for this functionality goes to [django-nonrelated-inlines](https://github.com/bhomnick/django-nonrelated-inlines)
|
997
|
+
|
998
|
+
|
952
999
|
## Third party packages
|
953
1000
|
|
954
1001
|
### django-celery-beat
|
@@ -1359,6 +1406,17 @@ Some components like datepickers, calendars or selectors in admin was not possib
|
|
1359
1406
|
|
1360
1407
|
**Note:** most of the custom styles located in style.css are created via `@apply some-tailwind-class;` as is not possible to manually add CSS class to element which are for example created via jQuery.
|
1361
1408
|
|
1409
|
+
|
1410
|
+
### Design system
|
1411
|
+
|
1412
|
+
| Component | Classes |
|
1413
|
+
| --------------------------------- | ------------------------------------------------------ |
|
1414
|
+
| Regular text | text-gray-600 dark:text-gray-300 |
|
1415
|
+
| Hover regular text | text-gray-700 dark:text-gray-200 |
|
1416
|
+
| Headings | font-semibold text-gray-900 dark:text-gray-100 |
|
1417
|
+
| Icon | text-gray-400 dark:text-gray-500 |
|
1418
|
+
| Hover icon | hover:text-gray-500 dark:hover:text-gray-400 |
|
1419
|
+
|
1362
1420
|
### Using VS Code with containers
|
1363
1421
|
|
1364
1422
|
Unfold already contains prepared support for VS Code development. After cloning the project locally, open the main folder in VS Code (in terminal `code .`). Immediately, you would see a message from VS Code **Folder contains a Dev Container configuration file. Reopen folder to develop in a container** which will inform you that the support for containers is prepared. Confirm the message by clicking on **Reopen in Container**. If the message is not there, you can still manually open the project in a container by running the command **Dev Containers: Reopen in Container**.
|
@@ -1381,4 +1439,5 @@ The container has already a node preinstalled so it is possible to compile a new
|
|
1381
1439
|
- [Material Icons](https://fonts.google.com/icons) - Icons from Google Fonts
|
1382
1440
|
- [Trix](https://trix-editor.org/) - WYSIWYG editor
|
1383
1441
|
- [Alpine.js](https://alpinejs.dev/) - JavaScript interactions
|
1442
|
+
- [Chart.js](https://github.com/chartjs/Chart.js/) - Chart components
|
1384
1443
|
|
@@ -61,9 +61,13 @@ Did you decide to start using Unfold but you don't have time to make the switch
|
|
61
61
|
- [Numeric filters](#numeric-filters)
|
62
62
|
- [Date/time filters](#datetime-filters)
|
63
63
|
- [Custom admin pages](#custom-admin-pages)
|
64
|
-
- [Nonrelated inlines](#nonrelated-inlines)
|
65
64
|
- [Display decorator](#display-decorator)
|
66
65
|
- [Change form tabs](#change-form-tabs)
|
66
|
+
- [Inlines](#inlines)
|
67
|
+
- [Custom title](#custom-title)
|
68
|
+
- [Hide title row](#hide-title-row)
|
69
|
+
- [Display as tabs](#display-as-tabs)
|
70
|
+
- [Nonrelated inlines](#nonrelated-inlines)
|
67
71
|
- [Third party packages](#third-party-packages)
|
68
72
|
- [django-celery-beat](#django-celery-beat)
|
69
73
|
- [django-guardian](#django-guardian)
|
@@ -83,6 +87,7 @@ Did you decide to start using Unfold but you don't have time to make the switch
|
|
83
87
|
- [Pre-commit](#pre-commit)
|
84
88
|
- [Poetry configuration](#poetry-configuration)
|
85
89
|
- [Compiling Tailwind](#compiling-tailwind)
|
90
|
+
- [Design system](#design-system)
|
86
91
|
- [Using VS Code with containers](#using-vs-code-with-containers)
|
87
92
|
- [Development server](#development-server)
|
88
93
|
- [Compiling Tailwind in devcontainer](#compiling-tailwind-in-devcontainer)
|
@@ -346,6 +351,9 @@ class CustomAdminClass(ModelAdmin):
|
|
346
351
|
# Position horizontal scrollbar in changelist at the top
|
347
352
|
list_horizontal_scrollbar_top = False
|
348
353
|
|
354
|
+
# Dsable select all action in changelist
|
355
|
+
list_disable_select_all = False
|
356
|
+
|
349
357
|
# Custom actions
|
350
358
|
actions_list = [] # Displayed above the results list
|
351
359
|
actions_row = [] # Displayed in a table row in results list
|
@@ -751,41 +759,6 @@ The template is straightforward, extend from `unfold/layouts/base.html` and the
|
|
751
759
|
{% endblock %}
|
752
760
|
```
|
753
761
|
|
754
|
-
## Nonrelated inlines
|
755
|
-
|
756
|
-
To display inlines which are not related (no foreign key pointing at the main model) to the model instance in changeform, you can use nonrelated inlines which are included in `unfold.contrib.inlines` module. Make sure this module is included in `INSTALLED_APPS` in settings.py.
|
757
|
-
|
758
|
-
```python
|
759
|
-
from django.contrib.auth.models import User
|
760
|
-
from unfold.admin import ModelAdmin
|
761
|
-
from unfold.contrib.inlines.admin import NonrelatedTabularInline
|
762
|
-
from .models import OtherModel
|
763
|
-
|
764
|
-
class OtherNonrelatedInline(NonrelatedTabularInline): # NonrelatedStackedInline is available as well
|
765
|
-
model = OtherModel
|
766
|
-
fields = ["field1", "field2"] # Ignore property to display all fields
|
767
|
-
|
768
|
-
def get_form_queryset(self, obj):
|
769
|
-
"""
|
770
|
-
Gets all nonrelated objects needed for inlines. Method must be implemented.
|
771
|
-
"""
|
772
|
-
return self.model.objects.all()
|
773
|
-
|
774
|
-
def save_new_instance(self, parent, instance):
|
775
|
-
"""
|
776
|
-
Extra save method which can for example update inline instances based on current
|
777
|
-
main model object. Method must be implemented.
|
778
|
-
"""
|
779
|
-
pass
|
780
|
-
|
781
|
-
|
782
|
-
@admin.register(User)
|
783
|
-
class UserAdmin(ModelAdmin):
|
784
|
-
inlines = [OtherNonrelatedInline]
|
785
|
-
```
|
786
|
-
|
787
|
-
**NOTE:** credit for this functionality goes to [django-nonrelated-inlines](https://github.com/bhomnick/django-nonrelated-inlines)
|
788
|
-
|
789
762
|
## Display decorator
|
790
763
|
|
791
764
|
Unfold introduces it's own `unfold.decorators.display` decorator. By default it has exactly same behavior as native `django.contrib.admin.decorators.display` but it adds same customizations which helps to extends default logic.
|
@@ -912,6 +885,44 @@ class MyModelAdmin(ModelAdmin):
|
|
912
885
|
)
|
913
886
|
```
|
914
887
|
|
888
|
+
## Inlines
|
889
|
+
|
890
|
+
### Custom title
|
891
|
+
|
892
|
+
By default, the title available for each inline row is coming from the `__str__` implementation of the model. Unfold allows you to override this title by implementing `get_inline_title` on the model which can return your own custom title just for the inline.
|
893
|
+
|
894
|
+
```python
|
895
|
+
from unfold.admin import TabularInline
|
896
|
+
|
897
|
+
|
898
|
+
class User(models.Model):
|
899
|
+
# fiels, meta ...
|
900
|
+
|
901
|
+
def get_inline_title(self):
|
902
|
+
return "Custom title"
|
903
|
+
|
904
|
+
|
905
|
+
class MyInline(TabularInline):
|
906
|
+
model = User
|
907
|
+
```
|
908
|
+
|
909
|
+
### Hide title row
|
910
|
+
|
911
|
+
By applying `hide_title` attribute set to `True`, it is possible to hide the title row which is available for `StackedInline` or `TabularInline`. For `StackedInline` it is required to have disabled delete permission `can_delete` to be able to hide the title row, because the checkbox with the delete action is inside this title.
|
912
|
+
|
913
|
+
```python
|
914
|
+
# admin.py
|
915
|
+
|
916
|
+
from unfold.admin import TabularInline
|
917
|
+
|
918
|
+
|
919
|
+
class MyInline(TabularInline):
|
920
|
+
model = User
|
921
|
+
hide_title = True
|
922
|
+
```
|
923
|
+
|
924
|
+
### Display as tabs
|
925
|
+
|
915
926
|
Inlines can be grouped into tab navigation by specifying `tab` attribute in the inline class.
|
916
927
|
|
917
928
|
```python
|
@@ -925,6 +936,42 @@ class MyInline(TabularInline):
|
|
925
936
|
tab = True
|
926
937
|
```
|
927
938
|
|
939
|
+
### Nonrelated inlines
|
940
|
+
|
941
|
+
To display inlines which are not related (no foreign key pointing at the main model) to the model instance in changeform, you can use nonrelated inlines which are included in `unfold.contrib.inlines` module. Make sure this module is included in `INSTALLED_APPS` in settings.py.
|
942
|
+
|
943
|
+
```python
|
944
|
+
from django.contrib.auth.models import User
|
945
|
+
from unfold.admin import ModelAdmin
|
946
|
+
from unfold.contrib.inlines.admin import NonrelatedTabularInline
|
947
|
+
from .models import OtherModel
|
948
|
+
|
949
|
+
class OtherNonrelatedInline(NonrelatedTabularInline): # NonrelatedStackedInline is available as well
|
950
|
+
model = OtherModel
|
951
|
+
fields = ["field1", "field2"] # Ignore property to display all fields
|
952
|
+
|
953
|
+
def get_form_queryset(self, obj):
|
954
|
+
"""
|
955
|
+
Gets all nonrelated objects needed for inlines. Method must be implemented.
|
956
|
+
"""
|
957
|
+
return self.model.objects.all()
|
958
|
+
|
959
|
+
def save_new_instance(self, parent, instance):
|
960
|
+
"""
|
961
|
+
Extra save method which can for example update inline instances based on current
|
962
|
+
main model object. Method must be implemented.
|
963
|
+
"""
|
964
|
+
pass
|
965
|
+
|
966
|
+
|
967
|
+
@admin.register(User)
|
968
|
+
class UserAdmin(ModelAdmin):
|
969
|
+
inlines = [OtherNonrelatedInline]
|
970
|
+
```
|
971
|
+
|
972
|
+
**NOTE:** credit for this functionality goes to [django-nonrelated-inlines](https://github.com/bhomnick/django-nonrelated-inlines)
|
973
|
+
|
974
|
+
|
928
975
|
## Third party packages
|
929
976
|
|
930
977
|
### django-celery-beat
|
@@ -1335,6 +1382,17 @@ Some components like datepickers, calendars or selectors in admin was not possib
|
|
1335
1382
|
|
1336
1383
|
**Note:** most of the custom styles located in style.css are created via `@apply some-tailwind-class;` as is not possible to manually add CSS class to element which are for example created via jQuery.
|
1337
1384
|
|
1385
|
+
|
1386
|
+
### Design system
|
1387
|
+
|
1388
|
+
| Component | Classes |
|
1389
|
+
| --------------------------------- | ------------------------------------------------------ |
|
1390
|
+
| Regular text | text-gray-600 dark:text-gray-300 |
|
1391
|
+
| Hover regular text | text-gray-700 dark:text-gray-200 |
|
1392
|
+
| Headings | font-semibold text-gray-900 dark:text-gray-100 |
|
1393
|
+
| Icon | text-gray-400 dark:text-gray-500 |
|
1394
|
+
| Hover icon | hover:text-gray-500 dark:hover:text-gray-400 |
|
1395
|
+
|
1338
1396
|
### Using VS Code with containers
|
1339
1397
|
|
1340
1398
|
Unfold already contains prepared support for VS Code development. After cloning the project locally, open the main folder in VS Code (in terminal `code .`). Immediately, you would see a message from VS Code **Folder contains a Dev Container configuration file. Reopen folder to develop in a container** which will inform you that the support for containers is prepared. Confirm the message by clicking on **Reopen in Container**. If the message is not there, you can still manually open the project in a container by running the command **Dev Containers: Reopen in Container**.
|
@@ -1357,3 +1415,4 @@ The container has already a node preinstalled so it is possible to compile a new
|
|
1357
1415
|
- [Material Icons](https://fonts.google.com/icons) - Icons from Google Fonts
|
1358
1416
|
- [Trix](https://trix-editor.org/) - WYSIWYG editor
|
1359
1417
|
- [Alpine.js](https://alpinejs.dev/) - JavaScript interactions
|
1418
|
+
- [Chart.js](https://github.com/chartjs/Chart.js/) - Chart components
|
@@ -84,7 +84,7 @@ FORMFIELD_OVERRIDES = {
|
|
84
84
|
models.UUIDField: {"widget": UnfoldAdminUUIDInputWidget},
|
85
85
|
models.TextField: {"widget": UnfoldAdminTextareaWidget},
|
86
86
|
models.NullBooleanField: {"widget": UnfoldAdminNullBooleanSelectWidget},
|
87
|
-
models.BooleanField: {"widget":
|
87
|
+
models.BooleanField: {"widget": UnfoldBooleanSwitchWidget},
|
88
88
|
models.IntegerField: {"widget": UnfoldAdminIntegerFieldWidget},
|
89
89
|
models.BigIntegerField: {"widget": UnfoldAdminBigIntegerFieldWidget},
|
90
90
|
models.DecimalField: {"widget": UnfoldAdminDecimalFieldWidget},
|
@@ -119,7 +119,9 @@ FORMFIELD_OVERRIDES_INLINE.update(
|
|
119
119
|
}
|
120
120
|
)
|
121
121
|
|
122
|
-
checkbox = UnfoldBooleanWidget(
|
122
|
+
checkbox = UnfoldBooleanWidget(
|
123
|
+
{"class": "action-select", "aria-label": _("Select record")}, lambda value: False
|
124
|
+
)
|
123
125
|
|
124
126
|
helpers.AdminField = UnfoldAdminField
|
125
127
|
|
@@ -231,6 +233,7 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
|
|
231
233
|
list_horizontal_scrollbar_top = False
|
232
234
|
list_filter_submit = False
|
233
235
|
list_fullwidth = False
|
236
|
+
list_disable_select_all = False
|
234
237
|
compressed_fields = False
|
235
238
|
readonly_preprocess_fields = {}
|
236
239
|
checks_class = UnfoldModelAdminChecks
|
@@ -414,13 +417,6 @@ class ModelAdmin(ModelAdminMixin, BaseModelAdmin):
|
|
414
417
|
if extra_context is None:
|
415
418
|
extra_context = {}
|
416
419
|
|
417
|
-
new_formfield_overrides = copy.deepcopy(self.formfield_overrides)
|
418
|
-
new_formfield_overrides.update(
|
419
|
-
{models.BooleanField: {"widget": UnfoldBooleanSwitchWidget}}
|
420
|
-
)
|
421
|
-
|
422
|
-
self.formfield_overrides = new_formfield_overrides
|
423
|
-
|
424
420
|
actions = []
|
425
421
|
if object_id:
|
426
422
|
for action in self.get_actions_detail(request, object_id):
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
{% with choices.0 as choice %}
|
4
4
|
<div class="flex flex-col mb-6">
|
5
|
-
<h3 class="font-
|
5
|
+
<h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
7
|
<div class="flex flex-col space-y-4">
|
8
8
|
{% for field in choice.form %}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
{% with choices.0 as choice %}
|
4
4
|
<div class="flex flex-col mb-6">
|
5
|
-
<h3 class="font-
|
5
|
+
<h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
7
|
<div class="flex flex-col space-y-4">
|
8
8
|
{% for field in choice.form %}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
{% with choices.0 as choice %}
|
4
4
|
<div class="flex flex-col mb-6">
|
5
|
-
<h3 class="font-
|
5
|
+
<h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
7
|
<div class="flex flex-row gap-4">
|
8
8
|
{% for field in choice.form %}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
{% with choices.0 as choice %}
|
4
4
|
<div class="flex flex-col mb-6">
|
5
|
-
<h3 class="font-
|
5
|
+
<h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
7
|
{% for field in choice.form %}
|
8
8
|
<div class="flex flex-row flex-wrap group relative{% if field.errors %} errors{% endif %}">
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
{% with choices.0 as choice %}
|
5
5
|
<div class="admin-numeric-filter-wrapper mb-6">
|
6
|
-
<h3 class="font-
|
6
|
+
<h3 class="font-semibold mb-2 text-gray-900 dark:text-gray-100">
|
7
7
|
{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}
|
8
8
|
</h3>
|
9
9
|
|
@@ -3,25 +3,25 @@
|
|
3
3
|
<form method="post">
|
4
4
|
{% csrf_token %}
|
5
5
|
|
6
|
-
<h2 class="font-
|
6
|
+
<h2 class="font-semibold mb-3 text-gray-900 dark:text-gray-100">
|
7
7
|
{% trans "Group permissions" %}
|
8
8
|
</h2>
|
9
9
|
|
10
10
|
{% if groups_perms.items %}
|
11
|
-
<table id="group-permissions" class="border-gray-200 border-spacing-none border-separate mb-6
|
12
|
-
<thead class="hidden lg:table-header-group">
|
11
|
+
<table id="group-permissions" class="border-gray-200 border-spacing-none border-separate mb-6 w-full lg:border lg:rounded-md lg:shadow-sm lg:dark:border-gray-800">
|
12
|
+
<thead class="hidden lg:table-header-group text-gray-900 dark:text-gray-100">
|
13
13
|
<tr>
|
14
|
-
<th class="align-middle font-medium px-3 py-2 text-left
|
14
|
+
<th class="align-middle font-medium px-3 py-2 text-left">
|
15
15
|
{% trans "Group" %}
|
16
16
|
</th>
|
17
17
|
|
18
18
|
{% for perm in model_perms %}
|
19
|
-
<th class="align-middle font-medium px-3 py-2 text-left
|
19
|
+
<th class="align-middle font-medium px-3 py-2 text-left">
|
20
20
|
{{ perm.name }}
|
21
21
|
</th>
|
22
22
|
{% endfor %}
|
23
23
|
|
24
|
-
<th class="align-middle font-medium px-3 py-2 text-right
|
24
|
+
<th class="align-middle font-medium px-3 py-2 text-right">
|
25
25
|
{% trans "Action" %}
|
26
26
|
</th>
|
27
27
|
</tr>
|
@@ -30,14 +30,14 @@
|
|
30
30
|
<tbody>
|
31
31
|
{% for group, group_perms in groups_perms.items %}
|
32
32
|
<tr class="block border mb-3 rounded-md shadow-sm lg:table-row lg:border-none lg:mb-0 lg:shadow-none dark:border-gray-800">
|
33
|
-
<th class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-left
|
34
|
-
<span
|
33
|
+
<th 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="{% trans "User" %}">
|
34
|
+
<span>
|
35
35
|
{{ group }}
|
36
36
|
</span>
|
37
37
|
</th>
|
38
38
|
|
39
39
|
{% for perm in model_perms %}
|
40
|
-
<td class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-left
|
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
41
|
{% if perm.codename in group_perms %}
|
42
42
|
{% include "unfold/helpers/boolean.html" with value=False %}
|
43
43
|
{% else %}
|
@@ -46,7 +46,7 @@
|
|
46
46
|
</td>
|
47
47
|
{% endfor %}
|
48
48
|
|
49
|
-
<td class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-right
|
49
|
+
<td class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-right 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="{% trans "Action" %}">
|
50
50
|
<a href="group-manage/{{ group.id|safe }}/" class="hover:text-gray-700 dark:hover:text-white">
|
51
51
|
{% trans "Edit" %}
|
52
52
|
</a>
|
@@ -3,25 +3,25 @@
|
|
3
3
|
<form method="post">
|
4
4
|
{% csrf_token %}
|
5
5
|
|
6
|
-
<h2 class="font-medium mb-3
|
6
|
+
<h2 class="font-medium mb-3 text-gray-700 dark:text-gray-200">
|
7
7
|
{% trans "User permissions" %}
|
8
8
|
</h2>
|
9
9
|
|
10
10
|
{% if users_perms.items %}
|
11
|
-
<table id="user-permissions" class="border-gray-200 border-spacing-none border-separate mb-6
|
12
|
-
<thead class="hidden lg:table-header-group">
|
11
|
+
<table id="user-permissions" class="border-gray-200 border-spacing-none border-separate mb-6 w-full lg:border lg:rounded-md lg:shadow-sm lg:dark:border-gray-800">
|
12
|
+
<thead class="hidden lg:table-header-group text-gray-900 dark:text-gray-100">
|
13
13
|
<tr>
|
14
|
-
<th class="align-middle font-medium px-3 py-2 text-left
|
14
|
+
<th class="align-middle font-medium px-3 py-2 text-left">
|
15
15
|
{% trans "User" %}
|
16
16
|
</th>
|
17
17
|
|
18
18
|
{% for perm in model_perms %}
|
19
|
-
<th class="align-middle font-medium px-3 py-2 text-left
|
19
|
+
<th class="align-middle font-medium px-3 py-2 text-left">
|
20
20
|
{{ perm.name }}
|
21
21
|
</th>
|
22
22
|
{% endfor %}
|
23
23
|
|
24
|
-
<th class="align-middle font-medium px-3 py-2 text-right
|
24
|
+
<th class="align-middle font-medium px-3 py-2 text-right">
|
25
25
|
{% trans "Action" %}
|
26
26
|
</th>
|
27
27
|
</tr>
|
@@ -30,14 +30,14 @@
|
|
30
30
|
<tbody>
|
31
31
|
{% for user, user_perms in users_perms.items %}
|
32
32
|
<tr class="block border mb-3 rounded-md shadow-sm lg:table-row lg:border-none lg:mb-0 lg:shadow-none dark:border-gray-800">
|
33
|
-
<th class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-left
|
34
|
-
<span
|
33
|
+
<th 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="{% trans "User" %}">
|
34
|
+
<span>
|
35
35
|
{{ user }}
|
36
36
|
</span>
|
37
37
|
</th>
|
38
38
|
|
39
39
|
{% for perm in model_perms %}
|
40
|
-
<td class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-left
|
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
41
|
{% if perm.codename in group_perms %}
|
42
42
|
{% include "unfold/helpers/boolean.html" with value=False %}
|
43
43
|
{% else %}
|
@@ -46,7 +46,7 @@
|
|
46
46
|
</td>
|
47
47
|
{% endfor %}
|
48
48
|
|
49
|
-
<td class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-right
|
49
|
+
<td class="align-middle flex border-t border-gray-200 font-normal px-3 py-2 text-right 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="{% trans "Action" %}">
|
50
50
|
<a href="user-manage/{{ user.id|safe }}/" class="hover:text-gray-700 dark:hover:text-white">
|
51
51
|
{% trans "Edit" %}
|
52
52
|
</a>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
{{ confirm_form.as_p }}
|
8
8
|
|
9
|
-
<p class="font-
|
9
|
+
<p class="font-semibold p-4 text-sm text-gray-900 dark:text-gray-100">
|
10
10
|
{% trans "Below is a preview of data to be imported. If you are satisfied with the results, click 'Confirm import'" %}
|
11
11
|
</p>
|
12
12
|
|
@@ -14,8 +14,8 @@
|
|
14
14
|
{% for line, errors in result.row_errors %}
|
15
15
|
{% for error in errors %}
|
16
16
|
<li x-data="{ open: false }">
|
17
|
-
<div class="bg-red-50 border border-red-200 cursor-pointer mb-4 rounded shadow-sm text-red-500
|
18
|
-
<div class="border-b border-red-200 flex flex-row font-
|
17
|
+
<div class="bg-red-50 border border-red-200 cursor-pointer mb-4 rounded shadow-sm text-red-500 dark:bg-red-500/20 dark:border-red-500/20" x-on:click="open = ! open">
|
18
|
+
<div class="border-b border-red-200 flex flex-row font-semibold py-3 px-4 dark:border-red-500/20">
|
19
19
|
{% trans "Line number" %}: {{ line }} - {{ error.error }}
|
20
20
|
</div>
|
21
21
|
|
@@ -26,7 +26,7 @@
|
|
26
26
|
</div>
|
27
27
|
</div>
|
28
28
|
|
29
|
-
<div class="block border leading-relaxed rounded p-4
|
29
|
+
<div class="block border leading-relaxed mb-4 rounded p-4 traceback dark:border-gray-800 dark:text-gray-300 " x-show="open">
|
30
30
|
{{ error.traceback|linebreaks }}
|
31
31
|
</div>
|
32
32
|
</li>
|