Opened 13 years ago
Closed 13 years ago
#18323 closed Cleanup/optimization (fixed)
Date-based generic views mix dates and datetimes unsafely
Reported by: | Aymeric Augustin | Owned by: | Aymeric Augustin |
---|---|---|---|
Component: | Generic views | Version: | dev |
Severity: | Normal | Keywords: | refactoring |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Date-based generic views can use either a DateField or a DateTimeField. But the logic of the lookups to handle these two cases is a bit fuzzy. When time zone support is enabled, it isn't correct (or at least, not obviously so).
In order to make the code less fragile, I rewrote much of the interval handling logic.
This patch:
- adds some explicit conversions between dates and datetimes, accounting for the current time zone,
- makes the code generally clearer and possibly more correct — off-by-the-UTC-offset bugs are less likely when
USE_TZ = True
.
As a side effect, this patch is likely to fix two bugs:
- an egde case where accessing next_day/week/month/year on a DateTimeField could 404 even with allow_empty = False due to approximative filtering,
- #17192.
Attachments (1)
Change History (3)
by , 13 years ago
Attachment: | 18323.patch added |
---|
comment:1 by , 13 years ago
Owner: | changed from | to
---|
comment:2 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
In [20e697368219603599649bc67aea5e087caedeae]: