kopia lustrzana https://github.com/wagtail/wagtail
Refactor settings EditView to make better use of generic EditView (#12635)
rodzic
b81b899c0c
commit
f8f99833f2
|
@ -72,6 +72,7 @@ Changelog
|
|||
* Maintenance: Add unit tests, Storybook stories & JSDoc items for the Stimulus `DrilldownController` (Srishti Jaiswal)
|
||||
* Maintenance: Enhance sidebar preview performance by eliminating duplicate asset loads on preview error (Sage Abdullah)
|
||||
* Maintenance: Remove unused `LinkController` (`w-link`) (Sage Abdullah)
|
||||
* Maintenance: Refactor settings `EditView` to make better use of generic `EditView` (Sage Abdullah)
|
||||
|
||||
|
||||
6.3.2 (xx.xx.xxxx) - IN DEVELOPMENT
|
||||
|
|
|
@ -91,6 +91,7 @@ depth: 1
|
|||
* Add unit tests, Storybook stories & JSDoc items for the Stimulus `DrilldownController` (Srishti Jaiswal)
|
||||
* Enhance sidebar preview performance by eliminating duplicate asset loads on preview error (Sage Abdullah)
|
||||
* Remove unused `LinkController` (`w-link`) (Sage Abdullah)
|
||||
* Refactor settings `EditView` to make better use of generic `EditView` (Sage Abdullah)
|
||||
|
||||
|
||||
## Upgrade considerations - changes affecting all projects
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{% extends "wagtailadmin/generic/edit.html" %}
|
||||
{% load i18n wagtailadmin_tags %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block before_form %}
|
||||
{% if site_switcher %}
|
||||
|
@ -11,7 +11,3 @@
|
|||
</form>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block form_content %}
|
||||
{{ edit_handler.render_form_content }}
|
||||
{% endblock %}
|
||||
|
|
|
@ -233,11 +233,8 @@ class TestGenericSettingEditView(BaseTestGenericSettingView):
|
|||
def test_register_with_icon(self):
|
||||
edit_url = reverse("wagtailsettings:edit", args=("tests", "IconGenericSetting"))
|
||||
edit_response = self.client.get(edit_url, follow=True)
|
||||
|
||||
self.assertContains(
|
||||
edit_response,
|
||||
"""<svg class="icon icon-icon-setting-tag w-header__glyph" aria-hidden="true"><use href="#icon-icon-setting-tag"></use></svg>""",
|
||||
)
|
||||
soup = self.get_soup(edit_response.content)
|
||||
self.assertIsNotNone(soup.select_one("h2 svg use[href='#icon-tag']"))
|
||||
|
||||
def test_edit_invalid(self):
|
||||
response = self.post(post_data={"foo": "bar"})
|
||||
|
|
|
@ -21,4 +21,4 @@ class GenericSettingRegisterTestCase(WagtailTestUtils, TestCase):
|
|||
|
||||
def test_icon(self):
|
||||
admin = self.client.get(reverse("wagtailadmin_home"))
|
||||
self.assertContains(admin, "icon-setting-tag")
|
||||
self.assertContains(admin, '"tag"')
|
||||
|
|
|
@ -230,11 +230,8 @@ class TestSiteSettingEditView(BaseTestSiteSettingView):
|
|||
def test_register_with_icon(self):
|
||||
edit_url = reverse("wagtailsettings:edit", args=("tests", "IconGenericSetting"))
|
||||
edit_response = self.client.get(edit_url, follow=True)
|
||||
|
||||
self.assertContains(
|
||||
edit_response,
|
||||
"""<svg class="icon icon-icon-setting-tag w-header__glyph" aria-hidden="true"><use href="#icon-icon-setting-tag"></use></svg>""",
|
||||
)
|
||||
soup = self.get_soup(edit_response.content)
|
||||
self.assertIsNotNone(soup.select_one("h2 svg use[href='#icon-tag']"))
|
||||
|
||||
def test_edit_invalid(self):
|
||||
response = self.post(post_data={"foo": "bar"})
|
||||
|
|
|
@ -21,4 +21,4 @@ class TestRegister(WagtailTestUtils, TestCase):
|
|||
|
||||
def test_icon(self):
|
||||
admin = self.client.get(reverse("wagtailadmin_home"))
|
||||
self.assertContains(admin, "icon-setting-tag")
|
||||
self.assertContains(admin, '"tag"')
|
||||
|
|
|
@ -81,8 +81,10 @@ def redirect_to_relevant_instance(request, app_name, model_name):
|
|||
|
||||
class EditView(generic.EditView):
|
||||
template_name = "wagtailsettings/edit.html"
|
||||
edit_url_name = "wagtailsettings:edit"
|
||||
error_message = gettext_lazy("The setting could not be saved due to errors.")
|
||||
permission_required = "change"
|
||||
_show_breadcrumbs = True
|
||||
|
||||
def setup(self, request, app_name, model_name, *args, **kwargs):
|
||||
self.app_name = app_name
|
||||
|
@ -92,6 +94,9 @@ class EditView(generic.EditView):
|
|||
self.pk = kwargs.get(self.pk_url_kwarg)
|
||||
super().setup(request, app_name, model_name, *args, **kwargs)
|
||||
|
||||
def get_header_icon(self):
|
||||
return registry._model_icons.get(self.model)
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
self.site = None
|
||||
if issubclass(self.model, BaseSiteSetting):
|
||||
|
@ -100,12 +105,12 @@ class EditView(generic.EditView):
|
|||
else:
|
||||
return get_object_or_404(self.model, pk=self.pk)
|
||||
|
||||
def get_form_class(self):
|
||||
return get_setting_edit_handler(self.model).get_form_class()
|
||||
def get_panel(self):
|
||||
return get_setting_edit_handler(self.model)
|
||||
|
||||
def get_edit_url(self):
|
||||
return reverse(
|
||||
"wagtailsettings:edit",
|
||||
self.edit_url_name,
|
||||
args=(self.app_name, self.model_name, self.pk),
|
||||
)
|
||||
|
||||
|
@ -121,27 +126,9 @@ class EditView(generic.EditView):
|
|||
site_switcher = None
|
||||
if self.site and Site.objects.count() > 1:
|
||||
site_switcher = SiteSwitchForm(self.site, self.model)
|
||||
media = context.get("media") + site_switcher.media
|
||||
|
||||
form = self.get_form()
|
||||
|
||||
edit_handler = get_setting_edit_handler(self.model).get_bound_panel(
|
||||
instance=self.object, request=self.request, form=form
|
||||
)
|
||||
|
||||
media = form.media + edit_handler.media
|
||||
|
||||
header_icon = registry._model_icons.get(self.model)
|
||||
|
||||
context.update(
|
||||
{
|
||||
"edit_handler": edit_handler,
|
||||
"site_switcher": site_switcher,
|
||||
"media": media,
|
||||
"header_icon": header_icon,
|
||||
}
|
||||
)
|
||||
context["media"] += site_switcher.media
|
||||
|
||||
context["site_switcher"] = site_switcher
|
||||
return context
|
||||
|
||||
def get_success_url(self):
|
||||
|
|
|
@ -1839,12 +1839,12 @@ class ImportantPagesGenericSetting(BaseGenericSetting):
|
|||
verbose_name_plural = _("Important pages settings")
|
||||
|
||||
|
||||
@register_setting(icon="icon-setting-tag")
|
||||
@register_setting(icon="tag")
|
||||
class IconSiteSetting(BaseSiteSetting):
|
||||
pass
|
||||
|
||||
|
||||
@register_setting(icon="icon-setting-tag")
|
||||
@register_setting(icon="tag")
|
||||
class IconGenericSetting(BaseGenericSetting):
|
||||
pass
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue