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/settings.py b/django/website/settings.py index e39f65f2d2408b11ee5173143bfa56e4b112cd7e..f6c0b5a1f18c65db373e72237e51376705d8a8f6 100644 --- a/django/website/settings.py +++ b/django/website/settings.py @@ -63,7 +63,7 @@ USE_L10N = True # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-tz USE_TZ = True -SHORT_DATETIME_FORMAT = 'D d/m/y H:i' +SHORT_DATETIME_FORMAT = 'd M Y H:i' # TODO this is used in hid/tables.py # and should probably use FORMAT_MODULE_PATH instead.? diff --git a/django/website/transport/items.py b/django/website/transport/items.py index 31dbf26f5a85998473638e47a4d6c545d939e86c..a8bb9cf66d3802385229a78e7ee5110cc1dcedbd 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 @@ -32,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): diff --git a/django/website/transport/tests/item_list_tests.py b/django/website/transport/tests/item_list_tests.py index 479a26ee4cb3f4d09d21b290ec70cf044c756be0..bb9e1bc59b8682fca782579564e9282f728a2e0d 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,32 @@ 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] + + +@pytest.mark.django_db +def test_null_date_field_not_converted_to_datetime(): + ItemFactory(timestamp=None) + + retrieved_items = transport.items.list() + + [retrieved_item] = retrieved_items + + assert retrieved_item['timestamp'] is None