33 lines
1.2 KiB
Python
33 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
|