Fix widget v2 deployment updateassets (#5176)

* Fix widget v2 deployment updateassets

* fix code style issues
This commit is contained in:
Richard Schreiber
2025-05-28 15:49:05 +02:00
committed by GitHub
parent 92f7456eca
commit 8ad0944dcf
2 changed files with 25 additions and 20 deletions

View File

@@ -29,7 +29,9 @@ from django.core.management.base import BaseCommand
from django_scopes import scopes_disabled
from pretix.base.settings import GlobalSettingsObject
from pretix.presale.views.widget import generate_widget_js
from pretix.presale.views.widget import (
generate_widget_js, version_max, version_min,
)
class Command(BaseCommand):
@@ -43,19 +45,22 @@ class Command(BaseCommand):
def handle(self, *args, **options):
gs = GlobalSettingsObject()
for lc, ll in settings.LANGUAGES:
data = generate_widget_js(lc).encode()
checksum = hashlib.sha1(data).hexdigest()
fname = gs.settings.get('widget_file_{}'.format(lc))
if not fname or gs.settings.get('widget_checksum_{}'.format(lc), '') != checksum:
newname = default_storage.save(
'pub/widget/widget.{}.{}.js'.format(lc, checksum),
ContentFile(data)
)
gs.settings.set('widget_file_{}'.format(lc), 'file://' + newname)
gs.settings.set('widget_checksum_{}'.format(lc), checksum)
cache.delete('widget_js_data_{}'.format(lc))
if fname:
if isinstance(fname, File):
default_storage.delete(fname.name)
else:
default_storage.delete(fname)
for version in range(version_min, version_max + 1):
data = generate_widget_js(version, lc).encode()
checksum = hashlib.sha1(data).hexdigest()
settings_file_key = 'widget_file_v{}_{}'.format(version, lc)
settings_checksum_key = 'widget_checksum_v{}_{}'.format(version, lc)
fname = gs.settings.get(settings_file_key)
if not fname or gs.settings.get(settings_checksum_key, '') != checksum:
newname = default_storage.save(
'pub/widget/widget.v{}.{}.{}.js'.format(version, lc, checksum),
ContentFile(data)
)
gs.settings.set(settings_file_key, 'file://' + newname)
gs.settings.set(settings_checksum_key, checksum)
cache.delete('widget_js_data_v{}_{}'.format(version, lc))
if fname:
if isinstance(fname, File):
default_storage.delete(fname.name)
else:
default_storage.delete(fname)