27 lines
734 B
Python
27 lines
734 B
Python
import structlog
|
|
from django.core.cache import caches
|
|
from django.db.models.signals import post_delete, post_save
|
|
from wagtail.models import Page
|
|
|
|
logger = structlog.get_logger(__name__)
|
|
|
|
|
|
def get_all_subclasses(cls):
|
|
all_subclasses = []
|
|
|
|
for subclass in cls.__subclasses__():
|
|
all_subclasses.append(subclass)
|
|
all_subclasses.extend(get_all_subclasses(subclass))
|
|
|
|
return all_subclasses
|
|
|
|
|
|
def invalidate_api_page_cache(sender, **kwargs):
|
|
logger.debug("invalidate api_page_cache", label="api_page_cache")
|
|
caches["api_page_cache"].clear()
|
|
|
|
|
|
for subclass in get_all_subclasses(Page):
|
|
post_save.connect(invalidate_api_page_cache, subclass)
|
|
post_delete.connect(invalidate_api_page_cache, subclass)
|