django-unfold 0.61.0__tar.gz → 0.63.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {django_unfold-0.61.0 → django_unfold-0.63.0}/PKG-INFO +15 -2
- {django_unfold-0.61.0 → django_unfold-0.63.0}/README.md +14 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/pyproject.toml +1 -1
- django_unfold-0.63.0/src/unfold/contrib/constance/apps.py +6 -0
- django_unfold-0.63.0/src/unfold/contrib/constance/settings.py +32 -0
- django_unfold-0.63.0/src/unfold/contrib/constance/templates/admin/constance/change_list.html +70 -0
- django_unfold-0.63.0/src/unfold/contrib/constance/templates/admin/constance/includes/results_list.html +71 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/widgets.py +12 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/fields.py +1 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/admin/js/inlines.js +42 -17
- django_unfold-0.63.0/src/unfold/static/unfold/css/styles.css +2 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/select2.init.js +4 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/styles.css +5 -6
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/base.html +1 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/change_form.html +12 -6
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/change_list_results.html +2 -2
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/edit_inline/stacked.html +2 -2
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/edit_inline/tabular.html +2 -2
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/includes/fieldset.html +1 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/login.html +1 -1
- django_unfold-0.63.0/src/unfold/templates/registration/logged_out.html +28 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/fieldsets_tabs.html +1 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/navigation_header.html +2 -2
- django_unfold-0.63.0/src/unfold/templates/unfold/helpers/pagination_inline.html +36 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/search.html +1 -1
- django_unfold-0.63.0/src/unfold/templates/unfold/helpers/submit.html +3 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/tab_actions.html +1 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/tab_list.html +1 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/unauthenticated_header.html +2 -2
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/unauthenticated_title.html +1 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/related_widget_wrapper.html +4 -4
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/text.html +1 -1
- django_unfold-0.63.0/src/unfold/templatetags/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templatetags/unfold.py +0 -1
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/widgets.py +6 -1
- django_unfold-0.61.0/src/unfold/static/unfold/css/styles.css +0 -2
- django_unfold-0.61.0/src/unfold/templates/registration/logged_out.html +0 -23
- django_unfold-0.61.0/src/unfold/templates/unfold/helpers/pagination_inline.html +0 -28
- django_unfold-0.61.0/src/unfold/templates/unfold/helpers/submit.html +0 -3
- {django_unfold-0.61.0 → django_unfold-0.63.0}/LICENSE.md +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/admin.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/apps.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/checks.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/components.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/__init__.py +0 -0
- {django_unfold-0.61.0/src/unfold/contrib/filters → django_unfold-0.63.0/src/unfold/contrib/constance}/__init__.py +0 -0
- {django_unfold-0.61.0/src/unfold/contrib/forms → django_unfold-0.63.0/src/unfold/contrib/filters}/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/admin/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/admin/autocomplete_filters.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/admin/choice_filters.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/admin/datetime_filters.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/admin/dropdown_filters.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/admin/mixins.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/admin/numeric_filters.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/admin/text_filters.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/apps.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/forms.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider/nouislider.min.css +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider/nouislider.min.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/static/unfold/filters/js/wnumb/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/static/unfold/filters/js/wnumb/wNumb.min.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_field.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +0 -0
- {django_unfold-0.61.0/src/unfold/contrib/guardian → django_unfold-0.63.0/src/unfold/contrib/forms}/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/apps.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix/trix.css +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix/trix.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.config.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/templates/unfold/forms/array.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/forms/templates/unfold/forms/wysiwyg.html +0 -0
- {django_unfold-0.61.0/src/unfold/contrib/import_export → django_unfold-0.63.0/src/unfold/contrib/guardian}/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/guardian/apps.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/change_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/field.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/guardian/templates/unfold/guardian/group_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/guardian/templates/unfold/guardian/user_form.html +0 -0
- {django_unfold-0.61.0/src/unfold/contrib/inlines → django_unfold-0.63.0/src/unfold/contrib/import_export}/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/apps.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/forms.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/base.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/export.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/import.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_confirm.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_errors.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_preview.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_validation.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.html +0 -0
- {django_unfold-0.61.0/src/unfold/contrib/location_field → django_unfold-0.63.0/src/unfold/contrib/inlines}/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/inlines/admin.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/inlines/apps.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/inlines/checks.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/inlines/forms.py +0 -0
- {django_unfold-0.61.0/src/unfold/contrib/simple_history → django_unfold-0.63.0/src/unfold/contrib/location_field}/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/location_field/apps.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/location_field/templates/location_field/map_widget.html +0 -0
- {django_unfold-0.61.0/src/unfold/templatetags → django_unfold-0.63.0/src/unfold/contrib/simple_history}/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/simple_history/apps.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_list.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/contrib/simple_history/templates/simple_history/submit_line.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/dataclasses.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/decorators.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/enums.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/exceptions.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/forms.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/layout.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/mixins/__init__.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/mixins/action_model_admin.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/mixins/base_model_admin.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/overrides.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/paginator.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/sections.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/settings.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/sites.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/admin/js/admin/RelatedObjectLookups.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/css/simplebar/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/css/simplebar/simplebar.css +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/fonts/inter/Inter-Bold.woff2 +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/fonts/inter/Inter-Medium.woff2 +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/fonts/inter/Inter-Regular.woff2 +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2 +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/fonts/inter/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/fonts/inter/styles.css +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/fonts/material-symbols/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/fonts/material-symbols/styles.css +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/alpine/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/alpine/alpine.anchor.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/alpine/alpine.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/alpine/alpine.persist.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/alpine/alpine.resize.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/alpine/alpine.sort.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/app.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/chart/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/chart/chart.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/htmx/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/htmx/htmx.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/simplebar/LICENSE +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/static/unfold/js/simplebar/simplebar.js +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/actions.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/app_index.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/app_list.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/auth/user/add_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/auth/user/change_password.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/base_site.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/change_form_object_tools.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/change_list.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/change_list_object_tools.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/date_hierarchy.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/delete_confirmation.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/delete_selected_confirmation.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/filter.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/includes/object_delete_summary.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/index.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/nav_sidebar.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/object_history.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/pagination.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/search_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/admin/submit_line.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/auth/widgets/read_only_password_hash.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/registration/password_change_done.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/registration/password_change_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/button.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/card.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/chart/bar.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/chart/cohort.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/chart/line.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/container.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/flex.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/icon.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/navigation.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/progress.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/separator.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/table.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/text.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/title.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/components/tracker.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/account_links.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/actions_row.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/add_link.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/app_list.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/app_list_default.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/attrs.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/boolean.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/breadcrumb_item.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/change_list_actions.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/change_list_filter.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/change_list_filter_actions.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/delete_submit_line.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/display_dropdown.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/display_header.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/display_label.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_delete.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_error.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_field.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_heading.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_row.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/edit_inline/tabular_title.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/empty_results.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/field.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/field_readonly.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/field_readonly_value.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/fieldset_row.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/fieldset_row_checkbox.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/fieldset_row_field.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/form_errors.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/form_label.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/header.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/header_back_button.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/help_text.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/history.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/label.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/language_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/language_switch.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/messages/debug.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/messages/error.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/messages/errornote.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/messages/info.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/messages/success.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/messages/warning.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/messages.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/navigation.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/pagination.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/pagination_current_item.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/pagination_default.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/pagination_ellipsis.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/pagination_infinite.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/popup_header.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/search_results.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/shortcut.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/site_branding.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/site_dropdown.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/site_icon.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/site_logo.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/tab_action.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/tab_items.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/theme_switch.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/userlinks.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/helpers/welcomemsg.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/layouts/base.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/layouts/base_simple.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/layouts/skeleton.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/layouts/unauthenticated.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/templatetags/preserve_changelist_filters.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/clearable_file_input.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/clearable_file_input_small.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/date.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/radio.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/radio_option.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/range.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/select.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/split_datetime.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/split_datetime_vertical.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/split_money.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/textarea.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/time.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold/widgets/url.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/display_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/errors.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/errors_formset.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/field.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/inputs.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/attrs.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/baseinput.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/button.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/buttonholder.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/checkbox.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/column.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/div.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/field_errors.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/fieldset.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/fieldset_subheader.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/help_text.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/help_text_and_errors.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/hr.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/radio_checkbox_select.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/row.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/layout/table_inline_formset.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/uni_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/whole_uni_form.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templates/unfold_crispy/whole_uni_formset.html +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/templatetags/unfold_list.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/typing.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/utils.py +0 -0
- {django_unfold-0.61.0 → django_unfold-0.63.0}/src/unfold/views.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: django-unfold
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.63.0
|
4
4
|
Summary: Modern Django admin theme for seamless interface development
|
5
5
|
License: MIT
|
6
6
|
Keywords: django,admin,tailwind,theme
|
@@ -59,11 +59,11 @@ Unfold Studio lets you visually customize your Django admin without writing code
|
|
59
59
|
|
60
60
|
## Fresh Features & Enhancements
|
61
61
|
|
62
|
+
- **django-constance**: Official support with a completely new design and UX improvements
|
62
63
|
- **Paginated inlines:** Break down large record sets into pages within inlines for better admin performance
|
63
64
|
- **Conditional fields:** Show or hide fields dynamically based on the values of other fields in the form
|
64
65
|
- **Infinite paginator:** Efficiently handle large datasets with seamless pagination that reduces server load
|
65
66
|
- **Checkbox & radio filters:** Enhanced filter options with checkbox and radio interfaces for intuitive filtering
|
66
|
-
- **Site dropdown:** Configurable dropdown menu in the header area for managing custom navigation links
|
67
67
|
|
68
68
|
## Core Features & Capabilities
|
69
69
|
|
@@ -74,6 +74,7 @@ Unfold Studio lets you visually customize your Django admin without writing code
|
|
74
74
|
- **Advanced filters**: Features custom dropdowns, autocomplete, numeric, datetime, and text field filters.
|
75
75
|
- **Dashboard tools**: Includes helpers for building custom dashboard pages.
|
76
76
|
- **UI components**: Offers reusable interface components such as cards, buttons, and charts.
|
77
|
+
- **Crispy forms**: Custom template pack for django-crispy-forms to style forms with Unfold's design system
|
77
78
|
- **WYSIWYG editor**: Built-in support for WYSIWYG editing through Trix.
|
78
79
|
- **Array widget:** Built-in widget for `django.contrib.postgres.fields.ArrayField`
|
79
80
|
- **Inline tabs:** Group inlines into tab navigation in the change form
|
@@ -96,8 +97,20 @@ Unfold Studio lets you visually customize your Django admin without writing code
|
|
96
97
|
- **Dependencies:** Built entirely on `django.contrib.admin`.
|
97
98
|
- **VS Code:** Project configuration and development container included.
|
98
99
|
|
100
|
+
## Third-party package support
|
101
|
+
|
102
|
+
- [django-guardian](https://github.com/django-guardian/django-guardian) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-guardian/)
|
103
|
+
- [django-import-export](https://github.com/django-import-export/django-import-export) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-import-export/)
|
104
|
+
- [django-simple-history](https://github.com/jazzband/django-simple-history) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-simple-history/)
|
105
|
+
- [django-constance](https://github.com/jazzband/django-constance) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-constance/)
|
106
|
+
- [django-celery-beat](https://github.com/celery/django-celery-beat) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-celery-beat/)
|
107
|
+
- [django-modeltranslation](https://github.com/deschler/django-modeltranslation) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-modeltranslation/)
|
108
|
+
- [django-money](https://github.com/django-money/django-money) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-money/)
|
109
|
+
- [django-location-field](https://github.com/caioariede/django-location-field) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-location-field/)
|
110
|
+
|
99
111
|
## Credits
|
100
112
|
|
113
|
+
- **Tailwind**: [Tailwind CSS](https://github.com/tailwindlabs/tailwindcss) - Licensed under the [MIT License](https://opensource.org/licenses/MIT).
|
101
114
|
- **Icons**: [Material Symbols](https://github.com/google/material-design-icons) - Licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).
|
102
115
|
- **Font**: [Inter](https://github.com/rsms/inter) - Licensed under the [SIL Open Font License 1.1](https://scripts.sil.org/OFL).
|
103
116
|
- **Charts**: [Chart.js](https://github.com/chartjs/Chart.js) - Licensed under the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -35,11 +35,11 @@ Unfold Studio lets you visually customize your Django admin without writing code
|
|
35
35
|
|
36
36
|
## Fresh Features & Enhancements
|
37
37
|
|
38
|
+
- **django-constance**: Official support with a completely new design and UX improvements
|
38
39
|
- **Paginated inlines:** Break down large record sets into pages within inlines for better admin performance
|
39
40
|
- **Conditional fields:** Show or hide fields dynamically based on the values of other fields in the form
|
40
41
|
- **Infinite paginator:** Efficiently handle large datasets with seamless pagination that reduces server load
|
41
42
|
- **Checkbox & radio filters:** Enhanced filter options with checkbox and radio interfaces for intuitive filtering
|
42
|
-
- **Site dropdown:** Configurable dropdown menu in the header area for managing custom navigation links
|
43
43
|
|
44
44
|
## Core Features & Capabilities
|
45
45
|
|
@@ -50,6 +50,7 @@ Unfold Studio lets you visually customize your Django admin without writing code
|
|
50
50
|
- **Advanced filters**: Features custom dropdowns, autocomplete, numeric, datetime, and text field filters.
|
51
51
|
- **Dashboard tools**: Includes helpers for building custom dashboard pages.
|
52
52
|
- **UI components**: Offers reusable interface components such as cards, buttons, and charts.
|
53
|
+
- **Crispy forms**: Custom template pack for django-crispy-forms to style forms with Unfold's design system
|
53
54
|
- **WYSIWYG editor**: Built-in support for WYSIWYG editing through Trix.
|
54
55
|
- **Array widget:** Built-in widget for `django.contrib.postgres.fields.ArrayField`
|
55
56
|
- **Inline tabs:** Group inlines into tab navigation in the change form
|
@@ -72,8 +73,20 @@ Unfold Studio lets you visually customize your Django admin without writing code
|
|
72
73
|
- **Dependencies:** Built entirely on `django.contrib.admin`.
|
73
74
|
- **VS Code:** Project configuration and development container included.
|
74
75
|
|
76
|
+
## Third-party package support
|
77
|
+
|
78
|
+
- [django-guardian](https://github.com/django-guardian/django-guardian) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-guardian/)
|
79
|
+
- [django-import-export](https://github.com/django-import-export/django-import-export) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-import-export/)
|
80
|
+
- [django-simple-history](https://github.com/jazzband/django-simple-history) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-simple-history/)
|
81
|
+
- [django-constance](https://github.com/jazzband/django-constance) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-constance/)
|
82
|
+
- [django-celery-beat](https://github.com/celery/django-celery-beat) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-celery-beat/)
|
83
|
+
- [django-modeltranslation](https://github.com/deschler/django-modeltranslation) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-modeltranslation/)
|
84
|
+
- [django-money](https://github.com/django-money/django-money) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-money/)
|
85
|
+
- [django-location-field](https://github.com/caioariede/django-location-field) - [Integration guide](https://unfoldadmin.com/docs/integrations/django-location-field/)
|
86
|
+
|
75
87
|
## Credits
|
76
88
|
|
89
|
+
- **Tailwind**: [Tailwind CSS](https://github.com/tailwindlabs/tailwindcss) - Licensed under the [MIT License](https://opensource.org/licenses/MIT).
|
77
90
|
- **Icons**: [Material Symbols](https://github.com/google/material-design-icons) - Licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).
|
78
91
|
- **Font**: [Inter](https://github.com/rsms/inter) - Licensed under the [SIL Open Font License 1.1](https://scripts.sil.org/OFL).
|
79
92
|
- **Charts**: [Chart.js](https://github.com/chartjs/Chart.js) - Licensed under the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -0,0 +1,32 @@
|
|
1
|
+
UNFOLD_CONSTANCE_ADDITIONAL_FIELDS = {
|
2
|
+
str: [
|
3
|
+
"django.forms.CharField",
|
4
|
+
{
|
5
|
+
"widget": "unfold.widgets.UnfoldAdminTextInputWidget",
|
6
|
+
},
|
7
|
+
],
|
8
|
+
int: [
|
9
|
+
"django.forms.IntegerField",
|
10
|
+
{
|
11
|
+
"widget": "unfold.widgets.UnfoldAdminIntegerFieldWidget",
|
12
|
+
},
|
13
|
+
],
|
14
|
+
bool: [
|
15
|
+
"django.forms.BooleanField",
|
16
|
+
{
|
17
|
+
"widget": "unfold.widgets.UnfoldBooleanSwitchWidget",
|
18
|
+
},
|
19
|
+
],
|
20
|
+
"file_field": [
|
21
|
+
"django.forms.fields.FileField",
|
22
|
+
{
|
23
|
+
"widget": "unfold.widgets.UnfoldAdminFileFieldWidget",
|
24
|
+
},
|
25
|
+
],
|
26
|
+
"image_field": [
|
27
|
+
"django.forms.fields.ImageField",
|
28
|
+
{
|
29
|
+
"widget": "unfold.widgets.UnfoldAdminImageFieldWidget",
|
30
|
+
},
|
31
|
+
],
|
32
|
+
}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
{% extends "admin/base_site.html" %}
|
2
|
+
|
3
|
+
{% load admin_list static i18n %}
|
4
|
+
|
5
|
+
{% block extrahead %}
|
6
|
+
{% url 'admin:jsi18n' as jsi18nurl %}
|
7
|
+
<script type="text/javascript" src="{{ jsi18nurl|default:'../../jsi18n/' }}"></script>
|
8
|
+
{{ block.super }}
|
9
|
+
{{ media.js }}
|
10
|
+
<script type="text/javascript" src="{% static 'admin/js/constance.js' %}"></script>
|
11
|
+
{% endblock %}
|
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
|
+
{% block content %}
|
32
|
+
<div id="content-main" class="constance">
|
33
|
+
<div id="changelist" class="flex flex-col gap-8 w-full">
|
34
|
+
<form id="changelist-form" action="" method="post" enctype="multipart/form-data" novalidate class="flex flex-col gap-8 w-full">
|
35
|
+
{% csrf_token %}
|
36
|
+
|
37
|
+
{% include "unfold/helpers/form_errors.html" with errors=form.non_field_errors %}
|
38
|
+
|
39
|
+
{% for field in form.hidden_fields %}
|
40
|
+
{{ field }}
|
41
|
+
{% endfor %}
|
42
|
+
|
43
|
+
{% if fieldsets %}
|
44
|
+
<div class="border border-base-200 rounded-default overflow-x-auto simplebar-horizontal-scrollbar-top dark:border-base-800" data-simplebar data-simplebar-auto-hide="false">
|
45
|
+
<table class="w-full border-collapse">
|
46
|
+
{% for fieldset in fieldsets %}
|
47
|
+
{% with config_values=fieldset.config_values %}
|
48
|
+
{% include "admin/constance/includes/results_list.html" %}
|
49
|
+
{% endwith %}
|
50
|
+
{% endfor %}
|
51
|
+
|
52
|
+
<tfoot>
|
53
|
+
<tr>
|
54
|
+
<td class="border-t border-base-200 px-3 py-2 dark:border-base-800" colspan="100%">
|
55
|
+
<div class="flex justify-end">
|
56
|
+
{% trans "Save" as title %}
|
57
|
+
{% include "unfold/helpers/submit.html" with title=title %}
|
58
|
+
</div>
|
59
|
+
</td>
|
60
|
+
</tr>
|
61
|
+
</tfoot>
|
62
|
+
</table>
|
63
|
+
</div>
|
64
|
+
{% else %}
|
65
|
+
{% include "admin/constance/includes/results_list.html" %}
|
66
|
+
{% endif %}
|
67
|
+
</form>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
{% endblock %}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
{% load admin_list static i18n %}
|
2
|
+
|
3
|
+
<tbody {% if fieldset.collapse %} x-data="{ rowsOpen: false }" {% endif %}>
|
4
|
+
<tr {% if fieldset.collapse %} x-on:click="rowsOpen = !rowsOpen" {% endif %} class="{% if fieldset.collapse %}cursor-pointer{% endif %}">
|
5
|
+
<th class="bg-base-50 border-t border-base-200 font-semibold px-3 py-2 text-left text-font-important-light dark:text-font-important-dark dark:border-base-800 dark:bg-white/[.04] {% if forloop.first %}border-t-0{% endif %}" colspan="100%">
|
6
|
+
{{ fieldset.title }}
|
7
|
+
|
8
|
+
{% if fieldset.collapse %}
|
9
|
+
<span class="material-symbols-outlined float-right select-none transition-all" title="{% trans "Collapse" %}" x-bind:class="rowsOpen ? 'rotate-180' : ''">
|
10
|
+
expand_more
|
11
|
+
</span>
|
12
|
+
{% endif %}
|
13
|
+
</th>
|
14
|
+
</tr>
|
15
|
+
|
16
|
+
<tr class="border-t border-base-200 dark:border-base-800 *:font-semibold *:px-3 *:py-2 *:text-left *:text-font-important-light dark:*:text-font-important-dark" {% if fieldset.collapse %}x-show="rowsOpen"{% endif %}>
|
17
|
+
<th>{% trans "Name" %}</th>
|
18
|
+
<th>{% trans "Value" %}</th>
|
19
|
+
<th>{% trans "Default" %}</th>
|
20
|
+
<th>{% trans "Code" %}</th>
|
21
|
+
<th>{% trans "Modified" %}</th>
|
22
|
+
<th></th>
|
23
|
+
</tr>
|
24
|
+
|
25
|
+
{% for item in config_values %}
|
26
|
+
<tr class="border-t border-base-200 h-[55px] *:px-3 *:py-2 *:align-middle dark:border-base-800" {% if fieldset.collapse %}x-show="rowsOpen"{% endif %}>
|
27
|
+
<th class="font-normal text-left">
|
28
|
+
{{ item.help_text|linebreaksbr }}
|
29
|
+
</th>
|
30
|
+
|
31
|
+
<td class="{% if item.form_field.errors %}group errors{% endif %}">
|
32
|
+
{{ item.form_field }}
|
33
|
+
|
34
|
+
{% include "unfold/helpers/form_errors.html" with errors=item.form_field.errors %}
|
35
|
+
</td>
|
36
|
+
|
37
|
+
<td>
|
38
|
+
{% if item.default %}
|
39
|
+
{% include "unfold/helpers/label.html" with text=item.default %}
|
40
|
+
{% else %}
|
41
|
+
-
|
42
|
+
{% endif %}
|
43
|
+
</td>
|
44
|
+
|
45
|
+
<td>
|
46
|
+
<a class="item-name item-anchor" href="#{{ item.name|slugify }}" tabindex="-1" id="{{ item.name|slugify }}" title="Link to this setting">
|
47
|
+
{% include "unfold/helpers/label.html" with text=item.name type="info" %}
|
48
|
+
</a>
|
49
|
+
</td>
|
50
|
+
|
51
|
+
<td>
|
52
|
+
{% include "unfold/helpers/boolean.html" with value=item.modified %}
|
53
|
+
</td>
|
54
|
+
|
55
|
+
<td class="w-px">
|
56
|
+
{% if not item.is_file %}
|
57
|
+
<a href="#"
|
58
|
+
tabindex="-1"
|
59
|
+
class="flex items-center gap-1 reset-link whitespace-nowrap"
|
60
|
+
data-default="{% spaceless %}{% if item.is_checkbox %}{% if item.raw_default %} true {% else %} false {% endif %}{% elif item.is_date %}{{ item.raw_default|date:"U" }}{% elif item.is_datetime %}{{ item.raw_default|date:"U" }}{% else %}{{ item.default }}{% endif %}{% endspaceless %}"
|
61
|
+
data-field-type="{% spaceless %}{% if item.is_checkbox %}checkbox{% elif item.is_datetime %}datetime{% elif item.is_date %}date{% endif %}{% endspaceless %}"
|
62
|
+
data-field-id="{{ item.form_field.auto_id }}">
|
63
|
+
<span class="material-symbols-outlined text-base-400 hover:text-base-700 dark:border-base-700 dark:text-base-500 dark:hover:text-base-200" title="{% trans "Reset to default" %}">
|
64
|
+
refresh
|
65
|
+
</span>
|
66
|
+
</a>
|
67
|
+
{% endif %}
|
68
|
+
</td>
|
69
|
+
</tr>
|
70
|
+
{% endfor %}
|
71
|
+
</tbody>
|
@@ -33,14 +33,25 @@ WYSIWYG_CLASSES = [
|
|
33
33
|
class ArrayWidget(MultiWidget):
|
34
34
|
template_name = "unfold/forms/array.html"
|
35
35
|
|
36
|
-
def __init__(
|
36
|
+
def __init__(
|
37
|
+
self,
|
38
|
+
widget_class: Optional[type[Widget]] = None,
|
39
|
+
*args: Any,
|
40
|
+
**kwargs: Any,
|
41
|
+
) -> None:
|
37
42
|
if "choices" in kwargs:
|
38
43
|
self.choices = kwargs["choices"]
|
39
44
|
|
45
|
+
if widget_class is not None:
|
46
|
+
self.widget_class = widget_class
|
47
|
+
|
40
48
|
widgets = [self.get_widget_instance()]
|
41
49
|
super().__init__(widgets)
|
42
50
|
|
43
51
|
def get_widget_instance(self) -> Any:
|
52
|
+
if hasattr(self, "widget_class"):
|
53
|
+
return self.widget_class()
|
54
|
+
|
44
55
|
if hasattr(self, "choices"):
|
45
56
|
return UnfoldAdminSelectWidget(choices=self.choices)
|
46
57
|
|
@@ -139,7 +139,7 @@ class UnfoldAdminReadonlyField(helpers.AdminReadonlyField):
|
|
139
139
|
result_repr = display_for_field(value, f, self.empty_value_display)
|
140
140
|
return conditional_escape(result_repr)
|
141
141
|
elif isinstance(f, models.URLField):
|
142
|
-
return format_html(
|
142
|
+
return value and format_html(
|
143
143
|
'<a href="{}" class="text-primary-600 dark:text-primary-500">{}</a>',
|
144
144
|
value,
|
145
145
|
value,
|
@@ -310,7 +310,7 @@
|
|
310
310
|
};
|
311
311
|
|
312
312
|
// Tabular inlines ---------------------------------------------------------
|
313
|
-
$.fn.tabularFormset = function (selector, options) {
|
313
|
+
$.fn.tabularFormset = function (selector, options, callback = null) {
|
314
314
|
const $rows = $(this);
|
315
315
|
|
316
316
|
const reinitDateTimeShortCuts = function () {
|
@@ -370,11 +370,15 @@
|
|
370
370
|
addButton: options.addButton,
|
371
371
|
});
|
372
372
|
|
373
|
+
if (typeof callback === "function") {
|
374
|
+
callback();
|
375
|
+
}
|
376
|
+
|
373
377
|
return $rows;
|
374
378
|
};
|
375
379
|
|
376
380
|
// Stacked inlines ---------------------------------------------------------
|
377
|
-
$.fn.stackedFormset = function (selector, options) {
|
381
|
+
$.fn.stackedFormset = function (selector, options, callback = null) {
|
378
382
|
const $rows = $(this);
|
379
383
|
const updateInlineLabel = function (row) {
|
380
384
|
$(selector)
|
@@ -449,26 +453,47 @@
|
|
449
453
|
addButton: options.addButton,
|
450
454
|
});
|
451
455
|
|
456
|
+
if (typeof callback === "function") {
|
457
|
+
callback();
|
458
|
+
}
|
459
|
+
|
452
460
|
return $rows;
|
453
461
|
};
|
454
462
|
|
463
|
+
$(window).on("htmx:afterSettle", function (event) {
|
464
|
+
if (event.target.classList.contains("js-inline-admin-formset")) {
|
465
|
+
initInlines($(event.target), function () {
|
466
|
+
if (typeof DateTimeShortcuts !== "undefined") {
|
467
|
+
$(".datetimeshortcuts").remove();
|
468
|
+
DateTimeShortcuts.init();
|
469
|
+
}
|
470
|
+
|
471
|
+
$(event.target).find(".admin-autocomplete").djangoAdminSelect2();
|
472
|
+
});
|
473
|
+
}
|
474
|
+
});
|
475
|
+
|
455
476
|
$(document).ready(function () {
|
456
477
|
$(".js-inline-admin-formset").each(function () {
|
457
|
-
|
458
|
-
inlineOptions = data.inlineFormset;
|
459
|
-
let selector;
|
460
|
-
switch (data.inlineType) {
|
461
|
-
case "stacked":
|
462
|
-
selector = inlineOptions.name + "-group .inline-related";
|
463
|
-
$(selector).stackedFormset(selector, inlineOptions.options);
|
464
|
-
break;
|
465
|
-
case "tabular":
|
466
|
-
selector =
|
467
|
-
inlineOptions.name +
|
468
|
-
"-group .tabular.inline-related tbody:last > tr.form-row";
|
469
|
-
$(selector).tabularFormset(selector, inlineOptions.options);
|
470
|
-
break;
|
471
|
-
}
|
478
|
+
initInlines(this);
|
472
479
|
});
|
473
480
|
});
|
481
|
+
|
482
|
+
function initInlines(el, callback = null) {
|
483
|
+
const data = $(el).data(),
|
484
|
+
inlineOptions = data.inlineFormset;
|
485
|
+
let selector;
|
486
|
+
switch (data.inlineType) {
|
487
|
+
case "stacked":
|
488
|
+
selector = inlineOptions.name + "-group .inline-related";
|
489
|
+
$(selector).stackedFormset(selector, inlineOptions.options, callback);
|
490
|
+
break;
|
491
|
+
case "tabular":
|
492
|
+
selector =
|
493
|
+
inlineOptions.name +
|
494
|
+
"-group .tabular.inline-related tbody:last > tr.form-row";
|
495
|
+
$(selector).tabularFormset(selector, inlineOptions.options, callback);
|
496
|
+
break;
|
497
|
+
}
|
498
|
+
}
|
474
499
|
}
|