diff options
Diffstat (limited to 'ishtar_common/widgets.py')
| -rw-r--r-- | ishtar_common/widgets.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index b11ae0c5d..304e6a669 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -232,12 +232,16 @@ class Select2DynamicMultipleField(forms.MultipleChoiceField): class Select2Base(Select2Media): def __init__( - self, attrs=None, choices=(), remote=None, model=None, new=None, available=None + self, attrs=None, choices=(), remote=None, model=None, new=None, available=None, + remote_filter=None ): self.remote = remote self.available = available self.model = model self.new = new + self.remote_filter = None + if attrs and "remote_filter" in attrs: + self.remote_filter = attrs.pop("remote_filter") super(Select2Base, self).__init__(attrs, choices) def get_q(self): @@ -275,8 +279,8 @@ class Select2Base(Select2Media): attrs["style"] = "width: 370px" if value and getattr(self, "multiple", False) and \ - not isinstance(value, (list, tuple)): - value = value.split(",") + not isinstance(value, (list, tuple)): + value = value.split(",") options = "" if self.remote: @@ -331,6 +335,8 @@ class Select2Base(Select2Media): html = "<div class='input-group'>" url_new = "new-" + self.model.SLUG url_new = reverse(url_new, args=["id_" + name]) + if self.remote_filter: + url_new += self.remote_filter # WARNING: the modal for the form must be in the main template # "extra_form_modals" list is used for that in form or view new = ( @@ -412,6 +418,8 @@ class Select2BaseField(object): attrs["modal"] = kwargs.pop("modal") if kwargs.get("style", None): attrs["style"] = kwargs.pop("style") + if kwargs.get("remote_filter", None): + attrs["remote_filter"] = kwargs.pop("remote_filter") kwargs["widget"] = widget( model=self.model, available=self.available, |
