forked from CGM_Public/pretix_original
Widget: deprecate v1 and deliver v2 instead (#5273)
* Widget: deprecate v1 and redirect to v2 * Make redirect permanent * remove v1 files * do not redirect, just serve version_min * add version-comment to delivered css/js-file * fix tests
This commit is contained in:
committed by
GitHub
parent
0c7c50cffc
commit
9bf302e5ae
@@ -1,5 +0,0 @@
|
||||
{% load compress %}
|
||||
{% load static %}
|
||||
{% compress css %}
|
||||
<link rel="stylesheet" type="text/x-scss" href="{% static "pretixpresale/scss/widget.v1.scss" %}"/>
|
||||
{% endcompress %}
|
||||
@@ -83,7 +83,7 @@ logger = logging.getLogger(__name__)
|
||||
# we never change static source without restart, so we can cache this thread-wise
|
||||
_source_cache_key = None
|
||||
|
||||
version_min = 1
|
||||
version_min = 2
|
||||
version_max = 2
|
||||
version_default = 2 # used for output in widget-embed-code
|
||||
|
||||
@@ -109,6 +109,8 @@ def indent(s):
|
||||
|
||||
|
||||
def widget_css_etag(request, version, **kwargs):
|
||||
if version < version_min:
|
||||
version = version_min
|
||||
# This makes sure a new version of the theme is loaded whenever settings or the source files have changed
|
||||
if hasattr(request, 'event'):
|
||||
return (f'{_get_source_cache_key(version)}-'
|
||||
@@ -130,11 +132,7 @@ def widget_css(request, version, **kwargs):
|
||||
if version > version_max:
|
||||
raise Http404()
|
||||
if version < version_min:
|
||||
return redirect(reverse('presale:event.widget.css' if hasattr(request, 'event') else 'organizer.widget.css', kwargs={
|
||||
'version': version_min,
|
||||
'organizer': request.organizer.slug,
|
||||
'event': request.event.slug if hasattr(request, 'event') else None,
|
||||
}))
|
||||
version = version_min
|
||||
o = getattr(request, 'event', request.organizer)
|
||||
|
||||
template_path = 'pretixpresale/widget_dummy.html' if version == version_max else 'pretixpresale/widget_dummy.v{}.html'.format(version)
|
||||
@@ -145,7 +143,7 @@ def widget_css(request, version, **kwargs):
|
||||
widget_css = f.read()
|
||||
|
||||
theme_css = get_theme_vars_css(o, widget=True)
|
||||
css = theme_css + widget_css
|
||||
css = f"/* v{version} */\n" + theme_css + widget_css
|
||||
|
||||
resp = FileResponse(css, content_type='text/css')
|
||||
resp._csp_ignore = True
|
||||
@@ -202,7 +200,7 @@ def generate_widget_js(version, lang):
|
||||
code.append('})({});\n')
|
||||
code = ''.join(code)
|
||||
code = rJSMinFilter(content=code).output()
|
||||
return code
|
||||
return f"/* v{version} */\n" + code
|
||||
|
||||
|
||||
@gzip_page
|
||||
@@ -212,10 +210,7 @@ def widget_js(request, version, lang, **kwargs):
|
||||
raise Http404()
|
||||
|
||||
if version < version_min:
|
||||
return redirect(reverse('presale:widget.js', kwargs={
|
||||
'version': version_min,
|
||||
'lang': lang,
|
||||
}))
|
||||
version = version_min
|
||||
|
||||
cached_js = cache.get('widget_js_data_v{}_{}'.format(version, lang))
|
||||
if cached_js and not settings.DEBUG:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -542,7 +542,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
|
||||
|
||||
@override_settings(COMPRESS_PRECOMPILERS=settings.COMPRESS_PRECOMPILERS_ORIGINAL)
|
||||
def test_css_customized(self):
|
||||
response = self.client.get('/%s/%s/widget/v1.css' % (self.orga.slug, self.event.slug))
|
||||
response = self.client.get('/%s/%s/widget/v2.css' % (self.orga.slug, self.event.slug))
|
||||
c = b"".join(response.streaming_content).decode()
|
||||
assert '#8E44B3' in c
|
||||
assert '#33c33c' not in c
|
||||
@@ -550,7 +550,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
|
||||
|
||||
self.orga.settings.primary_color = "#33c33c"
|
||||
self.orga.cache.clear()
|
||||
response = self.client.get('/%s/%s/widget/v1.css' % (self.orga.slug, self.event.slug))
|
||||
response = self.client.get('/%s/%s/widget/v2.css' % (self.orga.slug, self.event.slug))
|
||||
c = b"".join(response.streaming_content).decode()
|
||||
assert '#8E44B3' not in c
|
||||
assert '#33c33c' in c
|
||||
@@ -558,18 +558,18 @@ class WidgetCartTest(CartTestMixin, TestCase):
|
||||
|
||||
self.event.settings.primary_color = "#34c34c"
|
||||
self.event.cache.clear()
|
||||
response = self.client.get('/%s/%s/widget/v1.css' % (self.orga.slug, self.event.slug))
|
||||
response = self.client.get('/%s/%s/widget/v2.css' % (self.orga.slug, self.event.slug))
|
||||
c = b"".join(response.streaming_content).decode()
|
||||
assert '#8E44B3' not in c
|
||||
assert '#33c33c' not in c
|
||||
assert '#34c34c' in c
|
||||
|
||||
def test_js_localized(self):
|
||||
response = self.client.get('/widget/v1.en.js')
|
||||
response = self.client.get('/widget/v2.en.js')
|
||||
c = response.content.decode()
|
||||
assert '%m/%d/%Y' in c
|
||||
assert '%d.%m.%Y' not in c
|
||||
response = self.client.get('/widget/v1.de.js')
|
||||
response = self.client.get('/widget/v2.de.js')
|
||||
c = response.content.decode()
|
||||
assert '%m/%d/%Y' not in c
|
||||
assert '%d.%m.%Y' in c
|
||||
|
||||
Reference in New Issue
Block a user