#7380 closed (wontfix)
Generic week view inconsistent with django.utils.dateformat
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Generic views | Version: | dev |
Severity: | Keywords: | ||
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
The generic week view parses the date by passing the year and week to Python's strptime function. The time module, where strptime is from, and specifically the %W directive, operates on an understanding that week numbers range from 00 to 53 and "All days in a new year preceding the first Monday are considered to be in week 0." [See http://docs.python.org/lib/module-time.html].
Django's DateFormat function in django.utils.dateformat operates differently. It uses the ISO calendar and the "first week of an ISO year is the first (Gregorian) calendar week of a year containing a Thursday." There actually is no week 0. Jan 1, 2010 (a Friday) is considered to be week 53 from the year before.
As a result, this makes dealing with week numbers in a template (and passing the correct number to a URL) extremely difficult.
Change History (4)
comment:1 by , 17 years ago
comment:2 by , 16 years ago
milestone: | → 1.0 |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:3 by , 16 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
This is backwards-incompatible in a pretty subtle way, so I think unfortunately this is a "find a workaround" situation. The workaround in this case, BTW, is to use reverse URL resolution (i.e. the url template tag) to correctly interpolate the right values into the URL.
Correction: the generic view uses the %U directive which considers all days in a new year preceding the first Sunday to be in week 0. This may actually be an additional issue -- Sunday-based rather than the default Monday-based dates in Python and Django's Date Format.