from django.apps import apps from django.core.signals import setting_changed from django.dispatch import receiver from wagtail.models import Page from .model_utils import get_edit_handler from .page_utils import set_default_page_edit_handlers @receiver(setting_changed) def reset_edit_handler_cache(**kwargs): """ Clear page edit handler cache when global WAGTAILADMIN_COMMENTS_ENABLED settings are changed """ if kwargs["setting"] == "WAGTAILADMIN_COMMENTS_ENABLED": set_default_page_edit_handlers(Page) for model in apps.get_models(): if issubclass(model, Page): model.get_edit_handler.cache_clear() get_edit_handler.cache_clear()