From d6c405904416e54d5d550c9f61922f0ebfae2388 Mon Sep 17 00:00:00 2001
From: Fredrik Jonsson <frjo@xdeb.org>
Date: Mon, 17 Sep 2018 11:02:58 +0200
Subject: [PATCH] Add query to get_success_url to avoid cache issues with
 CloudFlare page rule that cache everything. Check if HTTP_ORIGIN and
 HTTP_REFERER is set before using them.

---
 opentech/public/mailchimp/views.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/opentech/public/mailchimp/views.py b/opentech/public/mailchimp/views.py
index 56534258b..ae0a9e4a3 100644
--- a/opentech/public/mailchimp/views.py
+++ b/opentech/public/mailchimp/views.py
@@ -1,5 +1,7 @@
 import logging
 
+from time import time
+
 from django.conf import settings
 from django.contrib import messages
 from django.http import HttpResponseRedirect
@@ -76,8 +78,15 @@ class MailchimpSubscribeView(FormMixin, RedirectView):
         messages.success(self.request, _('Thank you for subscribing'))
 
     def get_success_url(self):
-        # Go back to where you came from
-        return self.request.META['HTTP_REFERER']
+        # Go back to where you came from, default to front page.
+        origin = '/'
+        if 'HTTP_ORIGIN' in self.request.META:
+            origin = self.request.META['HTTP_ORIGIN']
+        elif 'HTTP_REFERER' in self.request.META:
+            origin = self.request.META['HTTP_REFERER']
+
+        # Add cache busting query string.
+        return origin + '?newsletter-' + str(time.time())
 
     def get_redirect_url(self):
         # We don't know where you came from, go home
-- 
GitLab