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]: