diff options
| author | Ramiro Morales <cramm0@gmail.com> | 2011-02-05 18:16:27 +0000 |
|---|---|---|
| committer | Ramiro Morales <cramm0@gmail.com> | 2011-02-05 18:16:27 +0000 |
| commit | f2b0f8ea0fc5849801a2aeb71f2db106e5655aea (patch) | |
| tree | 43c5a14fdbcd5e2a348e08f410746f8154448c25 /django/forms/extras | |
| parent | 8ce7beaea05cff2ba6cda6ad6747e8840291ff06 (diff) | |
Fixed #15226 - Made SelectDateWidget render the label tag associated with the correct dropdown sub-widget when USE_L10N is active and non-English locale is in use.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15427 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/forms/extras')
| -rw-r--r-- | django/forms/extras/widgets.py | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/django/forms/extras/widgets.py b/django/forms/extras/widgets.py index 0cd88b8170..e8bacf2b1e 100644 --- a/django/forms/extras/widgets.py +++ b/django/forms/extras/widgets.py @@ -17,6 +17,26 @@ __all__ = ('SelectDateWidget',) RE_DATE = re.compile(r'(\d{4})-(\d\d?)-(\d\d?)$') +def _parse_date_fmt(): + fmt = get_format('DATE_FORMAT') + escaped = False + output = [] + for char in fmt: + if escaped: + escaped = False + elif char == '\\': + escaped = True + elif char in 'Yy': + output.append('year') + #if not self.first_select: self.first_select = 'year' + elif char in 'bEFMmNn': + output.append('month') + #if not self.first_select: self.first_select = 'month' + elif char in 'dj': + output.append('day') + #if not self.first_select: self.first_select = 'day' + return output + class SelectDateWidget(Widget): """ A Widget that splits date input into three <select> boxes. @@ -67,24 +87,25 @@ class SelectDateWidget(Widget): choices = [(i, i) for i in range(1, 32)] day_html = self.create_select(name, self.day_field, value, day_val, choices) - format = get_format('DATE_FORMAT') - escaped = False output = [] - for char in format: - if escaped: - escaped = False - elif char == '\\': - escaped = True - elif char in 'Yy': + for field in _parse_date_fmt(): + if field == 'year': output.append(year_html) - elif char in 'bEFMmNn': + elif field == 'month': output.append(month_html) - elif char in 'dj': + elif field == 'day': output.append(day_html) return mark_safe(u'\n'.join(output)) def id_for_label(self, id_): - return '%s_month' % id_ + first_select = None + field_list = _parse_date_fmt() + if field_list: + first_select = field_list[0] + if first_select is not None: + return '%s_%s' % (id_, first_select) + else: + return '%s_month' % id_ id_for_label = classmethod(id_for_label) def value_from_datadict(self, data, files, name): @@ -118,4 +139,3 @@ class SelectDateWidget(Widget): s = Select(choices=choices) select_html = s.render(field % name, val, local_attrs) return select_html - |
