diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-08-22 16:45:59 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-08-22 16:45:59 +0200 |
commit | 0a4d77216bfe581aff3f29b2ac3088e7c61ed55e (patch) | |
tree | f476155d237d06875ce9e56a614703114c48fa83 /ishtar_common/widgets.py | |
parent | e787e7183729358f1bc5054e4f4bb0a7a1a0d408 (diff) | |
download | Ishtar-0a4d77216bfe581aff3f29b2ac3088e7c61ed55e.tar.bz2 Ishtar-0a4d77216bfe581aff3f29b2ac3088e7c61ed55e.zip |
Django 1.11: API change in widget rendering
Diffstat (limited to 'ishtar_common/widgets.py')
-rw-r--r-- | ishtar_common/widgets.py | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 37a243c7d..79c0513c0 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -156,8 +156,7 @@ class CheckboxSelectMultiple(CheckboxSelectMultipleBase): value = value.split(',') if type(value) not in (list, tuple): value = [value] - return super(CheckboxSelectMultiple, self).render(name, value, attrs, - choices) + return super(CheckboxSelectMultiple, self).render(name, value, attrs) class Select2MultipleField(forms.MultipleChoiceField): @@ -192,9 +191,9 @@ class Select2MultipleField(forms.MultipleChoiceField): class DeleteWidget(forms.CheckboxInput): - def render(self, name, value, attrs=None): - final_attrs = flatatt(self.build_attrs(attrs, name=name, - value='1')) + def render(self, name, value, attrs=None, renderer=None): + final_attrs = flatatt( + self.build_attrs(attrs, {"name": name, "value": '1'})) output = ['<tr class="delete"><td colspan="2">'] output.append(u"<button%s>%s</button>" % (final_attrs, _("Delete"))) output.append('</td></tr>') @@ -207,10 +206,11 @@ class ImageFileInput(ClearableFileInput): class SquareMeterWidget(forms.TextInput): - def render(self, name, value, attrs=None): + def render(self, name, value, attrs=None, renderer=None): if not value: value = u"" - final_attrs = flatatt(self.build_attrs(attrs, name=name, value=value)) + final_attrs = flatatt( + self.build_attrs(attrs, {"name": name, "value": value})) dct = {'final_attrs': final_attrs, 'unit': settings.SURFACE_UNIT_LABEL, 'id': attrs['id'], @@ -232,7 +232,7 @@ class JQueryDate(forms.TextInput): self.attrs['class'] = '' self.attrs['class'] = 'date-pickup' - def render(self, name, value=None, attrs=None): + def render(self, name, value, attrs=None, renderer=None): if value: value = unicode(value) # very specific... @@ -267,25 +267,29 @@ class JQueryDate(forms.TextInput): class JQueryAutoComplete(forms.TextInput): - def __init__(self, source, associated_model=None, options={}, attrs={}, - new=False, url_new='', multiple=False, limit={}, - dynamic_limit=[]): + def __init__(self, source, associated_model=None, options=None, attrs=None, + new=False, url_new='', multiple=False, limit=None, + dynamic_limit=None): """ Source can be a list containing the autocomplete values or a string containing the url used for the request. """ - self.options = None - self.attrs = {} self.source = source self.associated_model = associated_model - if len(options) > 0: + + self.options = None + if options and len(options) > 0: self.options = JSONEncoder().encode(options) - self.attrs.update(attrs) + self.attrs = {} + + if attrs: + self.attrs.update(attrs) + self.new = new self.url_new = url_new self.multiple = multiple - self.limit = limit - self.dynamic_limit = dynamic_limit + self.limit = limit or {} + self.dynamic_limit = dynamic_limit or [] def value_from_datadict(self, data, files, name): if self.multiple: @@ -314,7 +318,6 @@ class JQueryAutoComplete(forms.TextInput): if self.options: dct['options'] = mark_safe('%s' % self.options) - js = "" tpl = 'blocks/JQueryAutocomplete.js' if self.multiple: tpl = 'blocks/JQueryAutocompleteMultiple.js' @@ -322,14 +325,13 @@ class JQueryAutoComplete(forms.TextInput): js = t.render(dct) return js - def render(self, name, value=None, attrs=None): - attrs_hidden = self.build_attrs(attrs, name=name) + def render(self, name, value, attrs=None, renderer=None): + attrs_hidden = self.build_attrs(attrs, {"name": name}) attrs_select = self.build_attrs(attrs) attrs_select['placeholder'] = _(u"Search...") if value: hiddens = [] selects = [] - values = value if type(value) not in (list, tuple): values = unicode(escape(smart_unicode(value))) values = values.replace('[', '').replace(']', '') @@ -429,8 +431,8 @@ class JQueryTown(forms.TextInput): raise ValueError('source type is not valid') return encoded_src - def render(self, name, value=None, attrs=None): - attrs_hidden = self.build_attrs(attrs, name=name) + def render(self, name, value, attrs=None, renderer=None): + attrs_hidden = self.build_attrs(attrs, {"name": name}) attrs_select = self.build_attrs(attrs) attrs_select['placeholder'] = _(u"Search...") selected = '' @@ -544,8 +546,8 @@ class JQueryPersonOrganization(forms.TextInput): js = loader.get_template(self.js_template).render(dct) return js - def render(self, name, value=None, attrs=None): - attrs_hidden = self.build_attrs(attrs, name=name) + def render(self, name, value, attrs=None, renderer=None): + attrs_hidden = self.build_attrs(attrs, {'name': name}) attrs_select = self.build_attrs(attrs) attrs_select['placeholder'] = _(u"Search...") selected = '' @@ -693,7 +695,7 @@ class JQueryJqGrid(forms.RadioSelect): extra_cols = extra_cols and ", ".join(extra_cols) or "" return jq_col_names, extra_cols - def render(self, name, value=None, attrs=None): + def render(self, name, value, attrs=None, renderer=None): t = loader.get_template('blocks/form_flex_snippet.html') form = self.form() rendered = t.render({'form': form, 'flex': True}) |