From 1bbd15abceeda6b3adffb8fceeee70342dba5cd4 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Sun, 20 May 2012 14:23:08 +0100 Subject: [PATCH] Fix date/time fuctions for timezone information --- app/api/auth.py | 5 ++++- app/api/handlers/oauth.py | 15 ++++++--------- app/api/handlers/v1.py | 14 ++++++-------- app/hr/views.py | 3 ++- app/sso/middleware.py | 5 ++--- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/app/api/auth.py b/app/api/auth.py index ca5bd4e..cc3ca39 100644 --- a/app/api/auth.py +++ b/app/api/auth.py @@ -1,7 +1,10 @@ from urllib import urlencode from datetime import datetime + from django.http import HttpResponseForbidden from django.contrib.auth.models import AnonymousUser +from django.utils.timezone import now + from api.models import AuthAPIKey, AuthAPILog @@ -21,7 +24,7 @@ class APIKeyAuthentication(object): url = "%s?%s" % (request.path, urlencode(params)) else: url = request.path - AuthAPILog(key=keyobj, access_datetime=datetime.utcnow(), url=url).save() + AuthAPILog(key=keyobj, access_datetime=now(), url=url).save() request.user = AnonymousUser() request.api_key = keyobj return True diff --git a/app/api/handlers/oauth.py b/app/api/handlers/oauth.py index 6d53023..1446774 100644 --- a/app/api/handlers/oauth.py +++ b/app/api/handlers/oauth.py @@ -5,17 +5,16 @@ from operator import itemgetter from django.contrib.auth import login, logout, authenticate from django.contrib.auth.models import User - from django.http import HttpResponse from django.core.urlresolvers import reverse from django.shortcuts import get_object_or_404 from django.conf import settings +from django.utils.timezone import now, utc from piston.handler import BaseHandler from piston.utils import rc, throttle from api.models import AuthAPIKey, AuthAPILog - from eve_proxy.models import CachedDocument from eve_proxy.exceptions import * from eve_api.app_defines import * @@ -54,12 +53,10 @@ class OAuthOpTimerHandler(BaseHandler): for node in dom.getElementsByTagName('rowset')[0].childNodes: if node.nodeType == 1: - ownerID = node.getAttribute('ownerID') + ownerID = node.getAttribute('ownerID') if ownerID != '1': - date = node.getAttribute('eventDate') - dt = datetime.strptime(date, '%Y-%m-%d %H:%M:%S') - now = datetime.utcnow() - startsIn = int(dt.strftime('%s')) - int(now.strftime('%s')) + dt = datetime.strptime(node.getAttribute('eventDate'), '%Y-%m-%d %H:%M:%S').replace(tzinfo=utc) + startsIn = int(dt.strftime('%s')) - int(now().strftime('%s')) duration = int(node.getAttribute('duration')) fid = re.search('topic=[\d]+', node.getAttribute('eventText')) @@ -84,7 +81,7 @@ class OAuthOpTimerHandler(BaseHandler): 'isImportant': int(node.getAttribute('importance')), 'eventText': node.getAttribute('eventText'), 'endsIn':endsIn, - 'forumLink': forumlink} + 'forumLink': forumlink} events.append(event) if len(events) == 0: @@ -101,7 +98,7 @@ class OAuthOpTimerHandler(BaseHandler): 'forumLink': ''}]} else: events.sort(key=itemgetter('startsIn')) - return {'ops': events, 'doc_time': cached_doc.time_retrieved, 'cache_until': cached_doc.cached_until, 'current_time': datetime.utcnow() } + return {'ops': events, 'doc_time': cached_doc.time_retrieved, 'cache_until': cached_doc.cached_until, 'current_time': now() } class OAuthCharacterHandler(BaseHandler): diff --git a/app/api/handlers/v1.py b/app/api/handlers/v1.py index 2dd59c5..bfc96ec 100644 --- a/app/api/handlers/v1.py +++ b/app/api/handlers/v1.py @@ -4,11 +4,11 @@ from xml.dom import minidom from operator import itemgetter from django.contrib.auth.models import User - from django.http import HttpResponse from django.core.urlresolvers import reverse from django.shortcuts import get_object_or_404 from django.conf import settings +from django.utils.timezone import now from BeautifulSoup import BeautifulSoup from piston.handler import BaseHandler @@ -194,12 +194,10 @@ class OpTimerHandler(BaseHandler): events = [] for node in dom.getElementsByTagName('rowset')[0].childNodes: if node.nodeType == 1: - ownerID = node.getAttribute('ownerID') + ownerID = node.getAttribute('ownerID') if ownerID != '1': - date = node.getAttribute('eventDate') - dt = datetime.strptime(date, '%Y-%m-%d %H:%M:%S') - now = datetime.utcnow() - startsIn = int(dt.strftime('%s')) - int(now.strftime('%s')) + dt = datetime.strptime(node.getAttribute('eventDate'), '%Y-%m-%d %H:%M:%S').replace(tzinfo=utc) + startsIn = int(dt.strftime('%s')) - int(now().strftime('%s')) duration = int(node.getAttribute('duration')) fid = re.search('topic=[\d]+', node.getAttribute('eventText')) @@ -224,7 +222,7 @@ class OpTimerHandler(BaseHandler): 'isImportant': int(node.getAttribute('importance')), 'eventText': ' '.join(BeautifulSoup(node.getAttribute('eventText')).findAll(text=True)), 'endsIn':endsIn, - 'forumLink': forumlink} + 'forumLink': forumlink} events.append(event) if len(events) == 0: return {'ops':[{ @@ -240,7 +238,7 @@ class OpTimerHandler(BaseHandler): 'forumLink': ''}]} else: events.sort(key=itemgetter('startsIn')) - return {'ops': events, 'doc_time': cached_doc.time_retrieved, 'cache_until': cached_doc.cached_until, 'current_time': datetime.utcnow() } + return {'ops': events, 'doc_time': cached_doc.time_retrieved, 'cache_until': cached_doc.cached_until, 'current_time': now() } class BlacklistHandler(BaseHandler): diff --git a/app/hr/views.py b/app/hr/views.py index 66a192b..0994da4 100644 --- a/app/hr/views.py +++ b/app/hr/views.py @@ -13,6 +13,7 @@ from django.forms.extras.widgets import SelectDateWidget from django.views.generic import TemplateView, DetailView, FormView, CreateView, ListView from django.views.generic.detail import BaseDetailView from django.conf import settings +from django.utils.timezone import now from gargoyle import gargoyle @@ -354,7 +355,7 @@ class HrBlacklistUser(FormView): self.source = BlacklistSource.objects.get(id=1) self.expiry = form.cleaned_data.get('expiry_date', None) if not self.expiry: - self.expiry = datetime.utcnow() + timedelta(days=50*365) # 50 year default + self.expiry = now() + timedelta(days=50*365) # 50 year default self.level = form.cleaned_data.get('level', 0) self.reason = form.cleaned_data.get('reason', 'No reason provided') diff --git a/app/sso/middleware.py b/app/sso/middleware.py index 0112476..a04e86e 100644 --- a/app/sso/middleware.py +++ b/app/sso/middleware.py @@ -1,5 +1,6 @@ from django.db import IntegrityError from django.contrib.auth import logout +from django.utils.timezone import utc, now class InactiveLogoutMiddleware(object): """ @@ -59,7 +60,5 @@ class IPTrackingMiddleware(object): if request.user and not request.user.is_anonymous(): ip, created = SSOUserIPAddress.objects.get_or_create(user=request.user, ip_address=request.META['REMOTE_ADDR']) - if created: - ip.first_seen = datetime.utcnow() - ip.last_seen = datetime.utcnow() + ip.last_seen = now() ip.save()