django-unfold 0.63.0__tar.gz → 0.64.1__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.63.0 → django_unfold-0.64.1}/PKG-INFO +1 -1
- {django_unfold-0.63.0 → django_unfold-0.64.1}/pyproject.toml +1 -1
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/admin.py +1 -1
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/constance/templates/admin/constance/change_list.html +0 -18
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +1 -1
- django_unfold-0.64.1/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +13 -0
- django_unfold-0.64.1/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +31 -0
- django_unfold-0.64.1/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +32 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/export.html +0 -23
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/import.html +0 -23
- django_unfold-0.64.1/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +23 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/simple_history/templates/simple_history/object_history_list.html +0 -1
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/dataclasses.py +8 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/settings.py +28 -22
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/sites.py +120 -43
- django_unfold-0.64.1/src/unfold/static/unfold/css/styles.css +2 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/app.js +147 -9
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/styles.css +32 -32
- django_unfold-0.64.1/src/unfold/templates/admin/app_index.html +21 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/auth/user/change_password.html +1 -26
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/base.html +0 -16
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/change_form.html +0 -33
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/change_list.html +0 -19
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/change_list_results.html +2 -2
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/delete_confirmation.html +0 -21
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/delete_selected_confirmation.html +0 -22
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/index.html +0 -2
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/object_history.html +0 -24
- django_unfold-0.64.1/src/unfold/templates/registration/password_change_done.html +12 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/registration/password_change_form.html +0 -17
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/navigation.html +2 -2
- django_unfold-0.64.1/src/unfold/templates/unfold/components/table.html +93 -0
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/boolean.html +15 -0
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/command.html +53 -0
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/command_history.html +54 -0
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/command_results.html +50 -0
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/header_back_button.html +21 -0
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/header_title.html +11 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/label.html +1 -1
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/navigation_header.html +2 -2
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/search.html +48 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/search_results.html +2 -2
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/shortcut.html +3 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/site_dropdown.html +1 -1
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/tab_items.html +29 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/tab_list.html +1 -1
- django_unfold-0.64.1/src/unfold/templates/unfold/helpers/welcomemsg.html +29 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/layouts/base_simple.html +0 -6
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/layouts/skeleton.html +4 -1
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/layouts/unauthenticated.html +0 -2
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templatetags/unfold.py +141 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/utils.py +29 -10
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/views.py +4 -1
- django_unfold-0.63.0/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +0 -37
- django_unfold-0.63.0/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +0 -57
- django_unfold-0.63.0/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +0 -58
- django_unfold-0.63.0/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +0 -55
- django_unfold-0.63.0/src/unfold/static/unfold/css/styles.css +0 -2
- django_unfold-0.63.0/src/unfold/templates/admin/app_index.html +0 -39
- django_unfold-0.63.0/src/unfold/templates/registration/password_change_done.html +0 -29
- django_unfold-0.63.0/src/unfold/templates/unfold/components/table.html +0 -47
- django_unfold-0.63.0/src/unfold/templates/unfold/helpers/boolean.html +0 -15
- django_unfold-0.63.0/src/unfold/templates/unfold/helpers/header_back_button.html +0 -13
- django_unfold-0.63.0/src/unfold/templates/unfold/helpers/search.html +0 -30
- django_unfold-0.63.0/src/unfold/templates/unfold/helpers/shortcut.html +0 -3
- django_unfold-0.63.0/src/unfold/templates/unfold/helpers/tab_items.html +0 -47
- django_unfold-0.63.0/src/unfold/templates/unfold/helpers/welcomemsg.html +0 -41
- {django_unfold-0.63.0 → django_unfold-0.64.1}/LICENSE.md +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/README.md +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/apps.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/checks.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/components.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/constance/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/constance/apps.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/constance/settings.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/constance/templates/admin/constance/includes/results_list.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/admin/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/admin/autocomplete_filters.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/admin/choice_filters.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/admin/datetime_filters.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/admin/dropdown_filters.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/admin/mixins.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/admin/numeric_filters.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/admin/text_filters.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/apps.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/forms.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider/nouislider.min.css +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider/nouislider.min.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/static/unfold/filters/js/wnumb/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/static/unfold/filters/js/wnumb/wNumb.min.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/templates/unfold/filters/filters_field.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/apps.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/static/unfold/forms/css/trix/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/static/unfold/forms/css/trix/trix.css +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/static/unfold/forms/js/trix/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/static/unfold/forms/js/trix/trix.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/static/unfold/forms/js/trix.config.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/templates/unfold/forms/array.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/templates/unfold/forms/wysiwyg.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/forms/widgets.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/guardian/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/guardian/apps.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/guardian/templates/admin/guardian/model/change_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/guardian/templates/admin/guardian/model/field.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/guardian/templates/unfold/guardian/group_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/guardian/templates/unfold/guardian/user_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/apps.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/forms.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/base.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/change_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/import_confirm.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/import_errors.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/import_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/import_preview.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/import_validation.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/inlines/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/inlines/admin.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/inlines/apps.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/inlines/checks.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/inlines/forms.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/location_field/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/location_field/apps.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/location_field/templates/location_field/map_widget.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/simple_history/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/simple_history/apps.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/simple_history/templates/simple_history/object_history.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/contrib/simple_history/templates/simple_history/submit_line.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/decorators.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/enums.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/exceptions.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/fields.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/forms.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/layout.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/mixins/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/mixins/action_model_admin.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/mixins/base_model_admin.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/overrides.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/paginator.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/sections.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/admin/js/admin/RelatedObjectLookups.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/admin/js/inlines.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/css/simplebar/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/css/simplebar/simplebar.css +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/fonts/inter/Inter-Bold.woff2 +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/fonts/inter/Inter-Medium.woff2 +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/fonts/inter/Inter-Regular.woff2 +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2 +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/fonts/inter/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/fonts/inter/styles.css +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/fonts/material-symbols/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/fonts/material-symbols/styles.css +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/alpine/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/alpine/alpine.anchor.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/alpine/alpine.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/alpine/alpine.persist.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/alpine/alpine.resize.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/alpine/alpine.sort.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/chart/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/chart/chart.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/htmx/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/htmx/htmx.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/select2.init.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/simplebar/LICENSE +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/static/unfold/js/simplebar/simplebar.js +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/actions.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/app_list.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/auth/user/add_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/base_site.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/change_form_object_tools.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/change_list_object_tools.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/date_hierarchy.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/edit_inline/stacked.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/edit_inline/tabular.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/filter.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/includes/fieldset.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/includes/object_delete_summary.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/login.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/nav_sidebar.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/pagination.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/search_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/admin/submit_line.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/auth/widgets/read_only_password_hash.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/registration/logged_out.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/button.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/card.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/chart/bar.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/chart/cohort.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/chart/line.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/container.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/flex.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/icon.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/progress.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/separator.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/text.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/title.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/components/tracker.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/account_links.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/actions_row.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/add_link.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/app_list.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/app_list_default.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/attrs.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/breadcrumb_item.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/change_list_actions.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/change_list_filter.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/change_list_filter_actions.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/delete_submit_line.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/display_dropdown.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/display_header.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/display_label.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/edit_inline/tabular_delete.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/edit_inline/tabular_error.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/edit_inline/tabular_field.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/edit_inline/tabular_heading.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/edit_inline/tabular_row.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/edit_inline/tabular_title.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/empty_results.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/field.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/field_readonly.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/field_readonly_value.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/fieldset_row.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/fieldset_row_checkbox.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/fieldset_row_field.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/fieldsets_tabs.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/form_errors.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/form_label.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/header.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/help_text.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/history.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/language_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/language_switch.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/messages/debug.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/messages/error.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/messages/errornote.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/messages/info.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/messages/success.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/messages/warning.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/messages.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/navigation.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/pagination.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/pagination_current_item.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/pagination_default.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/pagination_ellipsis.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/pagination_infinite.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/pagination_inline.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/popup_header.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/site_branding.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/site_icon.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/site_logo.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/submit.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/tab_action.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/tab_actions.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/theme_switch.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/unauthenticated_header.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/unauthenticated_title.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/helpers/userlinks.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/layouts/base.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/templatetags/preserve_changelist_filters.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/clearable_file_input.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/clearable_file_input_small.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/date.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/radio.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/radio_option.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/range.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/related_widget_wrapper.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/select.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/split_datetime.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/split_datetime_vertical.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/split_money.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/text.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/textarea.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/time.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold/widgets/url.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/display_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/errors.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/errors_formset.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/field.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/inputs.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/attrs.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/baseinput.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/button.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/buttonholder.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/checkbox.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/column.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/div.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/field_errors.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/fieldset.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/fieldset_subheader.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/help_text.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/help_text_and_errors.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/hr.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/radio_checkbox_select.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/row.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/layout/table_inline_formset.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/uni_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/whole_uni_form.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templates/unfold_crispy/whole_uni_formset.html +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templatetags/__init__.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/templatetags/unfold_list.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/typing.py +0 -0
- {django_unfold-0.63.0 → django_unfold-0.64.1}/src/unfold/widgets.py +0 -0
@@ -129,7 +129,7 @@ class ModelAdmin(BaseModelAdminMixin, ActionModelAdminMixin, BaseModelAdmin):
|
|
129
129
|
|
130
130
|
action_detail_urls = [
|
131
131
|
path(
|
132
|
-
f"<path:object_id>/{action.path}
|
132
|
+
f"<path:object_id>/{action.path}",
|
133
133
|
wrap(action.method),
|
134
134
|
name=action.action_name,
|
135
135
|
)
|
@@ -10,24 +10,6 @@
|
|
10
10
|
<script type="text/javascript" src="{% static 'admin/js/constance.js' %}"></script>
|
11
11
|
{% endblock %}
|
12
12
|
|
13
|
-
{% block breadcrumbs %}
|
14
|
-
<div class="px-4">
|
15
|
-
<div class="container mb-6 mx-auto -my-3 lg:mb-12">
|
16
|
-
<ul class="flex flex-wrap">
|
17
|
-
{% url 'admin:index' as link %}
|
18
|
-
{% trans 'Home' as name %}
|
19
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
|
20
|
-
|
21
|
-
{% url 'admin:app_list' app_label=opts.app_label as link %}
|
22
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link=link name=opts.app_config.verbose_name %}
|
23
|
-
|
24
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link='' name=opts.verbose_name_plural|capfirst %}
|
25
|
-
</ul>
|
26
|
-
</div>
|
27
|
-
</div>
|
28
|
-
{% endblock %}
|
29
|
-
|
30
|
-
|
31
13
|
{% block content %}
|
32
14
|
<div id="content-main" class="constance">
|
33
15
|
<div id="changelist" class="flex flex-col gap-8 w-full">
|
@@ -26,7 +26,7 @@
|
|
26
26
|
</div>
|
27
27
|
{% else %}
|
28
28
|
<div class="admin-numeric-filter-slider-error dark:text-font-default-dark">
|
29
|
-
<p>
|
29
|
+
<p class="border border-base-300 border-dashed leading-[36px] h-[38px] rounded-default text-center dark:border-base-700">
|
30
30
|
{% trans 'Not enough data.' %}
|
31
31
|
</p>
|
32
32
|
</div>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{% extends "admin/change_form.html" %}
|
2
|
+
|
3
|
+
{% load admin_urls i18n guardian_tags %}
|
4
|
+
|
5
|
+
{% block content %}
|
6
|
+
{% include "unfold/guardian/user_form.html" %}
|
7
|
+
|
8
|
+
<hr class="border-base-200 my-12 dark:border-base-800"/>
|
9
|
+
|
10
|
+
{% include "unfold/guardian/group_form.html" %}
|
11
|
+
{% endblock %}
|
12
|
+
|
13
|
+
{% block footer %}{% endblock%}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
{% extends "admin/change_form.html" %}
|
2
|
+
{% load admin_urls i18n %}
|
3
|
+
|
4
|
+
{% block extrahead %}{{ block.super }}
|
5
|
+
{{ form.media }}
|
6
|
+
{% endblock %}
|
7
|
+
|
8
|
+
{% block content %}
|
9
|
+
<div class="border border-base-200 overflow-hidden rounded-default p-3 shadow-xs dark:border-base-800">
|
10
|
+
<form method="post">
|
11
|
+
{% csrf_token %}
|
12
|
+
|
13
|
+
{% trans "Object" as title %}
|
14
|
+
{% include "unfold/helpers/field_readonly.html" with title=title value=object %}
|
15
|
+
|
16
|
+
{% trans "Group" as title %}
|
17
|
+
{% include "unfold/helpers/field_readonly.html" with title=title value=group_obj %}
|
18
|
+
|
19
|
+
{% include "unfold/helpers/field.html" with field=form.permissions %}
|
20
|
+
|
21
|
+
<div class="bg-base-50 border-t border-base-200 flex flex-row -m-3 p-3 dark:bg-white/[.02] dark:border-base-800">
|
22
|
+
<div class="ml-auto">
|
23
|
+
{% trans "Save" as title %}
|
24
|
+
{% include "unfold/helpers/submit.html" with title=title %}
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</form>
|
28
|
+
</div>
|
29
|
+
{% endblock %}
|
30
|
+
|
31
|
+
{% block footer %}{% endblock%}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
{% extends "admin/change_form.html" %}
|
2
|
+
|
3
|
+
{% load admin_urls i18n %}
|
4
|
+
|
5
|
+
{% block extrahead %}{{ block.super }}
|
6
|
+
{{ form.media }}
|
7
|
+
{% endblock %}
|
8
|
+
|
9
|
+
{% block content %}
|
10
|
+
<div class="border border-base-200 overflow-hidden rounded-default p-3 shadow-xs dark:border-base-800">
|
11
|
+
<form method="post">
|
12
|
+
{% csrf_token %}
|
13
|
+
|
14
|
+
{% trans "Object" as title %}
|
15
|
+
{% include "unfold/helpers/field_readonly.html" with title=title value=object %}
|
16
|
+
|
17
|
+
{% trans "User" as title %}
|
18
|
+
{% include "unfold/helpers/field_readonly.html" with title=title value=user_obj %}
|
19
|
+
|
20
|
+
{% include "unfold/helpers/field.html" with field=form.permissions %}
|
21
|
+
|
22
|
+
<div class="bg-base-50 border-t border-base-200 flex flex-row -m-3 p-3 dark:bg-white/[.02] dark:border-base-800">
|
23
|
+
<div class="ml-auto">
|
24
|
+
{% trans "Save" as title %}
|
25
|
+
{% include "unfold/helpers/submit.html" with title=title %}
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</form>
|
29
|
+
</div>
|
30
|
+
{% endblock %}
|
31
|
+
|
32
|
+
{% block footer %}{% endblock%}
|
@@ -9,29 +9,6 @@
|
|
9
9
|
{{ form.media }}
|
10
10
|
{% endblock %}
|
11
11
|
|
12
|
-
{% block breadcrumbs %}
|
13
|
-
<div class="px-4">
|
14
|
-
<div class="container mb-6 mx-auto -my-3 lg:mb-12">
|
15
|
-
<ul class="flex flex-wrap">
|
16
|
-
{% url 'admin:index' as link %}
|
17
|
-
{% trans 'Home' as name %}
|
18
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
|
19
|
-
|
20
|
-
{% url 'admin:app_list' app_label=opts.app_label as link %}
|
21
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link=link name=opts.app_config.verbose_name %}
|
22
|
-
|
23
|
-
{% url opts|admin_urlname:'changelist' as link %}
|
24
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link=link name=opts.verbose_name_plural|capfirst %}
|
25
|
-
|
26
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link='' name=cl.opts.verbose_name_plural|capfirst %}
|
27
|
-
|
28
|
-
{% trans 'Export' as name %}
|
29
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link='' name=name %}
|
30
|
-
</ul>
|
31
|
-
</div>
|
32
|
-
</div>
|
33
|
-
{% endblock %}
|
34
|
-
|
35
12
|
{% block content %}
|
36
13
|
<form action="{{ export_url }}" method="POST">
|
37
14
|
{% csrf_token %}
|
@@ -20,29 +20,6 @@
|
|
20
20
|
{% endif %}
|
21
21
|
{% endblock %}
|
22
22
|
|
23
|
-
{% block breadcrumbs %}
|
24
|
-
<div class="px-4">
|
25
|
-
<div class="container mb-6 mx-auto -my-3 lg:mb-12">
|
26
|
-
<ul class="flex flex-wrap">
|
27
|
-
{% url 'admin:index' as link %}
|
28
|
-
{% trans 'Home' as name %}
|
29
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link=link name=name %}
|
30
|
-
|
31
|
-
{% url 'admin:app_list' app_label=opts.app_label as link %}
|
32
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link=link name=opts.app_config.verbose_name %}
|
33
|
-
|
34
|
-
{% url opts|admin_urlname:'changelist' as link %}
|
35
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link=link name=opts.verbose_name_plural|capfirst %}
|
36
|
-
|
37
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link='' name=cl.opts.verbose_name_plural|capfirst %}
|
38
|
-
|
39
|
-
{% trans 'Import' as name %}
|
40
|
-
{% include 'unfold/helpers/breadcrumb_item.html' with link='' name=name %}
|
41
|
-
</ul>
|
42
|
-
</div>
|
43
|
-
</div>
|
44
|
-
{% endblock %}
|
45
|
-
|
46
23
|
{% block content %}
|
47
24
|
{% if confirm_form %}
|
48
25
|
{% include "admin/import_export/import_confirm.html" %}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
{% extends "admin/change_form.html" %}
|
2
|
+
|
3
|
+
{% load i18n %}
|
4
|
+
|
5
|
+
{% block submit_buttons_top %}
|
6
|
+
{% include "simple_history/submit_line.html" %}
|
7
|
+
{% endblock %}
|
8
|
+
|
9
|
+
{% block submit_buttons_bottom %}
|
10
|
+
{% include "simple_history/submit_line.html" %}
|
11
|
+
{% endblock %}
|
12
|
+
|
13
|
+
{% block form_top %}
|
14
|
+
<p class="px-3 py-3 rounded-default text-sm last:mb-8 bg-blue-50 mb-8 text-blue-500 dark:bg-blue-500/20">
|
15
|
+
{% if not revert_disabled %}
|
16
|
+
{% blocktrans %}Press the 'Revert' button below to revert to this version of the object.{% endblocktrans %}
|
17
|
+
{% endif %}
|
18
|
+
|
19
|
+
{% if change_history %}
|
20
|
+
{% blocktrans %}Press the 'Change History' button below to edit the history.{% endblocktrans %}
|
21
|
+
{% endif %}
|
22
|
+
</p>
|
23
|
+
{% endblock %}
|
@@ -18,6 +18,14 @@ class UnfoldAction:
|
|
18
18
|
variant: Optional[ActionVariant] = ActionVariant.DEFAULT
|
19
19
|
|
20
20
|
|
21
|
+
@dataclass
|
22
|
+
class SearchResult:
|
23
|
+
title: str
|
24
|
+
description: str
|
25
|
+
link: str
|
26
|
+
icon: Optional[str]
|
27
|
+
|
28
|
+
|
21
29
|
@dataclass
|
22
30
|
class Favicon:
|
23
31
|
href: Union[str, Callable]
|
@@ -18,30 +18,30 @@ CONFIG_DEFAULTS = {
|
|
18
18
|
"SHOW_BACK_BUTTON": False,
|
19
19
|
"COLORS": {
|
20
20
|
"base": {
|
21
|
-
"50": "
|
22
|
-
"100": "
|
23
|
-
"200": "
|
24
|
-
"300": "
|
25
|
-
"400": "
|
26
|
-
"500": "
|
27
|
-
"600": "
|
28
|
-
"700": "
|
29
|
-
"800": "
|
30
|
-
"900": "
|
31
|
-
"950": "
|
21
|
+
"50": "oklch(98.5% .002 247.839)",
|
22
|
+
"100": "oklch(96.7% .003 264.542)",
|
23
|
+
"200": "oklch(92.8% .006 264.531)",
|
24
|
+
"300": "oklch(87.2% .01 258.338)",
|
25
|
+
"400": "oklch(70.7% .022 261.325)",
|
26
|
+
"500": "oklch(55.1% .027 264.364)",
|
27
|
+
"600": "oklch(44.6% .03 256.802)",
|
28
|
+
"700": "oklch(37.3% .034 259.733)",
|
29
|
+
"800": "oklch(27.8% .033 256.848)",
|
30
|
+
"900": "oklch(21% .034 264.665)",
|
31
|
+
"950": "oklch(13% .028 261.692)",
|
32
32
|
},
|
33
33
|
"primary": {
|
34
|
-
"50": "
|
35
|
-
"100": "
|
36
|
-
"200": "
|
37
|
-
"300": "
|
38
|
-
"400": "
|
39
|
-
"500": "
|
40
|
-
"600": "
|
41
|
-
"700": "
|
42
|
-
"800": "
|
43
|
-
"900": "
|
44
|
-
"950": "
|
34
|
+
"50": "oklch(97.7% .014 308.299)",
|
35
|
+
"100": "oklch(94.6% .033 307.174)",
|
36
|
+
"200": "oklch(90.2% .063 306.703)",
|
37
|
+
"300": "oklch(82.7% .119 306.383)",
|
38
|
+
"400": "oklch(71.4% .203 305.504)",
|
39
|
+
"500": "oklch(62.7% .265 303.9)",
|
40
|
+
"600": "oklch(55.8% .288 302.321)",
|
41
|
+
"700": "oklch(49.6% .265 301.924)",
|
42
|
+
"800": "oklch(43.8% .218 303.724)",
|
43
|
+
"900": "oklch(38.1% .176 304.987)",
|
44
|
+
"950": "oklch(29.1% .149 302.717)",
|
45
45
|
},
|
46
46
|
"font": {
|
47
47
|
"subtle-light": "var(--color-base-500)", # text-base-500
|
@@ -64,8 +64,14 @@ CONFIG_DEFAULTS = {
|
|
64
64
|
"action": None,
|
65
65
|
"navigation": [],
|
66
66
|
},
|
67
|
+
"COMMAND": {
|
68
|
+
"search_models": False, # Enable search in the models
|
69
|
+
"show_history": False, # Enable history in the command search
|
70
|
+
"search_callback": None, # Inject a custom callback to the search form
|
71
|
+
},
|
67
72
|
"SIDEBAR": {
|
68
73
|
"show_search": False,
|
74
|
+
"command_search": False,
|
69
75
|
"show_all_applications": False,
|
70
76
|
"navigation": [],
|
71
77
|
},
|
@@ -1,17 +1,20 @@
|
|
1
1
|
import copy
|
2
|
+
import time
|
2
3
|
from http import HTTPStatus
|
3
4
|
from typing import Any, Callable, Optional, Union
|
4
5
|
from urllib.parse import parse_qs, urlparse
|
5
6
|
|
6
7
|
from django.contrib.admin import AdminSite
|
8
|
+
from django.core.cache import cache
|
7
9
|
from django.core.validators import EMPTY_VALUES
|
8
10
|
from django.http import HttpRequest, HttpResponse
|
9
11
|
from django.template.response import TemplateResponse
|
10
12
|
from django.urls import URLPattern, path, reverse, reverse_lazy
|
11
13
|
from django.utils.functional import lazy
|
12
14
|
from django.utils.module_loading import import_string
|
15
|
+
from django.utils.text import slugify
|
13
16
|
|
14
|
-
from unfold.dataclasses import DropdownItem, Favicon
|
17
|
+
from unfold.dataclasses import DropdownItem, Favicon, SearchResult
|
15
18
|
|
16
19
|
try:
|
17
20
|
from django.contrib.auth.decorators import login_not_required
|
@@ -22,7 +25,7 @@ except ImportError:
|
|
22
25
|
|
23
26
|
|
24
27
|
from unfold.settings import get_config
|
25
|
-
from unfold.utils import
|
28
|
+
from unfold.utils import convert_color
|
26
29
|
from unfold.widgets import (
|
27
30
|
BUTTON_CLASSES,
|
28
31
|
CHECKBOX_CLASSES,
|
@@ -112,6 +115,12 @@ class UnfoldAdminSite(AdminSite):
|
|
112
115
|
"tab_list": self.get_tabs_list(request),
|
113
116
|
"styles": self._get_list("STYLES", request),
|
114
117
|
"scripts": self._get_list("SCRIPTS", request),
|
118
|
+
"command_show_history": self._get_config("COMMAND", request).get(
|
119
|
+
"show_history"
|
120
|
+
),
|
121
|
+
"sidebar_command_search": self._get_config("SIDEBAR", request).get(
|
122
|
+
"command_search"
|
123
|
+
),
|
115
124
|
"sidebar_show_all_applications": self._get_value(
|
116
125
|
sidebar_config.get("show_all_applications"), request
|
117
126
|
),
|
@@ -165,26 +174,21 @@ class UnfoldAdminSite(AdminSite):
|
|
165
174
|
|
166
175
|
return HttpResponse(status=HTTPStatus.OK)
|
167
176
|
|
168
|
-
def
|
169
|
-
self,
|
170
|
-
) ->
|
171
|
-
query = request.GET.get("s").lower()
|
172
|
-
app_list = super().get_app_list(request)
|
173
|
-
apps = []
|
177
|
+
def _search_apps(
|
178
|
+
self, app_list: list[dict[str, Any]], search_term: str
|
179
|
+
) -> list[SearchResult]:
|
174
180
|
results = []
|
175
|
-
|
176
|
-
if query in EMPTY_VALUES:
|
177
|
-
return HttpResponse()
|
181
|
+
apps = []
|
178
182
|
|
179
183
|
for app in app_list:
|
180
|
-
if
|
184
|
+
if search_term in app["name"].lower():
|
181
185
|
apps.append(app)
|
182
186
|
continue
|
183
187
|
|
184
188
|
models = []
|
185
189
|
|
186
190
|
for model in app["models"]:
|
187
|
-
if
|
191
|
+
if search_term in model["name"].lower():
|
188
192
|
models.append(model)
|
189
193
|
|
190
194
|
if len(models) > 0:
|
@@ -194,17 +198,111 @@ class UnfoldAdminSite(AdminSite):
|
|
194
198
|
for app in apps:
|
195
199
|
for model in app["models"]:
|
196
200
|
results.append(
|
197
|
-
|
198
|
-
"
|
199
|
-
"
|
200
|
-
|
201
|
+
SearchResult(
|
202
|
+
title=str(model["name"]),
|
203
|
+
description=app["name"],
|
204
|
+
link=model["admin_url"],
|
205
|
+
icon="tag",
|
206
|
+
)
|
207
|
+
)
|
208
|
+
|
209
|
+
return results
|
210
|
+
|
211
|
+
def _search_models(
|
212
|
+
self, request: HttpRequest, app_list: list[dict[str, Any]], search_term: str
|
213
|
+
) -> list[SearchResult]:
|
214
|
+
results = []
|
215
|
+
|
216
|
+
for app in app_list:
|
217
|
+
for model in app["models"]:
|
218
|
+
admin_instance = self._registry.get(model["model"])
|
219
|
+
search_fields = admin_instance.get_search_fields(request)
|
220
|
+
|
221
|
+
if not search_fields:
|
222
|
+
continue
|
223
|
+
|
224
|
+
pks = []
|
225
|
+
|
226
|
+
qs = admin_instance.get_queryset(request)
|
227
|
+
search_results, _has_duplicates = admin_instance.get_search_results(
|
228
|
+
request, qs, search_term
|
201
229
|
)
|
202
230
|
|
231
|
+
for item in search_results:
|
232
|
+
if item.pk in pks:
|
233
|
+
continue
|
234
|
+
|
235
|
+
pks.append(item.pk)
|
236
|
+
|
237
|
+
link = reverse_lazy(
|
238
|
+
f"{self.name}:{admin_instance.model._meta.app_label}_{admin_instance.model._meta.model_name}_change",
|
239
|
+
args=(item.pk,),
|
240
|
+
)
|
241
|
+
|
242
|
+
results.append(
|
243
|
+
SearchResult(
|
244
|
+
title=str(item),
|
245
|
+
description=f"{item._meta.app_label.capitalize()} - {item._meta.verbose_name.capitalize()}",
|
246
|
+
link=link,
|
247
|
+
icon="data_object",
|
248
|
+
)
|
249
|
+
)
|
250
|
+
|
251
|
+
return results
|
252
|
+
|
253
|
+
def search(
|
254
|
+
self, request: HttpRequest, extra_context: Optional[dict[str, Any]] = None
|
255
|
+
) -> TemplateResponse:
|
256
|
+
start_time = time.time()
|
257
|
+
|
258
|
+
CACHE_TIMEOUT = 10
|
259
|
+
|
260
|
+
search_term = request.GET.get("s")
|
261
|
+
extended_search = "extended" in request.GET
|
262
|
+
app_list = super().get_app_list(request)
|
263
|
+
template_name = "unfold/helpers/search_results.html"
|
264
|
+
|
265
|
+
if search_term in EMPTY_VALUES:
|
266
|
+
return HttpResponse()
|
267
|
+
|
268
|
+
search_term = search_term.lower()
|
269
|
+
cache_key = f"unfold_search_{request.user.pk}_{slugify(search_term)}"
|
270
|
+
cache_results = cache.get(cache_key)
|
271
|
+
|
272
|
+
if extended_search:
|
273
|
+
template_name = "unfold/helpers/command_results.html"
|
274
|
+
|
275
|
+
if cache_results:
|
276
|
+
results = cache_results
|
277
|
+
else:
|
278
|
+
results = self._search_apps(app_list, search_term)
|
279
|
+
search_models = self._get_config("COMMAND", request).get("search_models")
|
280
|
+
search_callback = self._get_config("COMMAND", request).get(
|
281
|
+
"search_callback"
|
282
|
+
)
|
283
|
+
|
284
|
+
if extended_search:
|
285
|
+
if search_callback:
|
286
|
+
results.extend(
|
287
|
+
self._get_value(search_callback, request, search_term)
|
288
|
+
)
|
289
|
+
|
290
|
+
if search_models is True:
|
291
|
+
results.extend(self._search_models(request, app_list, search_term))
|
292
|
+
|
293
|
+
cache.set(cache_key, results, timeout=CACHE_TIMEOUT)
|
294
|
+
|
295
|
+
execution_time = time.time() - start_time
|
296
|
+
|
203
297
|
return TemplateResponse(
|
204
298
|
request,
|
205
|
-
template=
|
299
|
+
template=template_name,
|
206
300
|
context={
|
207
301
|
"results": results,
|
302
|
+
"execution_time": execution_time,
|
303
|
+
"command_show_history": self._get_config("COMMAND", request).get(
|
304
|
+
"show_history"
|
305
|
+
),
|
208
306
|
},
|
209
307
|
headers={
|
210
308
|
"HX-Trigger": "search",
|
@@ -260,8 +358,8 @@ class UnfoldAdminSite(AdminSite):
|
|
260
358
|
# Checks if any tab item is active and then marks the sidebar link as active
|
261
359
|
if (
|
262
360
|
tabs
|
263
|
-
and
|
264
|
-
and
|
361
|
+
and self._get_is_tab_active(request, tabs, link)
|
362
|
+
and "active" not in item
|
265
363
|
):
|
266
364
|
item["active"] = True
|
267
365
|
|
@@ -408,7 +506,7 @@ class UnfoldAdminSite(AdminSite):
|
|
408
506
|
request, tab_item.get("link_callback") or tab_item["link"]
|
409
507
|
):
|
410
508
|
has_tab_link_active = True
|
411
|
-
|
509
|
+
continue
|
412
510
|
|
413
511
|
if has_primary_link and has_tab_link_active:
|
414
512
|
return True
|
@@ -440,33 +538,12 @@ class UnfoldAdminSite(AdminSite):
|
|
440
538
|
def _get_colors(self, key: str, *args) -> dict[str, dict[str, str]]:
|
441
539
|
colors = self._get_config(key, *args)
|
442
540
|
|
443
|
-
def rgb_to_values(value: str) -> str:
|
444
|
-
return ", ".join(
|
445
|
-
list(
|
446
|
-
map(
|
447
|
-
str.strip,
|
448
|
-
value.removeprefix("rgb(").removesuffix(")").split(","),
|
449
|
-
)
|
450
|
-
)
|
451
|
-
)
|
452
|
-
|
453
|
-
def hex_to_values(value: str) -> str:
|
454
|
-
return ", ".join(str(item) for item in hex_to_rgb(value))
|
455
|
-
|
456
541
|
for name, weights in colors.items():
|
457
542
|
weights = self._get_value(weights, *args)
|
458
543
|
colors[name] = weights
|
459
544
|
|
460
545
|
for weight, value in weights.items():
|
461
|
-
|
462
|
-
colors[name][weight] = hex_to_values(value)
|
463
|
-
elif value.startswith("rgb"):
|
464
|
-
colors[name][weight] = rgb_to_values(value)
|
465
|
-
elif isinstance(value, str) and all(
|
466
|
-
part.isdigit() for part in value.split()
|
467
|
-
):
|
468
|
-
colors[name][weight] = ", ".join(value.split(" "))
|
469
|
-
pass
|
546
|
+
colors[name][weight] = convert_color(value)
|
470
547
|
|
471
548
|
return colors
|
472
549
|
|