1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- from django import forms
- from ...cache import clear_settings_cache
- class ChangeSettingsForm(forms.Form):
- settings = []
- def __init__(self, *args, **kwargs):
- self.request = kwargs.pop("request")
- super().__init__(*args, **kwargs)
- def save(self, settings):
- self.save_settings(settings)
- self.clear_cache()
- def save_settings(self, settings):
- for setting in self.settings:
- setting_obj = settings[setting]
- new_value = self.cleaned_data.get(setting)
- if setting_obj.python_type == "image":
- if new_value and new_value != self.initial.get(setting):
- self.save_image(setting_obj, new_value)
- elif self.cleaned_data.get("%s_delete" % setting):
- self.delete_image(setting_obj)
- else:
- self.save_setting(setting_obj, new_value)
- def delete_image(self, setting):
- if setting.image:
- setting.image.delete()
- def save_image(self, setting, value):
- if setting.image:
- setting.image.delete(save=False)
- setting.value = value
- setting.save()
- def save_setting(self, setting, value):
- setting.value = value
- setting.save()
- def clear_cache(self):
- clear_settings_cache()
|