From 04aa301c75714dfc99da66d4dc71efd1fb1ba9cb Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Sun, 2 Oct 2022 20:47:40 +0100 Subject: [PATCH] Add management command to purge caches --- .../contrib/wagtail_cache_purge/__init__.py | 0 .../management/commands/purge_cache.py | 21 +++++++++++++++++++ website/settings.py | 1 + 3 files changed, 22 insertions(+) create mode 100644 website/contrib/wagtail_cache_purge/__init__.py create mode 100644 website/contrib/wagtail_cache_purge/management/commands/purge_cache.py diff --git a/website/contrib/wagtail_cache_purge/__init__.py b/website/contrib/wagtail_cache_purge/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/website/contrib/wagtail_cache_purge/management/commands/purge_cache.py b/website/contrib/wagtail_cache_purge/management/commands/purge_cache.py new file mode 100644 index 0000000..f5261fe --- /dev/null +++ b/website/contrib/wagtail_cache_purge/management/commands/purge_cache.py @@ -0,0 +1,21 @@ +from argparse import ArgumentParser + +from django.core.cache import DEFAULT_CACHE_ALIAS, caches +from django.core.management.base import BaseCommand + + +class Command(BaseCommand): + def add_arguments(self, parser: ArgumentParser) -> None: + parser.add_argument( + "cache", + type=str, + default=DEFAULT_CACHE_ALIAS, + nargs="?", + choices=list(caches), + help="Cache alias. Default: %(default)s", + ) + + def handle(self, *args: list, **options: dict) -> None: + cache_alias = options["cache"] + self.stdout.write(f"Purging cache {cache_alias}") + caches[cache_alias].clear() diff --git a/website/settings.py b/website/settings.py index 43cebc0..2d53f0c 100644 --- a/website/settings.py +++ b/website/settings.py @@ -44,6 +44,7 @@ INSTALLED_APPS = [ "website.contrib.mermaid_block", "website.contrib.unsplash", "website.contrib.singleton_page", + "website.contrib.wagtail_cache_purge", "wagtail.contrib.forms", "wagtail.contrib.redirects", "wagtail.contrib.modeladmin",