/wagtail-site-check

A Wagtail app to check the configuration of Wagtail Sites.

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Wagtail Site Check

A Wagtail app to check the configuration of Wagtail Sites.

Have you ever experienced a failing Wagtail preview? Searching for hours, only to find out a misconfiguration of Wagtail Site objects? Misconfiguration of hostname and port happens often, goes unnoticed for a while, and leads to vague complaints.

When a Wagtail Site is misconfigured, developers like to be notified. This way, the issue can be addressed quickly. To scratch the itch, I created "Wagtail Site Check".

Installation

Install the package with pip:

python -m pip install wagtail-site-check

Add the app to your INSTALLED_APPS:

INSTALLED_APPS = [
    'wagtailsitecheck',
]

Add ALLOWED_WAGTAIL_SITES to your settings:

ALLOWED_WAGTAIL_SITES = [  
    "a.com:443",
    "b.com:443",
    "c.com:443",
]

When working with multiple environments (DTAP), only specify the allowed wagtail sites for that environment. For example via environment variables.

Usage

The app provides two management commands: checksites and fixsites.

It also provides a SiteCheckNotificationPanel to add a warning to the Wagtail admin dashboard.

Check Sites

The checksites management command fails hard if an existing Wagtail Site object is not defined in ALLOWED_WAGTAIL_SITES.

python manage.py checksites

Run this command manually, or add it to your CI/CD pipeline. For example, just after migrate.

Fix Sites

The fixsites management command helps to re-configure the sites.

python manage.py fixsites
127.0.0.1:8000 is not in ALLOWED_WAGTAIL_SITES. Specify a number to update the site.
  
1: a.com:443
2: b.com:443
3: c.com:443
  
1
  
Updated 127.0.0.1:8000 -> a.com:443

SiteCheckNotificationPanel

To show a warning on the Wagtail admin dashboard add SiteCheckNotificationPanel to wagtail_hooks.py . The warning is only displayed if there are misconfigured sites.

from wagtail import hooks
from wagtailsitecheck.wagtail_hooks import SiteCheckNotificationPanel

@hooks.register('construct_homepage_panels')
def add_site_check_panel(request, panels):
    panels.append(SiteCheckNotificationPanel())