1+ import datetime
12import json
23import math
34import random
910from django .db .models import Q
1011from django .http import Http404 , HttpResponse
1112from django .shortcuts import redirect , get_object_or_404
12- from django .utils import timezone
1313from django .utils .functional import cached_property
1414from django .utils .translation import ugettext as _
1515from django .views .generic import ListView , TemplateView , View
@@ -98,7 +98,7 @@ def _local_date_at_midnight(self, timestamp):
9898 # cast timestamp into local timezone
9999 localized = timestamp .astimezone (self .request_timezone )
100100 # create a new date object starting at midnight in that timezone
101- return timezone .datetime (localized .year ,
101+ return datetime .datetime (localized .year ,
102102 localized .month ,
103103 localized .day ,
104104 tzinfo = localized .tzinfo )
@@ -123,7 +123,7 @@ def _get_next_date(self):
123123 date = None
124124 try :
125125 ts = (self ._get_base_queryset ()
126- .filter (timestamp__gte = timezone .timedelta (days = 1 ) + self .date )
126+ .filter (timestamp__gte = datetime .timedelta (days = 1 ) + self .date )
127127 .order_by ('timestamp' )[0 ].timestamp )
128128 date = self ._local_date_at_midnight (ts )
129129 except IndexError :
@@ -133,7 +133,7 @@ def _get_next_date(self):
133133 def _date_query_set (self , date ):
134134 qs = self ._get_base_queryset ()
135135 return qs .filter (timestamp__gte = date ,
136- timestamp__lt = date + timezone .timedelta (days = 1 ))
136+ timestamp__lt = date + datetime .timedelta (days = 1 ))
137137
138138class LogStream (ChannelMixin , View ):
139139 def get (self , request , channel_slug , bot_slug ):
@@ -144,6 +144,9 @@ def get(self, request, channel_slug, bot_slug):
144144 response ['Last-Event-ID' ] = request .META ['HTTP_LAST_EVENT_ID' ]
145145 return response
146146
147+ def _utc_now ():
148+ return datetime .datetime .now (tz = pytz .timezone ('UTC' ))
149+
147150def _find_pk (pk , queryset ):
148151 """Find a PK in a queryset in memory"""
149152 found = None
@@ -162,19 +165,19 @@ def _timeline_context(timeline):
162165 if not timeline :
163166 return {}
164167
165- today = timezone . now ().date ()
166- last_monday = today - timezone .timedelta (days = today .weekday ())
167- last_week = last_monday - timezone .timedelta (days = 7 )
168+ today = _utc_now ().date ()
169+ last_monday = today - datetime .timedelta (days = today .weekday ())
170+ last_week = last_monday - datetime .timedelta (days = 7 )
168171
169172 # the last month in the timeline needs special treatment so it
170173 # doesn't get ordered ahead of the last/current weeks
171174 last_month = timeline [timeline .keyOrder [- 1 ]].pop ()
172175 if last_month >= last_week :
173176 last_month_adjusted = (last_week -
174- timezone .timedelta (days = 1 ))
177+ datetime .timedelta (days = 1 ))
175178 elif last_month >= last_monday :
176179 last_month_adjusted = (last_monday -
177- timezone .timedelta (days = 1 ))
180+ datetime .timedelta (days = 1 ))
178181 else :
179182 last_month_adjusted = last_month
180183
@@ -349,7 +352,7 @@ def get_queryset(self):
349352 qs = self .channel .filtered_logs ()
350353 qs = self .get_ordered_queryset (qs )
351354 start = self .date
352- end = start + timezone .timedelta (days = 1 )
355+ end = start + datetime .timedelta (days = 1 )
353356 return qs .filter (timestamp__gte = start , timestamp__lt = end )
354357
355358 def _date_paginator (self , date ):
@@ -414,7 +417,7 @@ def get_next_page_link(self, page):
414417 def get_current_page_link (self , page ):
415418 # copy, to maintain any params that came in to original request.
416419 params = self .request .GET .copy ()
417- date = timezone . now ()
420+ date = _utc_now ()
418421 url = self .channel_date_url (date )
419422 params ['page' ] = page .number
420423 return '{0}?{1}' .format (url , params .urlencode ())
@@ -433,16 +436,15 @@ def request_timezone(self):
433436 def set_view_date (self ):
434437 """Determine start date for queryset"""
435438 if all ([field in self .kwargs for field in ['year' , 'month' , 'day' ]]):
436- self .date = timezone .datetime (
437- year = int (self .kwargs ['year' ]),
438- month = int (self .kwargs ['month' ]),
439- day = int (self .kwargs ['day' ]))
440439 # localize date so logs start at local time
441- return self .request_timezone .localize (self .date )
440+ return datetime .datetime (year = int (self .kwargs ['year' ]),
441+ month = int (self .kwargs ['month' ]),
442+ day = int (self .kwargs ['day' ]),
443+ tzinfo = self .request_timezone )
442444
443445 # Use the last page.
444446 self .kwargs ['page' ] = 'last'
445- return timezone . now ().date ()
447+ return _utc_now ().date ()
446448
447449
448450class SearchLogViewer (PaginatorPageLinksMixin , LogViewer , ListView ):
@@ -563,7 +565,7 @@ def get_queryset(self):
563565 date_filter = {'timestamp__gte' : last_exit .timestamp }
564566 # Only fetch results from when the user logged out.
565567 self .fetch_after = (
566- last_exit .timestamp - timezone .timedelta (milliseconds = 1 ))
568+ last_exit .timestamp - datetime .timedelta (milliseconds = 1 ))
567569 return queryset .filter (** date_filter )
568570
569571
0 commit comments