mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Widget: More resilient file handling
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import hashlib
|
||||
import json
|
||||
import logging
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.staticfiles import finders
|
||||
@@ -31,6 +32,8 @@ from pretix.presale.views.event import (
|
||||
get_grouped_items, item_group_by_category,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def indent(s):
|
||||
return s.replace('\n', '\n ')
|
||||
@@ -107,11 +110,17 @@ def widget_js(request, lang, **kwargs):
|
||||
|
||||
gs = GlobalSettingsObject()
|
||||
fname = gs.settings.get('widget_file_{}'.format(lang))
|
||||
print(fname, settings.DEBUG)
|
||||
if not fname or settings.DEBUG:
|
||||
resp = None
|
||||
if fname and not settings.DEBUG:
|
||||
try:
|
||||
resp = HttpResponse(default_storage.open(fname).read(), content_type='text/javascript')
|
||||
except:
|
||||
logger.exception('Failed to open widget.js')
|
||||
|
||||
if not resp:
|
||||
data = generate_widget_js(lang).encode()
|
||||
checksum = hashlib.sha1(data).hexdigest()
|
||||
if not fname:
|
||||
if not settings.DEBUG:
|
||||
newname = default_storage.save(
|
||||
'widget/widget.{}.{}.js'.format(lang, checksum),
|
||||
ContentFile(data)
|
||||
@@ -119,8 +128,6 @@ def widget_js(request, lang, **kwargs):
|
||||
gs.settings.set('widget_file_{}'.format(lang), 'file://' + newname)
|
||||
gs.settings.set('widget_checksum_{}'.format(lang), checksum)
|
||||
resp = HttpResponse(data, content_type='text/javascript')
|
||||
else:
|
||||
resp = FileResponse(default_storage.open(fname), content_type='text/javascript')
|
||||
return resp
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user