use safe parse_timestamp to parse timestamps, fixes #2994

also: refactor so it is possible to get tz-unaware datetime
objects from parse_timestamp.
This commit is contained in:
Thomas Waldmann 2017-09-05 05:51:00 +02:00
parent eebb117349
commit 7996a87357
2 changed files with 6 additions and 3 deletions

View File

@ -166,7 +166,7 @@ class Manifest:
@property
def last_timestamp(self):
return datetime.strptime(self.timestamp, ISO_FORMAT)
return parse_timestamp(self.timestamp, tzinfo=None)
@classmethod
def load(cls, repository, operations, key=None, force_tam_not_required=False):

View File

@ -10,10 +10,13 @@ def to_localtime(ts):
return datetime(*time.localtime((ts - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds())[:6])
def parse_timestamp(timestamp):
def parse_timestamp(timestamp, tzinfo=timezone.utc):
"""Parse a ISO 8601 timestamp string"""
fmt = ISO_FORMAT if '.' in timestamp else ISO_FORMAT_NO_USECS
return datetime.strptime(timestamp, fmt).replace(tzinfo=timezone.utc)
dt = datetime.strptime(timestamp, fmt)
if tzinfo is not None:
dt = dt.replace(tzinfo=tzinfo)
return dt
def timestamp(s):