Added frontend cache purger

This commit is contained in:
Karl Hobley 2014-06-19 15:52:34 +01:00
parent 50a5182794
commit 000b8abafe
4 changed files with 38 additions and 0 deletions

View file

@ -0,0 +1,14 @@
from urlparse import urlparse, urlunparse
import requests
from django.conf import settings
def purge_page_from_cache(page):
# Build purge url
varnish_url = urlparse(getattr(settings, 'WAGTAILFRONTENDCACHE_LOCATION', 'http://127.0.0.1:8000/'))
page_url = urlparse(page.url)
purge_url = urlunparse((varnish_url.scheme, varnish_url.netloc, page_url.path, page_url.params, page_url.query, page_url.fragment))
# Purge
requests.request('PURGE', purge_url)

View file

@ -0,0 +1,24 @@
from django.db import models
from django.db.models.signals import post_save, post_delete
from wagtail.wagtailcore.models import Page
from wagtail.contrib.wagtailfrontendcache import purger
def post_save_signal_handler(instance, **kwargs):
purger.purge_page_from_cache(instance)
def post_delete_signal_handler(instance, **kwargs):
purger.purge_page_from_cache(instance)
def register_signal_handlers():
# Get list of models that are page types
indexed_models = [model for model in models.get_models() if issubclass(model, Page)]
# Loop through list and register signal handlers for each one
for model in indexed_models:
post_save.connect(post_save_signal_handler, sender=model)
post_delete.connect(post_delete_signal_handler, sender=model)