Opened 18 years ago
Closed 16 years ago
#6231 closed (fixed)
SelectDateWidget: field order as a result of DATE_FORMAT
| Reported by: | Bernd Schlapsi | Owned by: | Marc Garcia |
|---|---|---|---|
| Component: | Internationalization | Version: | dev |
| Severity: | Keywords: | i18n-rf | |
| Cc: | andy@… | Triage Stage: | Fixed on a branch |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
The SelectDateWidget had a fix output in the format: MONTH/DAY/YEAR.
It would be nice, if the format could follow the DATE_FORMAT in settings.py and take care of the correct order.
Attachments (4)
Change History (21)
comment:1 by , 18 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:2 by , 18 years ago
comment:3 by , 18 years ago
This is the source-code for the render function of SelectDateWidget from trunk/django/newforms/extras/widgets.py
def render(self, name, value, attrs=None):
try:
value = datetime.date(*map(int, value.split('-')))
year_val, month_val, day_val = value.year, value.month, value.day
except (AttributeError, TypeError, ValueError):
year_val = month_val = day_val = None
output = []
month_choices = MONTHS.items()
month_choices.sort()
select_html = Select(choices=month_choices).render(self.month_field % name, month_val)
output.append(select_html)
day_choices = [(i, i) for i in range(1, 32)]
select_html = Select(choices=day_choices).render(self.day_field % name, day_val)
output.append(select_html)
year_choices = [(i, i) for i in self.years]
select_html = Select(choices=year_choices).render(self.year_field % name, year_val)
output.append(select_html)
return mark_safe(u'\n'.join(output))
If I read/understand this function correct, the SelectDateWidget returns MONTH/DAY/YEAR format
comment:4 by , 18 years ago
I see, you mean the order not the literally "slash".
DATE_FORMAT Can take many variables that do not apply in select boxes. Consider this case: "%A, %B %Y". How do you render this?
comment:5 by , 18 years ago
I know that DATE_FORMAT can take a lot of variables. I don't know a good solution yet. I am new to python and django, otherwise I would have tried to write a patch. But I think it's important to give this widget a bit of flexibility. In Europe we don't use the date format MONTH/DAY/YEAR.
Could it be a (good) solution to check the usual date formats? If none of them would be submitted, the widget could use a default date format. What do you think?
comment:6 by , 18 years ago
The patch above addresses this issue and also add a TimeSelectWidget.
It include regression tests.
David.
comment:7 by , 18 years ago
| Has patch: | set |
|---|
comment:8 by , 17 years ago
| Keywords: | i18n-rf added |
|---|
comment:9 by , 17 years ago
| Component: | django.newforms → Internationalization |
|---|---|
| milestone: | → post-1.0 |
by , 17 years ago
| Attachment: | ticket_6231_v2.patch added |
|---|
New patch-version that works with current django-version (replaced newforms with forms)
comment:10 by , 17 years ago
| Cc: | added |
|---|
comment:12 by , 17 years ago
Please don't integrate patches like this; it makes things *really* hard to figure out. One patch per ticket.
by , 17 years ago
| Attachment: | ticket_6231_v4.patch added |
|---|
New patch-version that works with current django-version (after Changeset [10585])
comment:13 by , 16 years ago
| Owner: | changed from to |
|---|
comment:14 by , 16 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:15 by , 16 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
Last commit shouldn't close the ticket, but Ref it. Reopening.
comment:16 by , 16 years ago
| Triage Stage: | Accepted → Fixed on a branch |
|---|
comment:17 by , 16 years ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
(In [11964]) Fixed #7980 - Improved i18n framework to support locale aware formatting (dates and numbers) and form processing.
Thanks to Marc Garcia for working on this during his Google Summer of Code 2009!
Additionally fixes #1061, #2203, #3940, #5526, #6449, #6231, #6693, #6783, #9366 and #10891.
Actually SelectDateWidget isn't returning MONTH/DAY/YEAR format.