Skip to content

Commit

Permalink
Merge pull request #572 from OnroerendErfgoed/feature/epic_406/532_tr…
Browse files Browse the repository at this point in the history
…ee_frontend

Feature/epic 406/532 tree frontend
  • Loading branch information
JonasGe committed Jul 9, 2020
2 parents bf93f65 + 1e69dbb commit 78bf8ce
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 16 deletions.
2 changes: 1 addition & 1 deletion atramhasis/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ def includeme(config):
request_method="GET")
config.add_route('search_result', pattern='/conceptschemes/{scheme_id}/c', accept='text/html')
config.add_route('scheme_root', pattern='/conceptschemes/{scheme_id}/c/', accept='text/html')
config.add_route('scheme_tree', pattern='/conceptschemes/{scheme_id}/tree', accept='application/json')
config.add_route('scheme_tree_html', pattern='/conceptschemes/{scheme_id}/tree', accept='text/html')
config.add_route('scheme_tree', pattern='/conceptschemes/{scheme_id}/tree', accept='application/json')

config.add_route('search_result_export', pattern='/conceptschemes/{scheme_id}/c.csv')
config.add_route('atramhasis.edit_conceptscheme', pattern='/conceptschemes/{scheme_id}',
Expand Down
8 changes: 8 additions & 0 deletions atramhasis/static/css/schemetree.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/* line 1, ../scss/schemetree.scss */
body {
font-family: Arial, Helvetica, sans-serif;
}

@page {
margin: 25mm;
}
7 changes: 7 additions & 0 deletions atramhasis/static/scss/schemetree.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
body {
font-family: Arial, Helvetica, sans-serif
}

@page {
margin: 25mm; // margin for each printed piece of paper
}
29 changes: 29 additions & 0 deletions atramhasis/templates/scheme_tree.jinja2
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<!--[if IE 9]><html class="lt-ie10" lang="en" > <![endif]-->
<html class="no-js" lang="{{ request.locale_name }}" prefix="dcat: https://www.w3.org/TR/vocab-dcat/">

{% set app_package = app_package|default('atramhasis', true) -%}
{% set app_name = app_name|default('Atramhasis') %}
{% set copyright_year = copyright_year|default('2016-2017') %}

<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="{{request.static_path(app_package + ':static/css/schemetree.css')}}" />
<title>{{ app_name }}</title>
</head>

{% block content %}
<div class="tree">
<section class="page">
<article>
{%- for item in tree recursive %}
<span>{{ '- ' * (loop.depth-1) }} {{ item.label }}</span><br>
{%- if item.children -%}
{{ loop(item.children) }}
{%- endif %}
{%- endfor %}
</article>
</section>
</div>
{% endblock %}
13 changes: 5 additions & 8 deletions atramhasis/views/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,6 @@ def home_view(self):

return {'conceptschemes': conceptschemes}

@view_config(route_name='scheme_tree_html', renderer='scheme_tree.jinja2')
def scheme_tree_view(self): # pragma: no cover
"""
This view displays the print of a conceptscheme as a hierarchy
"""
return {}

@view_config(route_name='conceptschemes', renderer='atramhasis:templates/conceptschemes.jinja2')
def conceptschemes_view(self):
"""
Expand Down Expand Up @@ -252,13 +245,17 @@ def results_csv(self):
'filename': 'atramhasis_export'
}

@view_config(route_name='scheme_tree_html', renderer='scheme_tree.jinja2')
@view_config(route_name='scheme_tree', renderer='json', accept='application/json')
def results_tree_json(self):
scheme_id = self.request.matchdict['scheme_id']
locale = self.request.locale_name
dicts = self.get_results_tree(scheme_id, locale)
if dicts:
return dicts
if 'text/html' not in self.request.accept:
return dicts
else:
return {'tree': dicts}
else:
return Response(status_int=404)

Expand Down
35 changes: 28 additions & 7 deletions tests/test_functional.py
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,20 @@ def test_no_tree(self):
self.assertEqual('404 Not Found', response.status)


class HtmlTreeFunctionalTests(FunctionalTests):
def _get_default_headers(self):
return {'Accept': 'text/html'}

def test_tree(self):
response = self.testapp.get('/conceptschemes/GEOGRAPHY/tree?_LOCALE_=nl', headers=self._get_default_headers())
self.assertEqual('200 OK', response.status)
self.assertIn('text/html', response.headers['Content-Type'])

def test_no_tree(self):
response = self.testapp.get('/conceptschemes/FOO/tree?_LOCALE_=nl', headers=self._get_default_headers(),
status=404, expect_errors=True)
self.assertEqual('404 Not Found', response.status)

class SkosFunctionalTests(FunctionalTests):

def _get_default_headers(self):
Expand Down Expand Up @@ -553,11 +567,13 @@ def test_create_cache(self):
invalidate_cache_response = self.testapp.get('/admin/tree/invalidate')
self.assertEqual('200 OK', invalidate_cache_response.status)

tree_response = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl')
tree_response = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl',
headers=self._get_default_headers())
self.assertEqual('200 OK', tree_response.status)
self.assertIsNotNone(tree_response.json)

cached_tree_response = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl')
cached_tree_response = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl',
headers=self._get_default_headers())
self.assertEqual('200 OK', cached_tree_response.status)
self.assertIsNotNone(cached_tree_response.json)

Expand All @@ -568,18 +584,23 @@ def test_auto_invalidate_cache(self):
invalidate_cache_response = self.testapp.get('/admin/tree/invalidate')
self.assertEqual('200 OK', invalidate_cache_response.status)

tree_response = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl')
cached_tree_response = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl')
tree_response = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl',
headers=self._get_default_headers())
cached_tree_response = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl',
headers=self._get_default_headers())
self.assertEqual(tree_response.json, cached_tree_response.json)

delete_response = self.testapp.delete('/conceptschemes/MATERIALS/c/31', headers=self._get_default_headers())
delete_response = self.testapp.delete('/conceptschemes/MATERIALS/c/31',
headers=self._get_default_headers())
self.assertEqual('200 OK', delete_response.status)
self.assertIsNotNone(delete_response.json['id'])

tree_response2 = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl')
tree_response2 = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl',
headers=self._get_default_headers())
self.assertNotEqual(tree_response.json, tree_response2.json)

cached_tree_response2 = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl')
cached_tree_response2 = self.testapp.get('/conceptschemes/MATERIALS/tree?_LOCALE_=nl',
headers=self._get_default_headers())
self.assertEqual(tree_response2.json, cached_tree_response2.json)


Expand Down

0 comments on commit 78bf8ce

Please sign in to comment.