django-unfold 0.36.0__tar.gz → 0.38.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- django_unfold-0.38.0/PKG-INFO +70 -0
- django_unfold-0.38.0/README.md +45 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/pyproject.toml +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/admin.py +2 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_date_range.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_datetime_range.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_range.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_single.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_numeric_slider.html +4 -4
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/templates/unfold/forms/helpers/toolbar.html +6 -6
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/widgets.py +1 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_group.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage_user.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/unfold/guardian/group_form.html +5 -5
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/unfold/guardian/user_form.html +5 -5
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/forms.py +1 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_form.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import.html +13 -13
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_errors.html +3 -3
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/admin.py +1 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_list.html +8 -8
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/templates/simple_history/submit_line.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/settings.py +26 -1
- django_unfold-0.38.0/src/unfold/static/unfold/css/styles.css +1 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/app.js +7 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/styles.css +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/app_list.html +3 -3
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/auth/user/add_form.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/base_site.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_form.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_list.html +8 -13
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_list_results.html +2 -2
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/delete_confirmation.html +6 -6
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/delete_selected_confirmation.html +5 -5
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/edit_inline/stacked.html +7 -5
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/edit_inline/tabular.html +3 -3
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/filter.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/includes/fieldset.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/includes/object_delete_summary.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/login.html +2 -2
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/nav_sidebar.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/search_form.html +1 -1
- django_unfold-0.38.0/src/unfold/templates/auth/widgets/read_only_password_hash.html +13 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/registration/logged_out.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/registration/password_change_done.html +3 -3
- django_unfold-0.38.0/src/unfold/templates/unfold/change_list_filter.html +67 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/card.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/navigation.html +1 -1
- django_unfold-0.38.0/src/unfold/templates/unfold/components/title.html +3 -0
- django_unfold-0.38.0/src/unfold/templates/unfold/helpers/actions_row.html +21 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/app_list.html +8 -8
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/display_header.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/fieldset_row.html +2 -2
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/fieldsets_tabs.html +4 -4
- django_unfold-0.38.0/src/unfold/templates/unfold/helpers/form_label.html +7 -0
- django_unfold-0.38.0/src/unfold/templates/unfold/helpers/label.html +16 -0
- django_unfold-0.38.0/src/unfold/templates/unfold/helpers/messages.html +20 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/navigation.html +2 -2
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/search.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/tab_action.html +1 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/tab_list.html +2 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/welcomemsg.html +3 -3
- django_unfold-0.38.0/src/unfold/templates/unfold/layouts/skeleton.html +78 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/clearable_file_input.html +2 -2
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/clearable_file_input_small.html +10 -2
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/foreign_key_raw_id.html +6 -4
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/radio_option.html +3 -3
- django_unfold-0.38.0/src/unfold/templates/unfold/widgets/range.html +11 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/related_widget_wrapper.html +6 -6
- django_unfold-0.38.0/src/unfold/templates/unfold/widgets/url.html +7 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templatetags/unfold_list.py +0 -7
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/utils.py +6 -1
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/widgets.py +26 -6
- django_unfold-0.36.0/PKG-INFO +0 -1455
- django_unfold-0.36.0/README.md +0 -1430
- django_unfold-0.36.0/src/unfold/static/unfold/css/styles.css +0 -1
- django_unfold-0.36.0/src/unfold/templates/auth/widgets/read_only_password_hash.html +0 -13
- django_unfold-0.36.0/src/unfold/templates/unfold/change_list_filter.html +0 -51
- django_unfold-0.36.0/src/unfold/templates/unfold/components/title.html +0 -3
- django_unfold-0.36.0/src/unfold/templates/unfold/helpers/actions_row.html +0 -21
- django_unfold-0.36.0/src/unfold/templates/unfold/helpers/form_label.html +0 -7
- django_unfold-0.36.0/src/unfold/templates/unfold/helpers/label.html +0 -16
- django_unfold-0.36.0/src/unfold/templates/unfold/helpers/messages.html +0 -20
- django_unfold-0.36.0/src/unfold/templates/unfold/layouts/skeleton.html +0 -78
- django_unfold-0.36.0/src/unfold/templates/unfold/widgets/range.html +0 -11
- {django_unfold-0.36.0 → django_unfold-0.38.0}/LICENSE.md +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/__init__.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/apps.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/checks.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/__init__.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/__init__.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/admin.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/apps.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/forms.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/css/nouislider.min.css +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/js/DateTimeShortcuts.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/js/admin-numeric-filter.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/js/nouislider.min.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/static/unfold/filters/js/wNumb.min.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/filters/templates/unfold/filters/filters_field.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/__init__.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/apps.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/static/unfold/forms/css/trix.css +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.config.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/static/unfold/forms/js/trix.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/templates/unfold/forms/array.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/forms/templates/unfold/forms/wysiwyg.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/__init__.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/apps.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/change_form.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/field.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/guardian/templates/admin/guardian/model/obj_perms_manage.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/__init__.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/apps.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/base.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_export_item.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_export.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/change_list_import_item.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/export.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_confirm.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_form.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_preview.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/import_validation.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/import_export/templates/admin/import_export/resource_fields_list.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/__init__.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/apps.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/checks.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/inlines/forms.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/__init__.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/apps.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/contrib/simple_history/templates/simple_history/object_history_form.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/dataclasses.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/decorators.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/exceptions.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/fields.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/forms.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/sites.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/css/simplebar.css +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/Inter-Bold.woff2 +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/Inter-Medium.woff2 +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/Inter-Regular.woff2 +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/Inter-SemiBold.woff2 +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/inter/styles.css +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/material-symbols/Material-Symbols-Outlined.woff2 +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/fonts/material-symbols/styles.css +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/alpine.anchor.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/alpine.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/alpine.persist.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/chart.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/htmx.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/select2.init.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/static/unfold/js/simplebar.js +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/actions.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/app_index.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/auth/user/change_password.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/base.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_form_object_tools.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/change_list_object_tools.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/date_hierarchy.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/index.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/object_history.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/pagination.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/admin/submit_line.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/registration/password_change_form.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/button.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/chart/bar.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/chart/line.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/container.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/flex.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/icon.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/progress.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/separator.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/table.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/components/text.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/account_links.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/add_link.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/app_list_default.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/attrs.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/boolean.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/breadcrumb_item.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/display_label.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/field.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/field_readonly.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/field_readonly_value.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/form_errors.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/header.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/help_text.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/history.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/messages/error.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/messages/errornote.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/messages/info.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/pagination_current_item.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/pagination_ellipsis.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/search_results.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/site_icon.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/site_logo.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/submit.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/theme_switch.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/helpers/userlinks.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/layouts/base.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/layouts/base_simple.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/date.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/radio.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/split_datetime.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/split_datetime_vertical.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/split_money.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/textarea.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/textarea_expandable.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templates/unfold/widgets/time.html +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templatetags/__init__.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/templatetags/unfold.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/typing.py +0 -0
- {django_unfold-0.36.0 → django_unfold-0.38.0}/src/unfold/views.py +0 -0
@@ -0,0 +1,70 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: django-unfold
|
3
|
+
Version: 0.38.0
|
4
|
+
Summary: Modern Django admin theme for seamless interface development
|
5
|
+
Home-page: https://unfoldadmin.com
|
6
|
+
License: MIT
|
7
|
+
Keywords: django,admin,tailwind,theme
|
8
|
+
Requires-Python: >=3.8
|
9
|
+
Classifier: Environment :: Web Environment
|
10
|
+
Classifier: Framework :: Django
|
11
|
+
Classifier: Intended Audience :: Developers
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
13
|
+
Classifier: Operating System :: OS Independent
|
14
|
+
Classifier: Programming Language :: Python
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
21
|
+
Requires-Dist: django (>=3.2)
|
22
|
+
Project-URL: Repository, https://github.com/unfoldadmin/django-unfold
|
23
|
+
Description-Content-Type: text/markdown
|
24
|
+
|
25
|
+
[](https://github.com/unfoldadmin/django-unfold/assets/10785882/291e69c9-abdd-4f7e-a0d6-2af210a9013a#gh-light-mode-only)
|
26
|
+
|
27
|
+
[](https://github.com/unfoldadmin/django-unfold/assets/10785882/94a2e90f-924a-4aaf-b6d9-cb1592000c55#gh-dark-mode-only)
|
28
|
+
|
29
|
+
## Unfold Django Admin Theme
|
30
|
+
|
31
|
+
[](https://github.com/unfoldadmin/django-unfold/actions?query=workflow%3Arelease)
|
32
|
+
[](https://pypi.org/project/django-unfold/)
|
33
|
+

|
34
|
+

|
35
|
+
|
36
|
+
Unfold is a theme for Django admin incorporating most common practices for building full-fledged admin areas. It is designed to work on top of default administration provided by Django.
|
37
|
+
|
38
|
+
- **Documentation:** full docs are available at [unfoldadmin.com/docs](https://unfoldadmin.com/docs?utm_medium=github&utm_source=unfold)
|
39
|
+
- **Unfold:** demo site is available at [unfoldadmin.com](https://unfoldadmin.com?utm_medium=github&utm_source=unfold)
|
40
|
+
- **Formula:** repository with demo implementation at [github.com/unfoldadmin/formula](https://github.com/unfoldadmin/formula)
|
41
|
+
- **Turbo:** Django & Next.js boilerplate implementing Unfold at [github.com/unfoldadmin/turbo](https://github.com/unfoldadmin/turbo)
|
42
|
+
|
43
|
+
## Are you using Unfold and need a help?
|
44
|
+
|
45
|
+
Did you decide to start using Unfold but you don't have time to make the switch from native Django admin? [Get in touch with us](https://unfoldadmin.com/?utm_medium=github&utm_source=unfold) and let's supercharge development by using our know-how.
|
46
|
+
|
47
|
+
## Features
|
48
|
+
|
49
|
+
- **Visual**: provides a new user interface based on Tailwind CSS framework
|
50
|
+
- **Sidebar:** simplifies definition of custom sidebar navigation with icons
|
51
|
+
- **Dark mode:** supports both light and dark mode versions
|
52
|
+
- **Configuration:** most of the basic options can be changed in settings.py
|
53
|
+
- **Dependencies:** completely based only on `django.contrib.admin`
|
54
|
+
- **Actions:** multiple ways how to define actions within different parts of admin
|
55
|
+
- **WYSIWYG:** built-in support for WYSIWYG (Trix)
|
56
|
+
- **Array widget:** built-in widget for `django.contrib.postgres.fields.ArrayField`
|
57
|
+
- **Filters:** custom dropdown, numeric, datetime, and text fields
|
58
|
+
- **Dashboard:** custom components for rapid dashboard development
|
59
|
+
- **Inline tabs:** group inlines into tab navigation in the change form
|
60
|
+
- **Model tabs:** define custom tab navigations for models
|
61
|
+
- **Fieldset tabs:** merge several fieldsets into tabs in the change form
|
62
|
+
- **Colors:** possibility to override the default color scheme
|
63
|
+
- **Changeform modes:** display fields in the change form in compressed mode
|
64
|
+
- **Third party packages:** default support for multiple popular applications
|
65
|
+
- **Environment label**: distinguish between environments by displaying a label
|
66
|
+
- **Nonrelated inlines**: displays nonrelated model as inline in changeform
|
67
|
+
- **Parallel admin**: support for default admin in parallel with Unfold. [Admin migration guide](https://unfoldadmin.com/blog/migrating-django-admin-unfold/?utm_medium=github&utm_source=unfold)
|
68
|
+
- **Favicons**: built-in support for configuring various site favicons
|
69
|
+
- **VS Code**: project configuration and development container is included
|
70
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
[](https://github.com/unfoldadmin/django-unfold/assets/10785882/291e69c9-abdd-4f7e-a0d6-2af210a9013a#gh-light-mode-only)
|
2
|
+
|
3
|
+
[](https://github.com/unfoldadmin/django-unfold/assets/10785882/94a2e90f-924a-4aaf-b6d9-cb1592000c55#gh-dark-mode-only)
|
4
|
+
|
5
|
+
## Unfold Django Admin Theme
|
6
|
+
|
7
|
+
[](https://github.com/unfoldadmin/django-unfold/actions?query=workflow%3Arelease)
|
8
|
+
[](https://pypi.org/project/django-unfold/)
|
9
|
+

|
10
|
+

|
11
|
+
|
12
|
+
Unfold is a theme for Django admin incorporating most common practices for building full-fledged admin areas. It is designed to work on top of default administration provided by Django.
|
13
|
+
|
14
|
+
- **Documentation:** full docs are available at [unfoldadmin.com/docs](https://unfoldadmin.com/docs?utm_medium=github&utm_source=unfold)
|
15
|
+
- **Unfold:** demo site is available at [unfoldadmin.com](https://unfoldadmin.com?utm_medium=github&utm_source=unfold)
|
16
|
+
- **Formula:** repository with demo implementation at [github.com/unfoldadmin/formula](https://github.com/unfoldadmin/formula)
|
17
|
+
- **Turbo:** Django & Next.js boilerplate implementing Unfold at [github.com/unfoldadmin/turbo](https://github.com/unfoldadmin/turbo)
|
18
|
+
|
19
|
+
## Are you using Unfold and need a help?
|
20
|
+
|
21
|
+
Did you decide to start using Unfold but you don't have time to make the switch from native Django admin? [Get in touch with us](https://unfoldadmin.com/?utm_medium=github&utm_source=unfold) and let's supercharge development by using our know-how.
|
22
|
+
|
23
|
+
## Features
|
24
|
+
|
25
|
+
- **Visual**: provides a new user interface based on Tailwind CSS framework
|
26
|
+
- **Sidebar:** simplifies definition of custom sidebar navigation with icons
|
27
|
+
- **Dark mode:** supports both light and dark mode versions
|
28
|
+
- **Configuration:** most of the basic options can be changed in settings.py
|
29
|
+
- **Dependencies:** completely based only on `django.contrib.admin`
|
30
|
+
- **Actions:** multiple ways how to define actions within different parts of admin
|
31
|
+
- **WYSIWYG:** built-in support for WYSIWYG (Trix)
|
32
|
+
- **Array widget:** built-in widget for `django.contrib.postgres.fields.ArrayField`
|
33
|
+
- **Filters:** custom dropdown, numeric, datetime, and text fields
|
34
|
+
- **Dashboard:** custom components for rapid dashboard development
|
35
|
+
- **Inline tabs:** group inlines into tab navigation in the change form
|
36
|
+
- **Model tabs:** define custom tab navigations for models
|
37
|
+
- **Fieldset tabs:** merge several fieldsets into tabs in the change form
|
38
|
+
- **Colors:** possibility to override the default color scheme
|
39
|
+
- **Changeform modes:** display fields in the change form in compressed mode
|
40
|
+
- **Third party packages:** default support for multiple popular applications
|
41
|
+
- **Environment label**: distinguish between environments by displaying a label
|
42
|
+
- **Nonrelated inlines**: displays nonrelated model as inline in changeform
|
43
|
+
- **Parallel admin**: support for default admin in parallel with Unfold. [Admin migration guide](https://unfoldadmin.com/blog/migrating-django-admin-unfold/?utm_medium=github&utm_source=unfold)
|
44
|
+
- **Favicons**: built-in support for configuring various site favicons
|
45
|
+
- **VS Code**: project configuration and development container is included
|
@@ -49,6 +49,7 @@ from .widgets import (
|
|
49
49
|
UnfoldAdminSplitDateTimeWidget,
|
50
50
|
UnfoldAdminTextareaWidget,
|
51
51
|
UnfoldAdminTextInputWidget,
|
52
|
+
UnfoldAdminURLInputWidget,
|
52
53
|
UnfoldAdminUUIDInputWidget,
|
53
54
|
UnfoldBooleanSwitchWidget,
|
54
55
|
UnfoldBooleanWidget,
|
@@ -79,7 +80,7 @@ FORMFIELD_OVERRIDES = {
|
|
79
80
|
models.TimeField: {"widget": UnfoldAdminSingleTimeWidget},
|
80
81
|
models.EmailField: {"widget": UnfoldAdminEmailInputWidget},
|
81
82
|
models.CharField: {"widget": UnfoldAdminTextInputWidget},
|
82
|
-
models.URLField: {"widget":
|
83
|
+
models.URLField: {"widget": UnfoldAdminURLInputWidget},
|
83
84
|
models.GenericIPAddressField: {"widget": UnfoldAdminTextInputWidget},
|
84
85
|
models.UUIDField: {"widget": UnfoldAdminUUIDInputWidget},
|
85
86
|
models.TextField: {"widget": UnfoldAdminTextareaWidget},
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
{% with choices.0 as choice %}
|
4
4
|
<div class="flex flex-col mb-6">
|
5
|
-
<h3 class="font-semibold mb-2 text-
|
5
|
+
<h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
7
|
<div class="flex flex-col space-y-4">
|
8
8
|
{% for field in choice.form %}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
{% with choices.0 as choice %}
|
4
4
|
<div class="flex flex-col mb-6">
|
5
|
-
<h3 class="font-semibold mb-2 text-
|
5
|
+
<h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
7
|
<div class="flex flex-col space-y-4">
|
8
8
|
{% for field in choice.form %}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
{% with choices.0 as choice %}
|
4
4
|
<div class="flex flex-col mb-6">
|
5
|
-
<h3 class="font-semibold mb-2 text-
|
5
|
+
<h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
7
|
<div class="flex flex-row gap-4">
|
8
8
|
{% for field in choice.form %}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
{% with choices.0 as choice %}
|
4
4
|
<div class="flex flex-col mb-6">
|
5
|
-
<h3 class="font-semibold mb-2 text-
|
5
|
+
<h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}</h3>
|
6
6
|
|
7
7
|
{% for field in choice.form %}
|
8
8
|
<div class="flex flex-row flex-wrap group relative{% if field.errors %} errors{% endif %}">
|
@@ -3,17 +3,17 @@
|
|
3
3
|
|
4
4
|
{% with choices.0 as choice %}
|
5
5
|
<div class="admin-numeric-filter-wrapper mb-6">
|
6
|
-
<h3 class="font-semibold mb-2 text-
|
6
|
+
<h3 class="font-semibold mb-2 text-font-important-light dark:text-font-important-dark">
|
7
7
|
{% blocktrans with filter_title=title %}By {{ filter_title }}{% endblocktrans %}
|
8
8
|
</h3>
|
9
9
|
|
10
10
|
{% if choice.min is not None and choice.max is not None and choice.step %}
|
11
11
|
<div class="admin-numeric-filter-slider-tooltips">
|
12
|
-
<span class="admin-numeric-filter-slider-tooltip-from border cursor-not-allowed flex flex-grow flex-row items-center mr-auto rounded-md shadow-sm px-3 py-2 w-full dark:bg-gray-900 dark:border-gray-700 dark:text-
|
12
|
+
<span class="admin-numeric-filter-slider-tooltip-from border cursor-not-allowed flex flex-grow flex-row items-center mr-auto rounded-md shadow-sm px-3 py-2 w-full dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
|
13
13
|
{{ choice.value_from }}
|
14
14
|
</span>
|
15
15
|
|
16
|
-
<span class="admin-numeric-filter-slider-tooltip-to border cursor-not-allowed flex flex-grow flex-row items-center rounded-md shadow-sm px-3 py-2 w-full dark:bg-gray-900 dark:border-gray-700 dark:text-
|
16
|
+
<span class="admin-numeric-filter-slider-tooltip-to border cursor-not-allowed flex flex-grow flex-row items-center rounded-md shadow-sm px-3 py-2 w-full dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
|
17
17
|
{{ choice.value_to }}
|
18
18
|
</span>
|
19
19
|
</div>
|
@@ -25,7 +25,7 @@
|
|
25
25
|
{{ choice.form.as_p }}
|
26
26
|
</div>
|
27
27
|
{% else %}
|
28
|
-
<div class="admin-numeric-filter-slider-error dark:text-
|
28
|
+
<div class="admin-numeric-filter-slider-error dark:text-font-default-dark">
|
29
29
|
<p>
|
30
30
|
{% trans 'Not enough data.' %}
|
31
31
|
</p>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
<template id="trix-toolbar">
|
4
4
|
<div class="bg-gray-50 flex flex-row flex-wrap border group-[.errors]:border-t-red-600 gap-4 group-[.errors]:border-x-red-600 px-3 py-2 relative rounded-t-md shadow-sm w-full dark:bg-white/[.02] dark:border-gray-700 dark:group-[.errors]:border-t-red-500 dark:group-[.errors]:border-x-red-500">
|
5
|
-
<div data-trix-button-group="text-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm shrink-0 dark:bg-gray-900 dark:border-gray-700 dark:text-
|
5
|
+
<div data-trix-button-group="text-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm shrink-0 dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
|
6
6
|
{% spaceless %}
|
7
7
|
<button type="button" data-trix-attribute="p" data-trix-key="p" title="{% trans "Paragraph" %}" tabindex="-1" class="border-r cursor-pointer flex items-center h-8 justify-center transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
|
8
8
|
<span class="material-symbols-outlined">format_paragraph</span>
|
@@ -30,7 +30,7 @@
|
|
30
30
|
{% endspaceless %}
|
31
31
|
</div>
|
32
32
|
|
33
|
-
<div data-trix-button-group="block-headings" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-
|
33
|
+
<div data-trix-button-group="block-headings" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
|
34
34
|
{% spaceless %}
|
35
35
|
<button type="button" data-trix-attribute="heading1" title="{% trans "Heading" %} 1" tabindex="-1" class="border-r cursor-pointer flex items-center h-8 justify-center transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
|
36
36
|
<span class="material-symbols-outlined">format_h1</span>
|
@@ -50,7 +50,7 @@
|
|
50
50
|
{% endspaceless %}
|
51
51
|
</div>
|
52
52
|
|
53
|
-
<div data-trix-button-group="block-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-
|
53
|
+
<div data-trix-button-group="block-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
|
54
54
|
{% spaceless %}
|
55
55
|
<button type="button" data-trix-attribute="quote" title="{% trans "Quote" %}" tabindex="-1" class="border-r cursor-pointer flex items-center h-8 justify-center transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
|
56
56
|
<span class="material-symbols-outlined">format_quote</span>
|
@@ -79,7 +79,7 @@
|
|
79
79
|
</div>
|
80
80
|
|
81
81
|
<div class="lg:ml-auto">
|
82
|
-
<div data-trix-button-group="history-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-
|
82
|
+
<div data-trix-button-group="history-tools" class="bg-white border border-md flex flex-row rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
|
83
83
|
<button type="button" data-trix-action="undo" data-trix-key="z" title="{% trans "Undo" %}" tabindex="-1" class="border-r cursor-pointer flex items-center h-8 justify-center transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
|
84
84
|
<span class="material-symbols-outlined">undo</span>
|
85
85
|
</button>
|
@@ -92,9 +92,9 @@
|
|
92
92
|
<div data-trix-dialogs>
|
93
93
|
<div class="absolute bg-white border-b -bottom-px left-0 px-4 py-2 right-0 shadow-sm translate-y-full dark:bg-gray-900 dark:border-gray-700" data-trix-dialog="href" data-trix-dialog-attribute="href">
|
94
94
|
<div class="flex flex-row">
|
95
|
-
<input type="url" name="href" class="border bg-white font-medium px-3 rounded-md shadow-sm text-gray-500 text-sm focus:ring focus:ring-primary-300 focus:border-primary-600 focus:outline-none group-[.errors]:border-red-600 group-[.errors]:focus:ring-red-200 dark:bg-gray-900 dark:border-gray-700 dark:text-
|
95
|
+
<input type="url" name="href" class="border bg-white font-medium px-3 rounded-md shadow-sm text-gray-500 text-sm focus:ring focus:ring-primary-300 focus:border-primary-600 focus:outline-none group-[.errors]:border-red-600 group-[.errors]:focus:ring-red-200 dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark dark:focus:ring-primary-600/30 dark:group-[.errors]:border-red-500 dark:group-[.errors]:focus:ring-red-600/40" placeholder="{% trans "Enter an URL" %}" required data-trix-input>
|
96
96
|
|
97
|
-
<div class="bg-white border border-md flex flex-row ml-4 rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-
|
97
|
+
<div class="bg-white border border-md flex flex-row ml-4 rounded-md shadow-sm dark:bg-gray-900 dark:border-gray-700 dark:text-font-default-dark">
|
98
98
|
<button type="button" data-trix-method="setAttribute" title="{% trans "Link" %}" class="border-r cursor-pointer flex items-center h-8 justify-center text-gray-400 transition-colors w-8 hover:text-primary-600 dark:border-gray-700">
|
99
99
|
<span class="material-symbols-outlined">link</span>
|
100
100
|
</button>
|
@@ -3,25 +3,25 @@
|
|
3
3
|
<form method="post">
|
4
4
|
{% csrf_token %}
|
5
5
|
|
6
|
-
<h2 class="font-semibold mb-3
|
6
|
+
<h2 class="font-semibold mb-3 text-font-important-light dark:text-font-important-dark">
|
7
7
|
{% trans "Group permissions" %}
|
8
8
|
</h2>
|
9
9
|
|
10
10
|
{% if groups_perms.items %}
|
11
11
|
<table id="group-permissions" class="border-gray-200 border-spacing-none border-separate mb-6 w-full lg:border lg:rounded-md lg:shadow-sm lg:dark:border-gray-800">
|
12
|
-
<thead class="hidden lg:table-header-group text-
|
12
|
+
<thead class="hidden lg:table-header-group text-font-important-light dark:text-font-important-dark">
|
13
13
|
<tr>
|
14
|
-
<th class="align-middle font-
|
14
|
+
<th class="align-middle font-semibold px-3 py-2 text-left">
|
15
15
|
{% trans "Group" %}
|
16
16
|
</th>
|
17
17
|
|
18
18
|
{% for perm in model_perms %}
|
19
|
-
<th class="align-middle font-
|
19
|
+
<th class="align-middle font-semibold px-3 py-2 text-left">
|
20
20
|
{{ perm.name }}
|
21
21
|
</th>
|
22
22
|
{% endfor %}
|
23
23
|
|
24
|
-
<th class="align-middle font-
|
24
|
+
<th class="align-middle font-semibold px-3 py-2 text-right">
|
25
25
|
{% trans "Action" %}
|
26
26
|
</th>
|
27
27
|
</tr>
|
@@ -3,25 +3,25 @@
|
|
3
3
|
<form method="post">
|
4
4
|
{% csrf_token %}
|
5
5
|
|
6
|
-
<h2 class="font-
|
6
|
+
<h2 class="font-semibold mb-3 text-font-important-light dark:text-font-important-dark">
|
7
7
|
{% trans "User permissions" %}
|
8
8
|
</h2>
|
9
9
|
|
10
10
|
{% if users_perms.items %}
|
11
11
|
<table id="user-permissions" class="border-gray-200 border-spacing-none border-separate mb-6 w-full lg:border lg:rounded-md lg:shadow-sm lg:dark:border-gray-800">
|
12
|
-
<thead class="hidden lg:table-header-group text-
|
12
|
+
<thead class="hidden lg:table-header-group text-font-important-light dark:text-font-important-dark">
|
13
13
|
<tr>
|
14
|
-
<th class="align-middle font-
|
14
|
+
<th class="align-middle font-semibold px-3 py-2 text-left">
|
15
15
|
{% trans "User" %}
|
16
16
|
</th>
|
17
17
|
|
18
18
|
{% for perm in model_perms %}
|
19
|
-
<th class="align-middle font-
|
19
|
+
<th class="align-middle font-semibold px-3 py-2 text-left">
|
20
20
|
{{ perm.name }}
|
21
21
|
</th>
|
22
22
|
{% endfor %}
|
23
23
|
|
24
|
-
<th class="align-middle font-
|
24
|
+
<th class="align-middle font-semibold px-3 py-2 text-right">
|
25
25
|
{% trans "Action" %}
|
26
26
|
</th>
|
27
27
|
</tr>
|
@@ -5,6 +5,6 @@
|
|
5
5
|
{{ block.super }}
|
6
6
|
|
7
7
|
{% if show_change_form_export %}
|
8
|
-
<input type="submit" value="{% translate 'Export' %}" name="_export-item" class="bg-white text-gray-500 border cursor-pointer flex font-medium items-center px-3 py-2 mr-3 rounded-md shadow-sm text-sm dark:bg-gray-900 dark:border dark:border-gray-700 dark:text-
|
8
|
+
<input type="submit" value="{% translate 'Export' %}" name="_export-item" class="bg-white text-gray-500 border cursor-pointer flex font-medium items-center px-3 py-2 mr-3 rounded-md shadow-sm text-sm dark:bg-gray-900 dark:border dark:border-gray-700 dark:text-font-default-dark">
|
9
9
|
{% endif %}
|
10
10
|
{% endblock %}
|
@@ -44,19 +44,19 @@
|
|
44
44
|
{% endblock %}
|
45
45
|
|
46
46
|
{% block content %}
|
47
|
-
|
48
|
-
|
49
|
-
{% else %}
|
50
|
-
{% include "admin/import_export/import_form.html" %}
|
51
|
-
{% endif %}
|
52
|
-
|
53
|
-
{% if result %}
|
54
|
-
{% if result.has_errors %}
|
55
|
-
{% include "admin/import_export/import_errors.html" %}
|
56
|
-
{% elif result.has_validation_errors %}
|
57
|
-
{% include "admin/import_export/import_validation.html" %}
|
47
|
+
{% if confirm_form %}
|
48
|
+
{% include "admin/import_export/import_confirm.html" %}
|
58
49
|
{% else %}
|
59
|
-
|
50
|
+
{% include "admin/import_export/import_form.html" %}
|
51
|
+
{% endif %}
|
52
|
+
|
53
|
+
{% if result %}
|
54
|
+
{% if result.has_errors %}
|
55
|
+
{% include "admin/import_export/import_errors.html" %}
|
56
|
+
{% elif result.has_validation_errors %}
|
57
|
+
{% include "admin/import_export/import_validation.html" %}
|
58
|
+
{% else %}
|
59
|
+
{% include "admin/import_export/import_preview.html" %}
|
60
|
+
{% endif %}
|
60
61
|
{% endif %}
|
61
|
-
{% endif %}
|
62
62
|
{% endblock %}
|
@@ -6,9 +6,9 @@
|
|
6
6
|
<ul>
|
7
7
|
{% for error in result.base_errors %}
|
8
8
|
<li>
|
9
|
-
|
9
|
+
{{ error.error }}
|
10
10
|
|
11
|
-
|
11
|
+
<div class="traceback">{{ error.traceback|linebreaks }}</div></li>
|
12
12
|
{% endfor %}
|
13
13
|
|
14
14
|
{% for line, errors in result.row_errors %}
|
@@ -26,7 +26,7 @@
|
|
26
26
|
</div>
|
27
27
|
</div>
|
28
28
|
|
29
|
-
<div class="block border leading-relaxed mb-4 rounded p-4 traceback dark:border-gray-800 dark:text-
|
29
|
+
<div class="block border leading-relaxed mb-4 rounded p-4 traceback dark:border-gray-800 dark:text-font-default-dark " x-show="open">
|
30
30
|
{{ error.traceback|linebreaks }}
|
31
31
|
</div>
|
32
32
|
</li>
|
@@ -11,6 +11,7 @@ from django.forms.models import modelform_defines_fields
|
|
11
11
|
from django.http import HttpRequest
|
12
12
|
from django.utils.text import get_text_list
|
13
13
|
from django.utils.translation import gettext_lazy as _
|
14
|
+
|
14
15
|
from unfold.admin import StackedInline, TabularInline
|
15
16
|
|
16
17
|
from .checks import NonrelatedModelAdminChecks
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
{% block content %}
|
6
6
|
{% if not revert_disabled %}
|
7
|
-
<p class="px-3 py-3 rounded-md text-sm last:mb-8
|
7
|
+
<p class="px-3 py-3 rounded-md text-sm last:mb-8 mb-8 bg-blue-100 text-blue-700 dark:bg-blue-500/20 dark:text-blue-400">
|
8
8
|
{% blocktrans %}Choose a date from the list below to revert to a previous version of this object.{% endblocktrans %}
|
9
9
|
</p>
|
10
10
|
{% endif %}
|
@@ -4,35 +4,35 @@
|
|
4
4
|
{% load getattribute from getattributes %}
|
5
5
|
|
6
6
|
<table id="change-history" class="border-gray-200 border-spacing-none border-separate mb-6 w-full lg:border lg:rounded-md lg:shadow-sm lg:dark:border-gray-800">
|
7
|
-
<thead class="hidden text-
|
7
|
+
<thead class="hidden text-font-important-light lg:table-header-group dark:text-font-important-dark">
|
8
8
|
<tr>
|
9
|
-
<th class="align-middle font-
|
9
|
+
<th class="align-middle font-semibold px-3 py-2 text-left ">
|
10
10
|
{% trans 'Object' %}
|
11
11
|
</th>
|
12
12
|
|
13
13
|
{% for column in history_list_display %}
|
14
|
-
<th class="align-middle font-
|
14
|
+
<th class="align-middle font-semibold px-3 py-2 text-left ">
|
15
15
|
{% trans column %}
|
16
16
|
</th>
|
17
17
|
{% endfor %}
|
18
18
|
|
19
|
-
<th class="align-middle font-
|
19
|
+
<th class="align-middle font-semibold px-3 py-2 text-left">
|
20
20
|
{% trans 'Date/time' %}
|
21
21
|
</th>
|
22
22
|
|
23
|
-
<th class="align-middle font-
|
23
|
+
<th class="align-middle font-semibold px-3 py-2 text-left">
|
24
24
|
{% trans 'Comment' %}
|
25
25
|
</th>
|
26
26
|
|
27
|
-
<th class="align-middle font-
|
27
|
+
<th class="align-middle font-semibold px-3 py-2 text-left">
|
28
28
|
{% trans 'Changed by' %}
|
29
29
|
</th>
|
30
30
|
|
31
|
-
<th class="align-middle font-
|
31
|
+
<th class="align-middle font-semibold px-3 py-2 text-left">
|
32
32
|
{% trans 'Change reason' %}
|
33
33
|
</th>
|
34
34
|
|
35
|
-
<th class="align-middle font-
|
35
|
+
<th class="align-middle font-semibold px-3 py-2 text-left">
|
36
36
|
{% trans 'Changes' %}
|
37
37
|
</th>
|
38
38
|
</tr>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
</button>
|
17
17
|
{% endif %}
|
18
18
|
|
19
|
-
<a href="{{ history_url }}" class="border font-medium mr-auto px-3 py-2 rounded-md text-sm text-gray-500 text-center transition-all w-full hover:bg-gray-50 lg:block lg:w-auto dark:border-gray-700 dark:text-
|
19
|
+
<a href="{{ history_url }}" class="border font-medium mr-auto px-3 py-2 rounded-md text-sm text-gray-500 text-center transition-all w-full hover:bg-gray-50 lg:block lg:w-auto dark:border-gray-700 dark:text-font-default-dark dark:hover:text-gray-200 dark:hover:bg-gray-900">
|
20
20
|
{% trans 'Close' %}
|
21
21
|
</a>
|
22
22
|
</div>
|
@@ -1,3 +1,5 @@
|
|
1
|
+
from typing import Any, Dict
|
2
|
+
|
1
3
|
from django.conf import settings
|
2
4
|
|
3
5
|
CONFIG_DEFAULTS = {
|
@@ -11,6 +13,14 @@ CONFIG_DEFAULTS = {
|
|
11
13
|
"SHOW_HISTORY": True,
|
12
14
|
"SHOW_VIEW_ON_SITE": True,
|
13
15
|
"COLORS": {
|
16
|
+
"font": {
|
17
|
+
"subtle-light": "107 114 128", # text-gray-500
|
18
|
+
"subtle-dark": "156 163 175", # text-gray-400
|
19
|
+
"default-light": "75 85 99", # text-gray-600
|
20
|
+
"default-dark": "209 213 219", # text-gray-300
|
21
|
+
"important-light": "17 24 39", # text-gray-900
|
22
|
+
"important-dark": "243 244 246", # text-gray-100
|
23
|
+
},
|
14
24
|
"primary": {
|
15
25
|
"50": "250 245 255",
|
16
26
|
"100": "243 232 255",
|
@@ -47,4 +57,19 @@ def get_config(settings_name=None):
|
|
47
57
|
if settings_name is None:
|
48
58
|
settings_name = "UNFOLD"
|
49
59
|
|
50
|
-
|
60
|
+
def merge_dicts(dict1: Dict[str, Any], dict2: Dict[str, Any]) -> Dict[str, Any]:
|
61
|
+
result = dict1.copy()
|
62
|
+
|
63
|
+
for key, value in dict2.items():
|
64
|
+
if (
|
65
|
+
key in result
|
66
|
+
and isinstance(result[key], dict)
|
67
|
+
and isinstance(value, dict)
|
68
|
+
):
|
69
|
+
result[key] = merge_dicts(result[key], value)
|
70
|
+
else:
|
71
|
+
result[key] = value
|
72
|
+
|
73
|
+
return result
|
74
|
+
|
75
|
+
return merge_dicts(CONFIG_DEFAULTS, getattr(settings, settings_name, {}))
|