From 5d9763b386f8c67b2706944b9b291c22d009483f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ensar=20Saraj=C4=8Di=C4=87?= Date: Sat, 3 Nov 2018 15:32:46 +0100 Subject: [PATCH] Use standard formatting for jsonql datetime columns --- app/devices/api.py | 13 +++++-------- app/jsonql/api.py | 2 +- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/app/devices/api.py b/app/devices/api.py index cee336d..260e2d7 100644 --- a/app/devices/api.py +++ b/app/devices/api.py @@ -1,13 +1,14 @@ import sys import hmac import urllib.parse +import datetime from .models import (Device, Recording, DeviceAssociation, DeviceType, AccessLevel) from itsdangerous import URLSafeSerializer -from app.core import app, db +from app.core import app from app.jsonql import api as jsonql @@ -335,7 +336,7 @@ def run_custom_query(device_id, request): if not Device.exists(id=device_id): raise ValueError("Device does not exist!") - def recording_field_provider(name, formatted=False): + def recording_field_provider(name): if name == 'record_value': return Recording.record_value if name == 'record_type': @@ -343,14 +344,8 @@ def run_custom_query(device_id, request): if name == 'device_id': return Recording.device_id if name == 'recorded_at': - if formatted: - return db.func.to_char( - Recording.recorded_at, 'YYYY-MM-DD"T"HH24:MI:SSOF') return Recording.recorded_at if name == 'received_at': - if formatted: - return db.func.to_char( - Recording.received_at, 'YYYY-MM-DD"T"HH24:MI:SSOF') return Recording.received_at resulting_query = jsonql.run_query_on(Recording.query.with_entities(), @@ -363,6 +358,8 @@ def run_custom_query(device_id, request): for row in result: formatted_row = {} for idx, col in enumerate(row): + if isinstance(col, datetime.datetime): + col = col.replace(tzinfo=datetime.timezone.utc).isoformat() formatted_row[resulting_columns[idx]['name']] = col formatted_result.append(formatted_row) return formatted_result diff --git a/app/jsonql/api.py b/app/jsonql/api.py index 0219e41..8cf31e3 100644 --- a/app/jsonql/api.py +++ b/app/jsonql/api.py @@ -35,7 +35,7 @@ def run_query_on(query_object, field_provider, **kwargs): for selection in selections.keys(): entities.append(get_column(selections[selection], - field_provider(selection, True)).label(selection)) + field_provider(selection)).label(selection)) query_object = query_object.with_entities(*entities)