diff --git a/django/website/hid/tests/views_tests.py b/django/website/hid/tests/views_tests.py index af305258f431b320507d47317e5c24fad3a9a330..5aa709778e75c1a540d7b437ddc03ab59d9061f4 100644 --- a/django/website/hid/tests/views_tests.py +++ b/django/website/hid/tests/views_tests.py @@ -94,6 +94,7 @@ def test_get_categories_filters_out_removed(): @pytest.fixture def request_item(): '''Create item and request''' + msg = {'body': "Message text"} transport.items.create(msg) diff --git a/django/website/transport/items.py b/django/website/transport/items.py index 2476566c67fbeff9a3d2f66d0aca493962167450..57f34c2e9c591689a00f2ab29ab00dfa03ff302e 100644 --- a/django/website/transport/items.py +++ b/django/website/transport/items.py @@ -1,4 +1,5 @@ from django.core.urlresolvers import reverse +from django.utils.dateparse import parse_datetime from rest_framework.test import APIRequestFactory from rest_framework import status from rest_api.views import ItemViewSet @@ -6,7 +7,6 @@ from rest_api.views import ItemViewSet from .exceptions import TransportException - url_name = 'item-list' actions = { 'get': 'list', @@ -33,7 +33,22 @@ def list(**kwargs): # FIXME: currently only body exact filtering is supported view = get_view() request = request_factory.get(url(), kwargs) - return view(request).data + + items = view(request).data + + date_fields = ('created', 'timestamp') + + for item in items: + item_dict = dict(item) + for date_field in date_fields: + value = item_dict[date_field] + if value is not None: + item_dict[date_field] = parse_datetime(value) + + item.update(item_dict) + + return items + def create(item): """ Create an Item from the given dict """ diff --git a/django/website/transport/tests/item_list_tests.py b/django/website/transport/tests/item_list_tests.py index 479a26ee4cb3f4d09d21b290ec70cf044c756be0..441476628936cb785f2341a43c06739db2ccdd05 100644 --- a/django/website/transport/tests/item_list_tests.py +++ b/django/website/transport/tests/item_list_tests.py @@ -1,4 +1,6 @@ from __future__ import unicode_literals, absolute_import + +from datetime import datetime import pytest from data_layer.tests.factories import ItemFactory @@ -31,3 +33,21 @@ def test_list_items_filters_by_body(): assert len(items) == 1 [item] = items assert item['body'] == 'one' + + +@pytest.mark.django_db +def test_date_fields_are_converted_to_datetimes(): + stored_item = ItemFactory() + + retrieved_items = transport.items.list() + + [retrieved_item] = retrieved_items + + date_fields = ('timestamp', 'created') + + for date_field in date_fields: + stored_date = getattr(stored_item, date_field).replace( + microsecond=0 # MySQL discards microseconds + ) + + assert stored_date == retrieved_item[date_field]