diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-04-11 12:41:37 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-04-11 12:51:19 +0200 |
commit | 5a298f37a4f87396d5fdd275c23b6589db84c06e (patch) | |
tree | b3d504376bb1faabd45b648f27cd43291ec29206 /ishtar_common/forms.py | |
parent | c112274abba0f8d3bdbf7e00305fdcac12c5f066 (diff) | |
download | Ishtar-5a298f37a4f87396d5fdd275c23b6589db84c06e.tar.bz2 Ishtar-5a298f37a4f87396d5fdd275c23b6589db84c06e.zip |
🐛 custom form: fix custom fields (classic ou JSON) management
Diffstat (limited to 'ishtar_common/forms.py')
-rw-r--r-- | ishtar_common/forms.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 086f85b90..07d1ac417 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -44,7 +44,7 @@ from django.utils.translation import ugettext_lazy as _ from bootstrap_datepicker.widgets import DatePicker, DATE_FORMAT from ishtar_common import models from ishtar_common import widgets -from ishtar_common.utils import MultiValueDict +from ishtar_common.utils import MultiValueDict, update_data, generate_dict_from_data_string # from formwizard.forms import NamedUrlSessionFormWizard @@ -219,6 +219,9 @@ class CustomForm(BSForm): except AttributeError: pass super().__init__(*args, **kwargs) + self.current_user = self.current_user or getattr(self, "user", None) + if self.current_user and not hasattr(self.current_user, "current_profile"): + self.current_user = getattr(self.current_user, "ishtaruser", None) if hasattr(self, "fields"): self.base_field_keys = self.fields.keys() else: @@ -1363,6 +1366,13 @@ class QAForm(CustomForm, ManageOldType): value = self.cleaned_data[base_key] if not value: return + if base_key.startswith("data__"): + # manage custom fields + item.data = update_data( + item.data, + generate_dict_from_data_string(base_key, value) + ) + return key = base_key[len(self.PREFIX):] field = item._meta.get_field(key) if getattr(field, "related_model", None): |