mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-11 00:33:17 +00:00
Added frontend cache purger
This commit is contained in:
parent
50a5182794
commit
000b8abafe
4 changed files with 38 additions and 0 deletions
0
wagtail/contrib/wagtailfrontendcache/__init__.py
Normal file
0
wagtail/contrib/wagtailfrontendcache/__init__.py
Normal file
0
wagtail/contrib/wagtailfrontendcache/models.py
Normal file
0
wagtail/contrib/wagtailfrontendcache/models.py
Normal file
14
wagtail/contrib/wagtailfrontendcache/purger.py
Normal file
14
wagtail/contrib/wagtailfrontendcache/purger.py
Normal 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)
|
||||
24
wagtail/contrib/wagtailfrontendcache/signal_handlers.py
Normal file
24
wagtail/contrib/wagtailfrontendcache/signal_handlers.py
Normal 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)
|
||||
Loading…
Reference in a new issue