diff --git a/wsme/rest/json.py b/wsme/rest/json.py index 0bc29e6..1b567d6 100644 --- a/wsme/rest/json.py +++ b/wsme/rest/json.py @@ -11,8 +11,10 @@ from simplegeneric import generic from wsme.types import Unset import wsme.types +import wsme.utils from wsme.exc import UnknownArgument + try: import simplejson as json except ImportError: @@ -182,21 +184,21 @@ def decimal_fromjson(datatype, value): def date_fromjson(datatype, value): if value is None: return None - return datetime.datetime.strptime(value, '%Y-%m-%d').date() + return wsme.utils.parse_isodate(value) @fromjson.when_object(datetime.time) def time_fromjson(datatype, value): if value is None: return None - return datetime.datetime.strptime(value, '%H:%M:%S').time() + return wsme.utils.parse_isotime(value) @fromjson.when_object(datetime.datetime) def datetime_fromjson(datatype, value): if value is None: return None - return datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S') + return wsme.utils.parse_isodatetime(value) def parse(s, datatypes, bodyarg, encoding='utf8'): diff --git a/wsme/rest/xml.py b/wsme/rest/xml.py index 01ffaed..eb8ce7e 100644 --- a/wsme/rest/xml.py +++ b/wsme/rest/xml.py @@ -213,26 +213,21 @@ def unicode_fromxml(datatype, element): def date_fromxml(datatype, element): if element.get('nil') == 'true': return None - return datetime.datetime.strptime(element.text, '%Y-%m-%d').date() + return wsme.utils.parse_isodate(element.text) @fromxml.when_object(datetime.time) def time_fromxml(datatype, element): if element.get('nil') == 'true': return None - m = time_re.match(element.text) - if m: - return datetime.time( - int(m.group('h')), - int(m.group('m')), - int(m.group('s'))) + return wsme.utils.parse_isotime(element.text) @fromxml.when_object(datetime.datetime) def datetime_fromxml(datatype, element): if element.get('nil') == 'true': return None - return datetime.datetime.strptime(element.text, '%Y-%m-%dT%H:%M:%S') + return wsme.utils.parse_isodatetime(element.text) def parse(s, datatypes, bodyarg):