Skip to content

Commit

Permalink
[#230] Button to flatten
Browse files Browse the repository at this point in the history
Mostly test fixes to allow for this.
  • Loading branch information
kindly committed Jan 11, 2016
1 parent fe92339 commit fa6f10b
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 7 deletions.
4 changes: 4 additions & 0 deletions cove/static/dataexplore/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,7 @@ show-open-if-noscript {
a:hover {
cursor:pointer;
}

.left-space {
margin-left:10px
}
12 changes: 8 additions & 4 deletions cove/templates/explore.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ <h4 class="panel-title">
<div class="panel-body">
{% if conversion == 'flatten' %}

<ul>
<ul class="list-unstyled left-space">
<li>
<a href="{{original_file.url}}">{% blocktrans with file_format=JSON status=original %}{{file_format}} ({{status}}){% endblocktrans %}</a> {{original_file.size|filesizeformat }}
</li>
Expand All @@ -48,7 +48,7 @@ <h4 class="panel-title">

{% elif conversion == 'unflatten' %}

<ul>
<ul class="list-unstyled left-space">
<li>
<a href="{{original_file.url}}">
{% if file_type == 'xlsx' %}
Expand All @@ -65,9 +65,13 @@ <h4 class="panel-title">
</ul>

{% else %}
<ul>
<ul class="list-unstyled left-space">
<li>
<a href="{{original_file.url}}">{% blocktrans with file_format=JSON status=original %}{{file_format}} ({{status}}){% endblocktrans %}</a> {{original_file.size|filesizeformat }}
<span class="pull-left"><a href="{{original_file.url}}">{% blocktrans with file_format=JSON status=original %}{{file_format}} ({{status}}){% endblocktrans %}</a> {{original_file.size|filesizeformat }}
</span>
{% if conversion == 'flattenable' %}
<form method="post"> <button name="flatten" value="true" type="submit" class="btn btn-default btn-xs left-space"> Convert to Spreadsheet </button> {% csrf_token %} </form>
{% endif %}
</li>
</ul>
{% endif %}
Expand Down
6 changes: 5 additions & 1 deletion cove/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ def test_explore_page(client, current_app):
data.current_app = current_app
resp = client.get(data.get_absolute_url())
assert resp.status_code == 200
assert resp.context['conversion'] == 'flattenable'

resp = client.post(data.get_absolute_url(), {'flatten': 'true'})
assert resp.status_code == 200
assert resp.context['conversion'] == 'flatten'
assert 'converted_file_size' in resp.context
if current_app == 'cove-360':
Expand Down Expand Up @@ -124,6 +128,6 @@ def test_explore_unconvertable_json(client):
data = SuppliedData.objects.create()
with open(os.path.join('cove', 'fixtures', 'unconvertable_json.json')) as fp:
data.original_file.save('unconvertable_json.json', UploadedFile(fp))
resp = client.get(data.get_absolute_url())
resp = client.post(data.get_absolute_url(), {'flatten': 'true'})
assert resp.status_code == 200
assert b'could not be converted' in resp.content
6 changes: 5 additions & 1 deletion cove/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,11 @@ def convert_json(request, data):
)
try:
if not os.path.exists(converted_path + '.xlsx'):
flattentool.flatten(data.original_file.file.name, **flatten_kwargs)
if request.POST.get('flatten'):
flattentool.flatten(data.original_file.file.name, **flatten_kwargs)
else:
return {'conversion': 'flattenable'}

context['converted_file_size'] = os.path.getsize(converted_path + '.xlsx')
if request.cove_config['convert_titles']:
flatten_kwargs.update(dict(
Expand Down
9 changes: 8 additions & 1 deletion fts/tests.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import pytest
import requests
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time
import os

Expand Down Expand Up @@ -191,7 +192,8 @@ def test_URL_input(server_url, browser, httpserver, source_filename, prefix, exp
browser.find_element_by_css_selector("#fetchURL > div.form-group > button.btn.btn-primary").click()
check_url_input_result_page(server_url, browser, httpserver, source_filename, prefix, expected_text, conversion_successful)
#refresh page to now check if tests still work after caching some data
browser.refresh()
browser.get(browser.current_url)

check_url_input_result_page(server_url, browser, httpserver, source_filename, prefix, expected_text, conversion_successful)

browser.get(server_url + prefix + '?source_url=' + source_url)
Expand All @@ -200,6 +202,11 @@ def test_URL_input(server_url, browser, httpserver, source_filename, prefix, exp

def check_url_input_result_page(server_url, browser, httpserver, source_filename, prefix, expected_text, conversion_successful):
# We should still be in the correct app
if source_filename.endswith('.json'):
try:
browser.find_element_by_name("flatten").click()
except NoSuchElementException:
pass
body_text = browser.find_element_by_tag_name('body').text
if isinstance(expected_text, str):
expected_text = [expected_text]
Expand Down

0 comments on commit fa6f10b

Please sign in to comment.