From 5d1985364688b132c10eed2a2a48086352c912d5 Mon Sep 17 00:00:00 2001 From: Joe Schneider <joeschneider@invenshure.com> Date: Thu, 16 Apr 2015 16:19:28 +0000 Subject: [PATCH] Provide timestamps with timezone in ISO format --- acquisitions.py | 2 +- containers.py | 18 ++++++++++++++++-- sessions.py | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/acquisitions.py b/acquisitions.py index ed2bfff5..4d328099 100644 --- a/acquisitions.py +++ b/acquisitions.py @@ -58,7 +58,7 @@ class Acquisitions(containers.ContainerList): if not self.app.db.sessions.find_one({'_id': _id}): self.abort(404, 'no such Session') query = {'session': _id} - projection = {'label': 1, 'description': 1, 'types': 1, 'notes': 1} + projection = {'label': 1, 'description': 1, 'types': 1, 'notes': 1, 'timestamp': 1, 'timezone': 1} acquisitions = self._get(query, projection, self.request.get('admin').lower() in ('1', 'true')) if self.debug: for acquisition in acquisitions: diff --git a/containers.py b/containers.py index 93b092a9..e4121cb2 100644 --- a/containers.py +++ b/containers.py @@ -6,9 +6,9 @@ log = logging.getLogger('scitran.api') import os import json import hashlib -import datetime import jsonschema import bson.json_util +import pytz import tempdir as tempfile @@ -16,7 +16,6 @@ import base import util import users -import tempdir as tempfile FILE_SCHEMA = { '$schema': 'http://json-schema.org/draft-04/schema#', @@ -112,6 +111,19 @@ FILE_DOWNLOAD_SCHEMA = { } +def fixup_timestamps(item): + if 'timestamp' in item: + if 'timezone' in item: + item_timezone = pytz.timezone(item['timezone']) + else: + item_timezone = pytz.timezone('UTC') + + timestamp = item_timezone.localize(item['timestamp']) + + item['timestamp'] = timestamp.isoformat() + item['timezone'] = item_timezone.zone + + class ContainerList(base.RequestHandler): def _get(self, query, projection, admin_only=False): @@ -127,6 +139,7 @@ class ContainerList(base.RequestHandler): containers = list(self.dbc.find(query, projection)) for container in containers: container['_id'] = str(container['_id']) + fixup_timestamps(container) return containers @@ -154,6 +167,7 @@ class Container(base.RequestHandler): for file_info in container['files']: file_info['path'] = str(_id)[-3:] + '/' + str(_id) + '/' + file_info['name'] + file_info['ext'] container['_id'] = str(container['_id']) + fixup_timestamps(container) return container, user_perm def put(self, _id): diff --git a/sessions.py b/sessions.py index ab076409..e00ea771 100644 --- a/sessions.py +++ b/sessions.py @@ -64,7 +64,7 @@ class Sessions(containers.ContainerList): query = {'project': _id} else: query = {} - projection = {'label': 1, 'subject.code': 1, 'notes': 1, 'project': 1} + projection = {'label': 1, 'subject.code': 1, 'notes': 1, 'project': 1, 'timestamp': 1, 'timezone': 1} sessions = self._get(query, projection, self.request.get('admin').lower() in ('1', 'true')) for sess in sessions: sess['project'] = str(sess['project']) -- GitLab