From 0ff07898310b63046a1451cbca50ab6fe8ed70d0 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Wed, 16 Sep 2020 19:48:51 +0200 Subject: [PATCH] Add easy way to do xkey based purging of a template Since we can purge based on the md5 hash of a template name, expose this in the purge dialog so one doesn't have to manually calculate the hash to use it. --- pgweb/core/views.py | 14 ++++++++++++-- templates/core/admin_purge.html | 4 ++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pgweb/core/views.py b/pgweb/core/views.py index 5ab4cb3f..3373718e 100644 --- a/pgweb/core/views.py +++ b/pgweb/core/views.py @@ -16,6 +16,7 @@ from datetime import date, datetime, timedelta import os import re import urllib.parse +import hashlib from pgweb.util.decorators import cache, nocache from pgweb.util.contexts import render_pgweb, get_nav_menu, PGWebContextProcessor @@ -471,19 +472,28 @@ def admin_purge(request): if request.method == 'POST': url = request.POST['url'] expr = request.POST['expr'] + template = request.POST['template'] xkey = request.POST['xkey'] - l = len([_f for _f in [url, expr, xkey] if _f]) + l = len([_f for _f in [url, expr, template, xkey] if _f]) if l == 0: # Nothing specified return HttpResponseRedirect('.') elif l > 1: - messages.error(request, "Can only specify one of url, expression and xkey!") + messages.error(request, "Can only specify one of url, expression, template and xkey!") return HttpResponseRedirect('.') if url: varnish_purge(url) elif expr: varnish_purge_expr(expr) + elif template: + path = os.path.abspath(os.path.join(settings.PROJECT_ROOT, '../templates', template)) + if not os.path.isfile(path): + messages.error(request, "Template {} does not exist!".format(template)) + return HttpResponseRedirect('.') + # Calculate the xkey + xkey = "pgwt_{}".format(hashlib.md5(template.encode('ascii')).hexdigest()) + varnish_purge_xkey(xkey) else: varnish_purge_xkey(xkey) diff --git a/templates/core/admin_purge.html b/templates/core/admin_purge.html index 46c417af..33155a4c 100644 --- a/templates/core/admin_purge.html +++ b/templates/core/admin_purge.html @@ -21,6 +21,10 @@ Full expression: + + Template: + + XKey: -- 2.39.5