forked from loafle/openapi-generator-original
Support date type in python client
This commit is contained in:
@@ -15,12 +15,14 @@ import os
|
|||||||
import re
|
import re
|
||||||
import urllib
|
import urllib
|
||||||
import json
|
import json
|
||||||
import datetime
|
|
||||||
import mimetypes
|
import mimetypes
|
||||||
import random
|
import random
|
||||||
import tempfile
|
import tempfile
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
# python 2 and python 3 compatibility library
|
# python 2 and python 3 compatibility library
|
||||||
from six import iteritems
|
from six import iteritems
|
||||||
|
|
||||||
@@ -146,7 +148,7 @@ class ApiClient(object):
|
|||||||
return obj
|
return obj
|
||||||
elif isinstance(obj, list):
|
elif isinstance(obj, list):
|
||||||
return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj]
|
return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj]
|
||||||
elif isinstance(obj, (datetime.datetime, datetime.date)):
|
elif isinstance(obj, (datetime, date)):
|
||||||
return obj.isoformat()
|
return obj.isoformat()
|
||||||
else:
|
else:
|
||||||
if isinstance(obj, dict):
|
if isinstance(obj, dict):
|
||||||
@@ -203,7 +205,7 @@ class ApiClient(object):
|
|||||||
|
|
||||||
# convert str to class
|
# convert str to class
|
||||||
# for native types
|
# for native types
|
||||||
if klass in ['int', 'float', 'str', 'bool', 'datetime', "object"]:
|
if klass in ['int', 'float', 'str', 'bool', "date", 'datetime', "object"]:
|
||||||
klass = eval(klass)
|
klass = eval(klass)
|
||||||
# for model types
|
# for model types
|
||||||
else:
|
else:
|
||||||
@@ -213,6 +215,8 @@ class ApiClient(object):
|
|||||||
return self.__deserialize_primitive(data, klass)
|
return self.__deserialize_primitive(data, klass)
|
||||||
elif klass == object:
|
elif klass == object:
|
||||||
return self.__deserialize_object()
|
return self.__deserialize_object()
|
||||||
|
elif klass == date:
|
||||||
|
return self.__deserialize_date(data)
|
||||||
elif klass == datetime:
|
elif klass == datetime:
|
||||||
return self.__deserialize_datatime(data)
|
return self.__deserialize_datatime(data)
|
||||||
else:
|
else:
|
||||||
@@ -386,6 +390,21 @@ class ApiClient(object):
|
|||||||
"""
|
"""
|
||||||
return object()
|
return object()
|
||||||
|
|
||||||
|
def __deserialize_date(self, string):
|
||||||
|
"""
|
||||||
|
Deserialize string to date
|
||||||
|
|
||||||
|
:param string: str
|
||||||
|
:return: date
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
from dateutil.parser import parse
|
||||||
|
return parse(string).date()
|
||||||
|
except ImportError:
|
||||||
|
return string
|
||||||
|
except ValueError:
|
||||||
|
raise ApiException(status=0, reason="Failed to parse `{0}` into a date object".format(string))
|
||||||
|
|
||||||
def __deserialize_datatime(self, string):
|
def __deserialize_datatime(self, string):
|
||||||
"""
|
"""
|
||||||
Deserialize string to datetime.
|
Deserialize string to datetime.
|
||||||
|
|||||||
@@ -15,12 +15,14 @@ import os
|
|||||||
import re
|
import re
|
||||||
import urllib
|
import urllib
|
||||||
import json
|
import json
|
||||||
import datetime
|
|
||||||
import mimetypes
|
import mimetypes
|
||||||
import random
|
import random
|
||||||
import tempfile
|
import tempfile
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
# python 2 and python 3 compatibility library
|
# python 2 and python 3 compatibility library
|
||||||
from six import iteritems
|
from six import iteritems
|
||||||
|
|
||||||
@@ -146,7 +148,7 @@ class ApiClient(object):
|
|||||||
return obj
|
return obj
|
||||||
elif isinstance(obj, list):
|
elif isinstance(obj, list):
|
||||||
return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj]
|
return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj]
|
||||||
elif isinstance(obj, (datetime.datetime, datetime.date)):
|
elif isinstance(obj, (datetime, date)):
|
||||||
return obj.isoformat()
|
return obj.isoformat()
|
||||||
else:
|
else:
|
||||||
if isinstance(obj, dict):
|
if isinstance(obj, dict):
|
||||||
@@ -203,7 +205,7 @@ class ApiClient(object):
|
|||||||
|
|
||||||
# convert str to class
|
# convert str to class
|
||||||
# for native types
|
# for native types
|
||||||
if klass in ['int', 'float', 'str', 'bool', 'datetime', "object"]:
|
if klass in ['int', 'float', 'str', 'bool', "date", 'datetime', "object"]:
|
||||||
klass = eval(klass)
|
klass = eval(klass)
|
||||||
# for model types
|
# for model types
|
||||||
else:
|
else:
|
||||||
@@ -213,6 +215,8 @@ class ApiClient(object):
|
|||||||
return self.__deserialize_primitive(data, klass)
|
return self.__deserialize_primitive(data, klass)
|
||||||
elif klass == object:
|
elif klass == object:
|
||||||
return self.__deserialize_object()
|
return self.__deserialize_object()
|
||||||
|
elif klass == date:
|
||||||
|
return self.__deserialize_date(data)
|
||||||
elif klass == datetime:
|
elif klass == datetime:
|
||||||
return self.__deserialize_datatime(data)
|
return self.__deserialize_datatime(data)
|
||||||
else:
|
else:
|
||||||
@@ -386,6 +390,21 @@ class ApiClient(object):
|
|||||||
"""
|
"""
|
||||||
return object()
|
return object()
|
||||||
|
|
||||||
|
def __deserialize_date(self, string):
|
||||||
|
"""
|
||||||
|
Deserialize string to date
|
||||||
|
|
||||||
|
:param string: str
|
||||||
|
:return: date
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
from dateutil.parser import parse
|
||||||
|
return parse(string).date()
|
||||||
|
except ImportError:
|
||||||
|
return string
|
||||||
|
except ValueError:
|
||||||
|
raise ApiException(status=0, reason="Failed to parse `{0}` into a date object".format(string))
|
||||||
|
|
||||||
def __deserialize_datatime(self, string):
|
def __deserialize_datatime(self, string):
|
||||||
"""
|
"""
|
||||||
Deserialize string to datetime.
|
Deserialize string to datetime.
|
||||||
|
|||||||
@@ -63,8 +63,14 @@ class DeserializationTests(unittest.TestCase):
|
|||||||
deserialized = self.deserialize(data, "str")
|
deserialized = self.deserialize(data, "str")
|
||||||
self.assertTrue(isinstance(deserialized, str))
|
self.assertTrue(isinstance(deserialized, str))
|
||||||
|
|
||||||
|
def test_deserialize_date(self):
|
||||||
|
""" deserialize date """
|
||||||
|
data = "1997-07-16"
|
||||||
|
deserialized = self.deserialize(data, "date")
|
||||||
|
self.assertTrue(isinstance(deserialized, datetime.date))
|
||||||
|
|
||||||
def test_deserialize_datetime(self):
|
def test_deserialize_datetime(self):
|
||||||
""" deserialize dateimte """
|
""" deserialize datetime """
|
||||||
data = "1997-07-16T19:20:30.45+01:00"
|
data = "1997-07-16T19:20:30.45+01:00"
|
||||||
deserialized = self.deserialize(data, "datetime")
|
deserialized = self.deserialize(data, "datetime")
|
||||||
self.assertTrue(isinstance(deserialized, datetime.datetime))
|
self.assertTrue(isinstance(deserialized, datetime.datetime))
|
||||||
|
|||||||
Reference in New Issue
Block a user