Skip to content
Snippets Groups Projects
Commit e57b11f2 authored by Alice Heaton's avatar Alice Heaton :speech_balloon:
Browse files

Merge branch 'staging' into chart_widget

Conflicts:
	django/website/dashboard/templates/dashboard/basic-text-widget.html
	django/website/local_settings.py.dev
parents ab0d0c48 cb955809
No related branches found
No related tags found
No related merge requests found
......@@ -8,14 +8,14 @@
</div>
<nav class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li><a href="{% url "dashboard" %}"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a></li>
<li><a class="active" href="{% url "dashboard" %}"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a></li>
<li><a href="{% url "sources" %}"><i class="fa fa-download fa-fw"></i> Sources</a></li>
<li><a href="{% url "data-view" %}"><i class="fa fa-pencil fa-fw"></i> View &amp; Edit</a></li>
</ul>
</nav>
<div class="site-info">
<p>An <a href="http://www.internews.org" title="Internews website">Internews project</a><br />
Site by<a href="http://www.aptivate.org" title="Aptivate website"> Aptivate</a></p>
<p>A project of <a href="http://www.internews.org" title="Internews website">Internews</a><br />
Developed by<a href="http://www.aptivate.org" title="Aptivate website"> Aptivate</a></p>
</div>
<!-- /.sidebar-collapse -->
</div>
......@@ -48,7 +48,8 @@
<!-- Main Content -->
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12 messages-box">
<div class="col-lg-12">
<div class="row messages-box">
{% if messages %}
<ul class="list-unstyled">
{% for message in messages %}
......@@ -56,6 +57,7 @@
{% endfor %}
</ul>
{% endif %}
</div>
{% block maincontent %}
{% endblock maincontent %}
</div>
......
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
......@@ -26,6 +27,16 @@ 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
......@@ -35,7 +46,13 @@ def list(**kwargs):
# FIXME: currently only body exact filtering is supported
view = get_view()
request = request_factory.get(list_url(), kwargs)
return view(request).data
items = view(request).data
for item in items:
item.update(_parse_date_fields(item))
return items
def create(item):
......
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
......@@ -5,7 +5,7 @@
{% block maincontent %}
<div class="col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default login-form">
<div class="login-panel panel panel-default login-form modal-content">
<div class="panel-heading">
<h1 class="panel-title"><i class="fa fa-user fa-fw"></i> HID login</h1>
</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment