Skip to content

Commit

Permalink
Prototype implementation for import review
Browse files Browse the repository at this point in the history
  • Loading branch information
oliverroick committed Aug 20, 2015
1 parent a355c37 commit 9b3f4d0
Show file tree
Hide file tree
Showing 10 changed files with 423 additions and 58 deletions.
6 changes: 5 additions & 1 deletion geokey/core/url/admin.py
Expand Up @@ -58,9 +58,13 @@
import_views.ImportExistingCategory.as_view(),
name='import_existingcategory'),
url(
r'^projects/(?P<project_id>[0-9]+)/import/(?P<import_id>[0-9]+)/pending-contributions/$',
r'^projects/(?P<project_id>[0-9]+)/import/pending-contributions/$',
import_views.ImportPending.as_view(),
name='import_done'),
url(
r'^projects/(?P<project_id>[0-9]+)/import/pending-contributions/(?P<observation_id>[0-9]+)/$',
import_views.ImportReview.as_view(),
name='import_review'),


# ###########################
Expand Down
43 changes: 43 additions & 0 deletions geokey/dataimport/templatetags/import_tags.py
@@ -1,4 +1,5 @@
from django import template
from django.template.loader import render_to_string


register = template.Library()
Expand All @@ -12,3 +13,45 @@ def display_field(field):
return '-'
else:
return value

@register.simple_tag
def field_html(field, properties):
if field.fieldtype == 'DateField':
classes = 'date'
add_on = 'data-date-format="YYYY-MM-DD"'
elif field.fieldtype == 'DateTimeField':
classes = 'datetime'
add_on = 'data-date-format="YYYY-MM-DD H:mm"'
elif field.fieldtype == 'TimeField':
classes = 'time'
add_on = 'data-date-format="H:mm"'
else:
classes = ''
add_on = ''

return render_to_string(
'categories/field_form.html',
{
'field': field,
'field_type': get_field_type(field.fieldtype),
'value': get_field_value(properties, field.key),
'classes': classes,
'add_on': add_on
}
)


def get_field_type(field_type):
if field_type == 'NumericField':
return 'number'

return 'text'


@register.filter
def get_field_value(properties, key):
value = properties.get(key)
if value is None:
value = ''

return value
62 changes: 62 additions & 0 deletions geokey/dataimport/tests/test_templatetags.py
@@ -1,6 +1,8 @@
from django.test import TestCase
from ..templatetags import import_tags

from geokey.categories.models import TextField, NumericField, DateTimeField


class ImportTagsTest(TestCase):
def test_display_field(self):
Expand All @@ -12,3 +14,63 @@ def test_display_field(self):

value = import_tags.display_field('key:None')
self.assertEqual(value, '-')

def test_get_field_value(self):
properties = {
'key': 'value'
}
value = import_tags.get_field_value(properties, 'key')
self.assertEqual(value, 'value')

value = import_tags.get_field_value(properties, 'none_key')
self.assertEqual(value, '')

def test_get_field_type(self):
self.assertEqual(import_tags.get_field_type('TextField'), 'text')
self.assertEqual(import_tags.get_field_type('NumericField'), 'number')
self.assertEqual(import_tags.get_field_type('DateField'), 'text')
self.assertEqual(import_tags.get_field_type('DateTimeField'), 'text')
self.assertEqual(import_tags.get_field_type('TimeField'), 'text')

def test_get_field_value_text(self):
properties = {
'key': 'value'
}
field = TextField(
name='Field',
key='key'
)

html = import_tags.field_html(field, properties)
self.assertIn('type="text"', html)
self.assertIn('value="value"', html)

def test_get_field_value_number(self):
properties = {
'key': 2
}
field = NumericField(
name='Field',
key='key',
minval=1,
maxval=4
)

html = import_tags.field_html(field, properties)
self.assertIn('type="number"', html)
self.assertIn('value="2"', html)
self.assertIn('min="1"', html)
self.assertIn('max="4"', html)

def test_get_field_value_datetime(self):
properties = {
'key': 2
}
field = DateTimeField(
name='Field',
key='key'
)
html = import_tags.field_html(field, properties)
self.assertIn('type="text"', html)
self.assertIn('data-date-format="YYYY-MM-DD H:mm"', html)
self.assertIn('class="form-control datetime"', html)
27 changes: 22 additions & 5 deletions geokey/dataimport/tests/test_urls.py
Expand Up @@ -5,7 +5,8 @@
ImportUpload,
ImportCreateCategory,
ImportExistingCategory,
ImportPending
ImportPending,
ImportReview
)


Expand Down Expand Up @@ -61,13 +62,29 @@ def test_resolve_url(self):
self.assertEqual(
reverse(
'admin:import_done',
kwargs={'project_id': 3, 'import_id': 5}
kwargs={'project_id': 3}
),
'/admin/projects/3/import/5/pending-contributions/'
'/admin/projects/3/import/pending-contributions/'
)

def test_reverse_url(self):
resolved = resolve('/admin/projects/3/import/5/pending-contributions/')
resolved = resolve('/admin/projects/3/import/pending-contributions/')
self.assertEqual(resolved.func.func_name, ImportPending.__name__)
self.assertEqual(resolved.kwargs['project_id'], '3')
self.assertEqual(resolved.kwargs['import_id'], '5')


class ImportReviewTest(TestCase):
def test_resolve_url(self):
self.assertEqual(
reverse(
'admin:import_review',
kwargs={'project_id': 3, 'observation_id': 5}
),
'/admin/projects/3/import/pending-contributions/5/'
)

def test_reverse_url(self):
resolved = resolve('/admin/projects/3/import/pending-contributions/5/')
self.assertEqual(resolved.func.func_name, ImportReview.__name__)
self.assertEqual(resolved.kwargs['project_id'], '3')
self.assertEqual(resolved.kwargs['observation_id'], '5')

0 comments on commit 9b3f4d0

Please sign in to comment.