#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.

Reply via email to