diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/templates/ishtar/wizard/default_wizard.html | 2 | ||||
| -rw-r--r-- | ishtar_common/widgets.py | 38 | 
2 files changed, 31 insertions, 9 deletions
diff --git a/ishtar_common/templates/ishtar/wizard/default_wizard.html b/ishtar_common/templates/ishtar/wizard/default_wizard.html index 6707124f9..8d6b1c48e 100644 --- a/ishtar_common/templates/ishtar/wizard/default_wizard.html +++ b/ishtar_common/templates/ishtar/wizard/default_wizard.html @@ -1,7 +1,7 @@  {% extends "base.html" %}  {% load i18n range table_form %}  {% block extra_head %} -{{form.media}} +{{wizard.form.media}}  {% endblock %}  {% block content %}  {% block wizard_head %} diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index d1f6e49d3..8788920af 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -181,14 +181,14 @@ class Select2DynamicField(forms.ChoiceField):          return super(Select2DynamicField, self).to_python(value).strip() -class Select2Multiple(Select2Media, forms.SelectMultiple): +class Select2Base(Select2Media):      def __init__(self, attrs=None, choices=(), remote=None, model=None,                   new=None, available=None): -        super(Select2Multiple, self).__init__(attrs, choices)          self.remote = remote          self.available = available          self.model = model          self.new = new +        super(Select2Base, self).__init__(attrs, choices)      def get_q(self):          q = self.model.objects @@ -273,7 +273,7 @@ class Select2Multiple(Select2Media, forms.SelectMultiple):                    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 += super(Select2Base, self).render(name, value, attrs)          html += new          html += """<script type="text/javascript">          $(document).ready(function() {{ @@ -283,6 +283,14 @@ class Select2Multiple(Select2Media, forms.SelectMultiple):          return mark_safe(html) +class Select2Simple(Select2Base, forms.Select): +    pass + + +class Select2Multiple(Select2Base, forms.SelectMultiple): +    pass + +  class CheckboxSelectMultiple(CheckboxSelectMultipleBase):      """      Fix initialization bug. @@ -297,7 +305,9 @@ class CheckboxSelectMultiple(CheckboxSelectMultipleBase):          return super(CheckboxSelectMultiple, self).render(name, value, attrs) -class Select2MultipleField(forms.MultipleChoiceField): +class Select2BaseField(object): +    multiple = False +      def __init__(self, *args, **kwargs):          new = None          if 'new' in kwargs: @@ -321,11 +331,15 @@ class Select2MultipleField(forms.MultipleChoiceField):          if long_widget:              attrs['cols'] = True              attrs['full-width'] = True -        kwargs['widget'] = Select2Multiple( +        if self.multiple: +            widget = Select2Multiple +        else: +            widget = Select2Simple +        kwargs['widget'] = widget(              model=self.model, available=self.available, remote=self.remote,              new=new, attrs=attrs          ) -        super(Select2MultipleField, self).__init__(*args, **kwargs) +        super(Select2BaseField, self).__init__(*args, **kwargs)      def get_q(self):          q = self.model.objects @@ -335,10 +349,18 @@ class Select2MultipleField(forms.MultipleChoiceField):      def valid_value(self, value):          if not self.model: -            return super(Select2MultipleField, self).valid_value(value) +            return super(Select2BaseField, self).valid_value(value)          return bool(self.get_q().filter(pk=value).count()) +class Select2MultipleField(Select2BaseField, forms.MultipleChoiceField): +    multiple = True + + +class Select2SimpleField(Select2BaseField, forms.ChoiceField): +    pass + +  class DeleteWidget(forms.CheckboxInput):      def render(self, name, value, attrs=None, renderer=None):          final_attrs = flatatt( @@ -867,7 +889,7 @@ class JQueryPersonOrganization(forms.TextInput):          return html -class DataTable(forms.RadioSelect): +class DataTable(Select2Media, forms.RadioSelect):      def __init__(self, source, form, associated_model, attrs={},                   table_cols='TABLE_COLS', multiple=False, multiple_cols=[2],                   new=False, new_message="", source_full=None,  | 
