#22536: Exceptions using date-based generic views with MySQL, USE_TZ=True and
bad
data
-------------------------------+-------------------
Reporter: acdha | Owner: acdha
Type: Bug | Status: new
Component: Generic views | Version: 1.5
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+-------------------
I ran into a non-obvious exception while using the date-based generic
views. get_previous_day / get_next_day were raising an AttributeError
('NoneType' object has no attribute 'astimezone') in the following code
when the view was called with the earliest item in the system:
try:
result = getattr(qs[0], date_field)
except IndexError:
return None
# Convert datetimes to dates in the current time zone.
if generic_view.uses_datetime_field:
if settings.USE_TZ:
result = timezone.localtime(result)
result = result.date()
This error wasn't immediately obvious because the query shouldn't have
been able to return a NULL. Looking at the data revealed the problem: a
small number of records on my test instance had invalid dates in MySQL
(0000-00-00) which were included by the __lt query but subsequently
converted into None by the ORM.
The nature of the bug suggests that the cleanest patch might simply be an
immediate "if not result: return None", perhaps with a warning about
invalid data.
--
Ticket URL: <https://code.djangoproject.com/ticket/22536>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/048.f09faf087a7a68d4edf95a4a48d86852%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.