Skip to content

Commit 05ed7a0

Browse files
committed
Fix read response
1 parent 1b4173f commit 05ed7a0

1 file changed

Lines changed: 16 additions & 6 deletions

File tree

src/read.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from src.schemas import ensure_schema, ensure_logged_in_user, ensure_role
22
from src import util
3-
import json
3+
from datetime import date, datetime
44

55
def tidy_results(res):
66
"""
@@ -11,6 +11,16 @@ def tidy_results(res):
1111
del i['password']
1212
return res
1313

14+
def stringify_timestamps(res):
15+
"""
16+
Function used to stringify timestamps from datetime format
17+
"""
18+
for obj in res:
19+
if "timestamps" in obj["day_of"]:
20+
for event in obj["day_of"]["timestamps"]:
21+
for i in range(len(obj["day_of"]["timestamps"].get(event))):
22+
obj["day_of"]["timestamps"].get(event)[i] = obj["day_of"]["timestamps"].get(event)[i] .isoformat()
23+
return res
1424

1525
@ensure_schema({
1626
"type": "object",
@@ -62,8 +72,8 @@ def user_read(event, context, user):
6272
if user['registration_status'] in ['unregistered', 'registered', 'rejected']:
6373
if 'travelling_from' in user and 'reimbursement' in user['travelling_from']:
6474
del user['travelling_from']['reimbursement']
65-
66-
return {"statusCode": 200, "body": [json.dumps(user, default=str)]}
75+
76+
return {"statusCode": 200, "body": [stringify_timestamps(user)]}
6777

6878

6979
@ensure_role([['director', 'organizer']], on_failure=lambda e, c, u, *a: user_read(e, c, u))
@@ -77,7 +87,7 @@ def organizer_read(event, context, user):
7787

7888
# otherwise, the organizer submitted query is ran on the database and results are returned
7989
user_coll = util.coll('users')
80-
return {"statusCode": 200, "body": json.dumps(tidy_results(list(user_coll.find(event['query'])), default=str))}
90+
return {"statusCode": 200, "body": stringify_timestamps(tidy_results(list(user_coll.find(event['query']))))}
8191

8292

8393
@ensure_schema({
@@ -102,5 +112,5 @@ def read_info(event, context, user=None):
102112
tests = util.coll('users')
103113

104114
if event.get('aggregate', False):
105-
return {"statusCode": 200, "body": json.dumps(list(tests.aggregate(event['query'])), default=str)}
106-
return {"statusCode": 200, "body": json.dumps(tidy_results(list(tests.find(event['query']))), default=str)}
115+
return {"statusCode": 200, "body": stringify_timestamps(list(tests.aggregate(event['query'])))}
116+
return {"statusCode": 200, "body": stringify_timestamps(tidy_results(list(tests.find(event['query']))))}

0 commit comments

Comments
 (0)