diff options
Diffstat (limited to 'ishtar_common/widgets.py')
-rw-r--r-- | ishtar_common/widgets.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index e33669e19..442f12b9a 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -103,11 +103,12 @@ class SelectReadonlyField(forms.ChoiceField): class Select2Multiple(forms.SelectMultiple): def __init__(self, attrs=None, choices=(), remote=None, model=None, - available=None): + new=None, available=None): super(Select2Multiple, self).__init__(attrs, choices) self.remote = remote self.available = available self.model = model + self.new = new @property def media(self): @@ -152,7 +153,7 @@ class Select2Multiple(forms.SelectMultiple): attrs['class'] = klass if 'style' not in attrs: if attrs.get('full-width', None): - attrs['style'] = "width: 100%" + attrs['style'] = "width: calc(100% - 60px)" else: attrs['style'] = "width: 370px" @@ -195,7 +196,18 @@ class Select2Multiple(forms.SelectMultiple): options = "{" options += " containerCssClass: 'full-width'}" self.choices = choices - html = super(Select2Multiple, self).render(name, value, attrs) + + new, html = "", "" + if self.new: + html = u"<div class='input-group'>" + url_new = 'new-' + self.model.SLUG + url_new = reverse(url_new) + new = u'<span class="input-group-append">' \ + u'<a href="#" class="add-button input-group-text" ' \ + u'onclick="open_window(\'%s\');">+</a></span></div>' % url_new + + html += super(Select2Multiple, self).render(name, value, attrs) + html += new html += """<script type="text/javascript"> $(document).ready(function() {{ $("#id_{}").select2({}); @@ -220,6 +232,9 @@ class CheckboxSelectMultiple(CheckboxSelectMultipleBase): class Select2MultipleField(forms.MultipleChoiceField): def __init__(self, *args, **kwargs): + new = None + if 'new' in kwargs: + new = kwargs.pop('new') remote = None if 'remote' in kwargs: remote = kwargs.pop('remote') @@ -241,7 +256,7 @@ class Select2MultipleField(forms.MultipleChoiceField): attrs['full-width'] = True kwargs['widget'] = Select2Multiple( model=self.model, available=self.available, remote=self.remote, - attrs=attrs + new=new, attrs=attrs ) super(Select2MultipleField, self).__init__(*args, **kwargs) |