diff --git a/src/pretix/base/views/js_catalog.py b/src/pretix/base/views/js_catalog.py new file mode 100644 index 0000000000..be5b6f1c0e --- /dev/null +++ b/src/pretix/base/views/js_catalog.py @@ -0,0 +1,25 @@ +from django.utils import timezone +from django.views.decorators.cache import cache_page +from django.views.decorators.http import etag +from django.views.i18n import ( + get_javascript_catalog, render_javascript_catalog, to_locale, +) + +# Yes, we want to regenerate this every time the module has been imported to +# refresh the cache at least at every code deployment +import_date = timezone.now().strftime("%Y%m%d%H%M") + + +# This is not a valid Django URL configuration, as the final +# configuration is done by the pretix.multidomain package. +js_info_dict = { + 'packages': ('pretix',), +} + + +@etag(lambda *s, **k: import_date) +@cache_page(3600, key_prefix='js18n-%s' % import_date) +def js_catalog(request, lang): + packages = ['pretix'] + catalog, plural = get_javascript_catalog(to_locale(lang), 'djangojs', packages) + return render_javascript_catalog(catalog, plural) diff --git a/src/pretix/control/templates/pretixcontrol/base.html b/src/pretix/control/templates/pretixcontrol/base.html index 310ec9ce18..21ee7b5638 100644 --- a/src/pretix/control/templates/pretixcontrol/base.html +++ b/src/pretix/control/templates/pretixcontrol/base.html @@ -9,7 +9,7 @@ {% compress css %} {% endcompress %} - + {% compress js %} diff --git a/src/pretix/presale/templates/pretixpresale/base.html b/src/pretix/presale/templates/pretixpresale/base.html index 790db0f17b..932e57cf73 100644 --- a/src/pretix/presale/templates/pretixpresale/base.html +++ b/src/pretix/presale/templates/pretixpresale/base.html @@ -15,7 +15,7 @@ {% endcompress %} {% endif %} - + {% compress js %} diff --git a/src/pretix/urls.py b/src/pretix/urls.py index 1dd4039a91..c72f3fd1fb 100644 --- a/src/pretix/urls.py +++ b/src/pretix/urls.py @@ -1,24 +1,10 @@ from django.conf import settings from django.conf.urls import include, url -from django.utils import timezone -from django.views.decorators.cache import cache_page -from django.views.decorators.http import etag -from django.views.i18n import javascript_catalog import pretix.control.urls import pretix.presale.urls -from .base.views import cachedfiles, health, redirect - -# This is not a valid Django URL configuration, as the final -# configuration is done by the pretix.multidomain package. -js_info_dict = { - 'packages': ('pretix',), -} - -# Yes, we want to regenerate this every time the module has been imported to -# refresh the cache at least at every code deployment -import_date = timezone.now().strftime("%Y%m%d%H%M") +from .base.views import cachedfiles, health, js_catalog, redirect base_patterns = [ url(r'^download/(?P[^/]+)/$', cachedfiles.DownloadView.as_view(), @@ -26,9 +12,7 @@ base_patterns = [ url(r'^healthcheck/$', health.healthcheck, name='healthcheck'), url(r'^redirect/$', redirect.redir_view, name='redirect'), - url(r'^jsi18n/$', - etag(lambda *s, **k: import_date)(cache_page(3600, key_prefix='js18n-%s' % import_date)(javascript_catalog)), - js_info_dict, name='javascript-catalog'), + url(r'^jsi18n/(?P[a-zA-Z-_]+)/$', js_catalog.js_catalog, name='javascript-catalog'), ] control_patterns = [