1234567891011121314151617181920212223242526272829303132 |
- 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
|