Skip to content

Commit 1b7c4ff

Browse files
committed
🐛 fix invalid timezone on fetched leancloud.Object#created_at and
leancloud.Object#updated_at
1 parent 83890d2 commit 1b7c4ff

2 files changed

Lines changed: 24 additions & 2 deletions

File tree

leancloud/object_.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -321,9 +321,12 @@ def _merge_metadata(self, server_data):
321321
self.id = server_data[key]
322322
else:
323323
if isinstance(server_data[key], string_types):
324-
dt = iso8601.parse_date(server_data[key])
324+
dt = utils.decode(key, {
325+
'__type': 'Date',
326+
'iso': server_data[key]
327+
})
325328
elif server_data[key]['__type'] == 'Date':
326-
dt = iso8601.parse_date(server_data[key]['iso'])
329+
dt = utils.decode(key, server_data)
327330
else:
328331
raise TypeError('Invalid date type')
329332
server_data[key] = dt

tests/test_object.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
from __future__ import print_function
66

77
import os
8+
from datetime import datetime
9+
from datetime import timedelta
810

11+
from dateutil import tz
912
from nose.tools import with_setup # type: ignore
1013
from nose.tools import ok_ # type: ignore
1114
from nose.tools import eq_ # type: ignore
@@ -352,3 +355,19 @@ def test_create_without_data(): # type: () -> None
352355
assert foo1.id == foo2.id
353356
assert Foo.query.get(foo1.id).get('aNumber') == 3
354357
foo1.destroy()
358+
359+
360+
@with_setup(setup_func)
361+
def test_time_zone():
362+
TestTimeZone = Object.extend('TestTimeZone')
363+
now = datetime.now()
364+
obj = TestTimeZone()
365+
obj.set('date', now)
366+
obj.save()
367+
368+
obj = TestTimeZone.query.get(obj.id)
369+
assert(obj.created_at.tzinfo == tz.tzlocal())
370+
assert(obj.updated_at.tzinfo == tz.tzlocal())
371+
assert(obj.get('date').tzinfo == tz.tzlocal())
372+
373+
obj.destroy()

0 commit comments

Comments
 (0)