From c981656169ed68154798cbd10492be674ba46ed6 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 17 Sep 2025 17:07:04 +0200 Subject: ✨ document type field - use select2 widget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/widgets.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'ishtar_common/widgets.py') diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index d0ade6fea..2e6dc36af 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -276,8 +276,8 @@ class Select2Base(Select2Media): else: attrs["style"] = "width: 370px" - if value: - if type(value) not in (list, tuple): + if value and getattr(self, "multiple", False) and \ + not isinstance(value, (list, tuple)): value = value.split(",") options = "" @@ -352,7 +352,7 @@ class Select2Simple(Select2Base, forms.Select): class Select2Multiple(Select2Base, forms.SelectMultiple): - pass + multiple = True class CheckboxSelectMultiple(CheckboxSelectMultipleBase): @@ -423,6 +423,8 @@ class Select2BaseField(object): def valid_value(self, value): if not self.model: return super(Select2BaseField, self).valid_value(value) + if isinstance(value, self.model): + return True return bool(self.get_q().filter(pk=value).count()) @@ -439,7 +441,15 @@ class Select2MultipleField(Select2BaseField, forms.MultipleChoiceField): class Select2SimpleField(Select2BaseField, forms.ChoiceField): - pass + multiple = False + + def to_python(self, value): + value = super().to_python(value) + if not value or not getattr(self, "model", None) or getattr(self, "remote", False): + return value + if not self.valid_value(value): + return + return self.get_q().filter(pk=value).all()[0] class DeleteWidget(forms.CheckboxInput): -- cgit v1.2.3