diff --git a/django/website/transport/items.py b/django/website/transport/items.py index a8bb9cf66d3802385229a78e7ee5110cc1dcedbd..6903ca92463b73d870eace446bed4e9e35db328b 100644 --- a/django/website/transport/items.py +++ b/django/website/transport/items.py @@ -7,7 +7,6 @@ from rest_api.views import ItemViewSet from .exceptions import TransportException -url_name = 'item-list' actions = { 'get': 'list', 'post': 'create', @@ -16,14 +15,28 @@ actions = { request_factory = APIRequestFactory() -def url(): - return reverse(url_name) +def list_url(): + return reverse('item-list') + + +def detail_url(id): + return reverse('item-detail', args=[id]) def get_view(): return ItemViewSet.as_view(actions) +def _parse_date_fields(item): + date_fields = ('created', 'timestamp') + 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) + return item_dict + + def list(**kwargs): """ Return a list of Items @@ -32,29 +45,20 @@ def list(**kwargs): """ # FIXME: currently only body exact filtering is supported view = get_view() - request = request_factory.get(url(), kwargs) + request = request_factory.get(list_url(), kwargs) 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) + item.update(_parse_date_fields(item)) return items - def create(item): """ Create an Item from the given dict """ view = get_view() - request = request_factory.post(url(), item) + request = request_factory.post(list_url(), item) response = view(request) if status.is_success(response.status_code): return response.data @@ -65,10 +69,8 @@ def create(item): def delete(id): """ Delete the Item wit the given ID """ - print("deleting {}".format(id)) view = get_view() - url = '/items/{}/'.format(id) - request = request_factory.delete(url) + request = request_factory.delete(detail_url(id)) return view(request, pk=id)