32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
from django.core.checks import Warning, register
|
|
|
|
|
|
@register("search")
|
|
def page_search_fields_check(app_configs, **kwargs):
|
|
"""Checks each page model with search_fields to core fields are included"""
|
|
from wagtail.models import Page, get_page_models
|
|
|
|
page_models = get_page_models()
|
|
errors = []
|
|
|
|
for cls in page_models:
|
|
# Don't check models where indexing has been explicitly disabled
|
|
if not cls.search_fields:
|
|
continue
|
|
# Only checks an initial subset of fields as only need to check some are missing to show the warning
|
|
if not all(field in cls.search_fields for field in Page.search_fields[:10]):
|
|
errors.append(
|
|
Warning(
|
|
"Core Page fields missing in `search_fields`",
|
|
hint=" ".join(
|
|
[
|
|
"Ensure that {} extends the Page model search fields",
|
|
"`search_fields = Page.search_fields + [...]`",
|
|
]
|
|
).format(cls.__name__),
|
|
obj=cls,
|
|
id="wagtailsearch.W001",
|
|
)
|
|
)
|
|
|
|
return errors
|