Django

Code

Ticket #5917: newforms.extra.widgets.py.2.diff

File newforms.extra.widgets.py.2.diff, 2.0 kB (added by Camille Harang <mammique@garbure.org>, 10 months ago)

Fix + ID's 2 (same but uses month_field = '%s_month', etc...)

  • /home/mammique/Desktop/widgets.py

    old new  
    3030            self.years = range(this_year, this_year+10) 
    3131 
    3232    def render(self, name, value, attrs=None): 
     33 
     34        has_id = attrs and 'id' in attrs 
     35        final_attrs = self.build_attrs(attrs, name=name) 
     36 
     37        def select_id(name_field): 
     38            if has_id: return dict(final_attrs, id=name_field % attrs['id']) 
     39            else: return None 
     40 
    3341        try: 
    34             value = datetime.date(*map(int, value.split('-'))) 
     42            if type(value) == type(u''): 
     43                value = datetime.date(*map(int, value.split('-'))) 
    3544            year_val, month_val, day_val = value.year, value.month, value.day 
    3645        except (AttributeError, TypeError, ValueError): 
    3746            year_val = month_val = day_val = None 
    3847 
    3948        output = [] 
    4049 
     50        print self.month_field % u'ntsf' 
     51 
    4152        month_choices = MONTHS.items() 
    4253        month_choices.sort() 
    43         select_html = Select(choices=month_choices).render(self.month_field % name, month_val) 
     54        select_html = Select(select_id(self.month_field), 
     55                             choices=month_choices).render(self.month_field % name, month_val) 
    4456        output.append(select_html) 
    4557 
    4658        day_choices = [(i, i) for i in range(1, 32)] 
    47         select_html = Select(choices=day_choices).render(self.day_field % name, day_val) 
     59        select_html = Select(select_id(self.month_field), 
     60                             choices=day_choices).render(self.day_field % name, day_val) 
    4861        output.append(select_html) 
    4962 
    5063        year_choices = [(i, i) for i in self.years] 
    51         select_html = Select(choices=year_choices).render(self.year_field % name, year_val) 
     64        select_html = Select(select_id(self.year_field), 
     65                             choices=year_choices).render(self.year_field % name, year_val) 
    5266        output.append(select_html) 
    5367 
    5468        return u'\n'.join(output)