forked from CGM_Public/pretix_original
Fix unnecessary override of default settings
This commit is contained in:
@@ -118,6 +118,27 @@ class SettingsForm(i18nfield.forms.I18nFormMixin, HierarkeyForm):
|
|||||||
self.cleaned_data[k] = self.initial[k]
|
self.cleaned_data[k] = self.initial[k]
|
||||||
return super().save()
|
return super().save()
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
d = super().clean()
|
||||||
|
|
||||||
|
# There is logic in HierarkeyForm.save() to only persist fields that changed. HierarkeyForm determines if
|
||||||
|
# something changed by comparing `self._s.get(name)` to `value`. This leaves an edge case open for multi-lingual
|
||||||
|
# text fields. On the very first load, the initial value in `self._s.get(name)` will be a LazyGettextProxy-based
|
||||||
|
# string. However, only some of the languages are usually visible, so even if the user does not change anything
|
||||||
|
# at all, it will be considered a changed value and stored. We do not want that, as it makes it very hard to add
|
||||||
|
# languages to an organizer/event later on. So we trick it and make sure nothing gets changed in that situation.
|
||||||
|
for name, field in self.fields.items():
|
||||||
|
if isinstance(field, i18nfield.forms.I18nFormField):
|
||||||
|
value = d.get(name)
|
||||||
|
if not value:
|
||||||
|
continue
|
||||||
|
|
||||||
|
current = self._s.get(name, as_type=type(value))
|
||||||
|
if name not in self.changed_data:
|
||||||
|
d[name] = current
|
||||||
|
|
||||||
|
return d
|
||||||
|
|
||||||
def get_new_filename(self, name: str) -> str:
|
def get_new_filename(self, name: str) -> str:
|
||||||
from pretix.base.models import Event
|
from pretix.base.models import Event
|
||||||
|
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ setup(
|
|||||||
'django-formtools==2.3',
|
'django-formtools==2.3',
|
||||||
'django-hierarkey==1.0.*,>=1.0.4',
|
'django-hierarkey==1.0.*,>=1.0.4',
|
||||||
'django-hijack>=2.2.0,<2.3.0',
|
'django-hijack>=2.2.0,<2.3.0',
|
||||||
'django-i18nfield==1.9.*,>=1.9.3',
|
'django-i18nfield==1.9.*,>=1.9.4',
|
||||||
'django-libsass==0.9',
|
'django-libsass==0.9',
|
||||||
'django-localflavor==3.1',
|
'django-localflavor==3.1',
|
||||||
'django-markup',
|
'django-markup',
|
||||||
|
|||||||
Reference in New Issue
Block a user