allow isoformat(None)

simplifies "if timestamp is None" cases when we are just using it to serialize nullable timestamps to JSON
This commit is contained in:
Min RK
2018-04-05 11:31:17 +02:00
parent 6f8a34127b
commit 31d3f7a20b
2 changed files with 6 additions and 13 deletions

View File

@@ -99,14 +99,9 @@ class APIHandler(BaseHandler):
def server_model(self, spawner):
"""Get the JSON model for a Spawner"""
last_activity = spawner.orm_spawner.last_activity
# don't call isoformat if last_activity is None
if last_activity:
last_activity = isoformat(last_activity)
return {
'name': spawner.name,
'last_activity': last_activity,
'last_activity': isoformat(spawner.orm_spawner.last_activity),
'started': isoformat(spawner.orm_spawner.started),
'pending': spawner.pending,
'url': url_path_join(spawner.user.url, spawner.name, '/'),
@@ -118,12 +113,6 @@ class APIHandler(BaseHandler):
if isinstance(user, orm.User):
user = self.users[user.id]
last_activity = user.last_activity
# don't call isoformat if last_activity is None
if last_activity:
last_activity = isoformat(last_activity)
model = {
'kind': 'user',
'name': user.name,
@@ -133,8 +122,8 @@ class APIHandler(BaseHandler):
'progress_url': user.spawner._progress_url if user.active else None,
'pending': None,
'created': isoformat(user.created),
'last_activity': last_activity,
'started': None,
'last_activity': isoformat(user.last_activity),
}
if '' in user.spawners:
server_model = self.server_model(user.spawners[''])

View File

@@ -45,6 +45,10 @@ def isoformat(dt):
Naïve datetime objects are assumed to be UTC
"""
# allow null timestamps to remain None without
# having to check if isoformat should be called
if dt is None:
return None
if dt.tzinfo:
dt = dt.astimezone(timezone.utc).replace(tzinfo=None)
return dt.isoformat() + 'Z'