Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2013-08-04 16:30:39 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2013-08-04 16:30:51 (GMT)
commitfc20557e26eefa2843686d1e7f73df6b4e12f6fb (patch)
tree427d2a9211c6d334f6c11222bb40add904010ae1
parent31610bc93b9e8cf4e818dac76f5b77dcbe1e2fec (diff)
Properly convert HTTP_IF_MODIFIED_SINCE to UNIX seconds
-rw-r--r--doc/objects.dia16
-rw-r--r--sugar_network/toolkit/router.py19
-rw-r--r--sugar_network/toolkit/rrd.py3
3 files changed, 23 insertions, 15 deletions
diff --git a/doc/objects.dia b/doc/objects.dia
index c010b7a..727b7e3 100644
--- a/doc/objects.dia
+++ b/doc/objects.dia
@@ -526,7 +526,7 @@
<dia:point val="3,6"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="2.985,5.985;14.5475,28.015"/>
+ <dia:rectangle val="2.985,5.985;14.5475,28.815"/>
</dia:attribute>
<dia:attribute name="elem_corner">
<dia:point val="3,6"/>
@@ -535,7 +535,7 @@
<dia:real val="11.532500000000001"/>
</dia:attribute>
<dia:attribute name="elem_height">
- <dia:real val="22.000000000000004"/>
+ <dia:real val="22.800000000000004"/>
</dia:attribute>
<dia:attribute name="name">
<dia:string>#User#</dia:string>
@@ -777,7 +777,7 @@
<dia:string>#0#</dia:string>
</dia:attribute>
<dia:attribute name="comment">
- <dia:string>#User's birthday in UNIX seconds#</dia:string>
+ <dia:string>#User's birthday in seconds from UNIX epoch#</dia:string>
</dia:attribute>
<dia:attribute name="visibility">
<dia:enum val="0"/>
@@ -801,16 +801,16 @@
<dia:point val="-13,6"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="-13.015,5.985;-1.23,26.015"/>
+ <dia:rectangle val="-13.015,5.985;-0.9725,24.415"/>
</dia:attribute>
<dia:attribute name="elem_corner">
<dia:point val="-13,6"/>
</dia:attribute>
<dia:attribute name="elem_width">
- <dia:real val="11.754999999999999"/>
+ <dia:real val="12.012499999999999"/>
</dia:attribute>
<dia:attribute name="elem_height">
- <dia:real val="20"/>
+ <dia:real val="18.400000000000002"/>
</dia:attribute>
<dia:attribute name="name">
<dia:string>#Resource#</dia:string>
@@ -937,7 +937,7 @@
<dia:string>##</dia:string>
</dia:attribute>
<dia:attribute name="comment">
- <dia:string>#The UNIX seconds in UTC timezone of the time when object was created#</dia:string>
+ <dia:string>#Seconds from UNIX epoch when the object was created#</dia:string>
</dia:attribute>
<dia:attribute name="visibility">
<dia:enum val="0"/>
@@ -960,7 +960,7 @@
<dia:string>##</dia:string>
</dia:attribute>
<dia:attribute name="comment">
- <dia:string>#The UNIX seconds in UTC timezone of the time when object was modified#</dia:string>
+ <dia:string>#Seconds from UNIX epoch when the object was modified#</dia:string>
</dia:attribute>
<dia:attribute name="visibility">
<dia:enum val="0"/>
diff --git a/sugar_network/toolkit/router.py b/sugar_network/toolkit/router.py
index 58317b1..2331a9d 100644
--- a/sugar_network/toolkit/router.py
+++ b/sugar_network/toolkit/router.py
@@ -16,9 +16,9 @@
import os
import cgi
import json
-import time
import types
import logging
+import calendar
import mimetypes
from bisect import bisect_left
from urllib import urlencode
@@ -105,6 +105,8 @@ class Request(dict):
content_type = None
content_length = 0
principal = None
+ _if_modified_since = None
+ _accept_language = None
def __init__(self, environ=None, method=None, path=None, cmd=None,
**kwargs):
@@ -190,13 +192,20 @@ class Request(dict):
@property
def if_modified_since(self):
- value = parsedate(self.environ.get('HTTP_IF_MODIFIED_SINCE'))
- if value is not None:
- return time.mktime(value)
+ if self._if_modified_since is None:
+ value = parsedate(self.environ.get('HTTP_IF_MODIFIED_SINCE'))
+ if value is not None:
+ self._if_modified_since = calendar.timegm(value)
+ else:
+ self._if_modified_since = 0
+ return self._if_modified_since
@property
def accept_language(self):
- return _parse_accept_language(self.environ.get('HTTP_ACCEPT_LANGUAGE'))
+ if self._accept_language is None:
+ self._accept_language = _parse_accept_language(
+ self.environ.get('HTTP_ACCEPT_LANGUAGE'))
+ return self._accept_language
@property
def accept_encoding(self):
diff --git a/sugar_network/toolkit/rrd.py b/sugar_network/toolkit/rrd.py
index 28c8be5..6b5d6e8 100644
--- a/sugar_network/toolkit/rrd.py
+++ b/sugar_network/toolkit/rrd.py
@@ -20,7 +20,6 @@ import os
import time
import bisect
import logging
-from datetime import datetime
from os.path import exists, join
@@ -113,7 +112,7 @@ class _DbSet(object):
self._field_names.sort()
if not timestamp:
- timestamp = int(time.mktime(datetime.utcnow().utctimetuple()))
+ timestamp = int(time.time())
timestamp = timestamp / self._step * self._step
db = self._get_db(timestamp)