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