Move tests for Page.base_form_class / get_form_class to wagtailadmin - fixes #2428

This commit is contained in:
Matt Westcott 2016-04-29 15:53:01 +01:00 committed by Karl Hobley
parent f9b39e5890
commit 5976e66cfb
5 changed files with 57 additions and 27 deletions

View file

@ -1,6 +1,6 @@
import os
from django.core.checks import Warning, register
from django.core.checks import Error, Warning, register
@register()
@ -28,3 +28,45 @@ def css_install_check(app_configs, **kwargs):
)
)
return errors
@register()
def base_form_class_check(app_configs, **kwargs):
from wagtail.wagtailadmin.forms import WagtailAdminPageForm
from wagtail.wagtailcore.models import get_page_models
errors = []
for cls in get_page_models():
if not issubclass(cls.base_form_class, WagtailAdminPageForm):
errors.append(Error(
"{}.base_form_class does not extend WagtailAdminPageForm".format(
cls.__name__),
hint="Ensure that {}.{} extends WagtailAdminPageForm".format(
cls.base_form_class.__module__,
cls.base_form_class.__name__),
obj=cls,
id='wagtailadmin.E001'))
return errors
@register()
def get_form_class_check(app_configs, **kwargs):
from wagtail.wagtailadmin.forms import WagtailAdminPageForm
from wagtail.wagtailcore.models import get_page_models
errors = []
for cls in get_page_models():
edit_handler = cls.get_edit_handler()
if not issubclass(edit_handler.get_form_class(cls), WagtailAdminPageForm):
errors.append(Error(
"{cls}.get_edit_handler().get_form_class({cls}) does not extend WagtailAdminPageForm".format(
cls=cls.__name__),
hint="Ensure that the EditHandler for {cls} creates a subclass of WagtailAdminPageForm".format(
cls=cls.__name__),
obj=cls,
id='wagtailadmin.E002'))
return errors

View file

@ -50,7 +50,7 @@ class SearchForm(forms.Form):
super(SearchForm, self).__init__(*args, **kwargs)
self.fields['q'].widget.attrs = {'placeholder': placeholder}
q = forms.CharField(label=_("Search term"), widget=forms.TextInput())
q = forms.CharField(label=ugettext_lazy("Search term"), widget=forms.TextInput())
class ExternalLinkChooserForm(forms.Form):

View file

@ -1,3 +1,7 @@
from __future__ import unicode_literals
# Create your models here.
# The edit_handlers module extends Page with some additional attributes required by
# wagtailadmin (namely, base_form_class and get_edit_handler). Importing this within
# wagtailadmin.models ensures that this happens in advance of running wagtailadmin's
# system checks.
from wagtail.wagtailadmin import edit_handlers # NOQA

View file

@ -165,16 +165,21 @@ class TestPageEditHandlers(TestCase):
"ValidatedPage.base_form_class does not extend WagtailAdminPageForm",
hint="Ensure that wagtail.wagtailadmin.tests.test_edit_handlers.BadFormClass extends WagtailAdminPageForm",
obj=ValidatedPage,
id='wagtailcore.E002')
id='wagtailadmin.E001')
invalid_edit_handler = checks.Error(
"ValidatedPage.get_edit_handler().get_form_class(ValidatedPage) does not extend WagtailAdminPageForm",
hint="Ensure that the EditHandler for ValidatedPage creates a subclass of WagtailAdminPageForm",
obj=ValidatedPage,
id='wagtailcore.E003')
id='wagtailadmin.E002')
with mock.patch.object(ValidatedPage, 'base_form_class', new=BadFormClass):
errors = ValidatedPage.check()
errors = checks.run_checks()
# ignore CSS loading errors (to avoid spurious failures on CI servers that
# don't build the CSS)
errors = [e for e in errors if e.id != 'wagtailadmin.W001']
self.assertEqual(errors, [invalid_base_form, invalid_edit_handler])
@clear_edit_handler(ValidatedPage)

View file

@ -557,27 +557,6 @@ class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, index.Indexed
)
)
from wagtail.wagtailadmin.forms import WagtailAdminPageForm
if not issubclass(cls.base_form_class, WagtailAdminPageForm):
errors.append(checks.Error(
"{}.base_form_class does not extend WagtailAdminPageForm".format(
cls.__name__),
hint="Ensure that {}.{} extends WagtailAdminPageForm".format(
cls.base_form_class.__module__,
cls.base_form_class.__name__),
obj=cls,
id='wagtailcore.E002'))
edit_handler = cls.get_edit_handler()
if not issubclass(edit_handler.get_form_class(cls), WagtailAdminPageForm):
errors.append(checks.Error(
"{cls}.get_edit_handler().get_form_class({cls}) does not extend WagtailAdminPageForm".format(
cls=cls.__name__),
hint="Ensure that the EditHandler for {cls} creates a subclass of WagtailAdminPageForm".format(
cls=cls.__name__),
obj=cls,
id='wagtailcore.E003'))
return errors
def _update_descendant_url_paths(self, old_url_path, new_url_path):