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 | |
| parent | e787e7183729358f1bc5054e4f4bb0a7a1a0d408 (diff) | |
| download | Ishtar-0a4d77216bfe581aff3f29b2ac3088e7c61ed55e.tar.bz2 Ishtar-0a4d77216bfe581aff3f29b2ac3088e7c61ed55e.zip | |
Django 1.11: API change in widget rendering
| -rw-r--r-- | archaeological_operations/widgets.py | 7 | ||||
| -rw-r--r-- | ishtar_common/widgets.py | 54 | 
2 files changed, 32 insertions, 29 deletions
| diff --git a/archaeological_operations/widgets.py b/archaeological_operations/widgets.py index c34752499..3a587e4fd 100644 --- a/archaeological_operations/widgets.py +++ b/archaeological_operations/widgets.py @@ -19,6 +19,7 @@  from django import forms  from django.forms import widgets +from django.forms.utils import flatatt  from django.template import loader  from django.utils.safestring import mark_safe  from django.utils.translation import ugettext_lazy as _ @@ -57,11 +58,11 @@ class SelectParcelWidget(widgets.TextInput):  class OAWidget(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 = widgets.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,                 'id': attrs['id'],                 "safe_id": attrs['id'].replace('-', '_')} 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}) | 
