Files
old-saburly-wagtail-web/env/lib/python3.10/site-packages/wagtail/api/v2/signal_handlers.py
2024-08-27 20:33:44 +02:00

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)