summaryrefslogtreecommitdiff
path: root/ishtar_common/widgets.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/widgets.py')
-rw-r--r--ishtar_common/widgets.py14
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,