62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
from django.db.models.signals import post_delete, post_save
|
|
from django.urls import reverse
|
|
|
|
from wagtail.contrib.frontend_cache.utils import purge_url_from_cache
|
|
from wagtail.documents import get_document_model
|
|
from wagtail.images import get_image_model
|
|
from wagtail.models import get_page_models
|
|
from wagtail.signals import page_published, page_unpublished
|
|
|
|
from .utils import get_base_url
|
|
|
|
|
|
def purge_page_from_cache(instance, **kwargs):
|
|
base_url = get_base_url()
|
|
purge_url_from_cache(
|
|
base_url + reverse("wagtailapi_v2:pages:detail", args=(instance.id,))
|
|
)
|
|
|
|
|
|
def purge_image_from_cache(instance, **kwargs):
|
|
if not kwargs.get("created", False):
|
|
base_url = get_base_url()
|
|
purge_url_from_cache(
|
|
base_url + reverse("wagtailapi_v2:images:detail", args=(instance.id,))
|
|
)
|
|
|
|
|
|
def purge_document_from_cache(instance, **kwargs):
|
|
if not kwargs.get("created", False):
|
|
base_url = get_base_url()
|
|
purge_url_from_cache(
|
|
base_url + reverse("wagtailapi_v2:documents:detail", args=(instance.id,))
|
|
)
|
|
|
|
|
|
def register_signal_handlers():
|
|
Image = get_image_model()
|
|
Document = get_document_model()
|
|
|
|
for model in get_page_models():
|
|
page_published.connect(purge_page_from_cache, sender=model)
|
|
page_unpublished.connect(purge_page_from_cache, sender=model)
|
|
|
|
post_save.connect(purge_image_from_cache, sender=Image)
|
|
post_delete.connect(purge_image_from_cache, sender=Image)
|
|
post_save.connect(purge_document_from_cache, sender=Document)
|
|
post_delete.connect(purge_document_from_cache, sender=Document)
|
|
|
|
|
|
def unregister_signal_handlers():
|
|
Image = get_image_model()
|
|
Document = get_document_model()
|
|
|
|
for model in get_page_models():
|
|
page_published.disconnect(purge_page_from_cache, sender=model)
|
|
page_unpublished.disconnect(purge_page_from_cache, sender=model)
|
|
|
|
post_save.disconnect(purge_image_from_cache, sender=Image)
|
|
post_delete.disconnect(purge_image_from_cache, sender=Image)
|
|
post_save.disconnect(purge_document_from_cache, sender=Document)
|
|
post_delete.disconnect(purge_document_from_cache, sender=Document)
|