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

Merge branch 'make_view_edit_view_into_tab' of...

Merge branch 'make_view_edit_view_into_tab' of github.com:aptivate/internewshid into make_view_edit_view_into_tab
parents 8bdff06f 592a7c76
No related branches found
No related tags found
1 merge request!26Make view edit view into tab
......@@ -6,4 +6,6 @@ class UploadForm(forms.Form):
source = forms.ChoiceField(choices=get_spreadsheet_choices,
widget=forms.HiddenInput,
required=True)
next = forms.CharField(widget=forms.HiddenInput,
required=True)
file = forms.FileField()
......@@ -138,7 +138,18 @@ class ViewAndEditTableTab(object):
)
# Build the upload form
upload_form = UploadForm(initial={'source': 'geopoll'})
source = kwargs.get('source')
next_url = reverse(
'tabbed-page',
kwargs={
'name': tab_instance.page.name,
'tab_name': tab_instance.name,
})
upload_form = UploadForm(initial={
'source': source,
'next': next_url,
})
# Build the actions drop down
actions = [
......
from mock import Mock
from django.core.urlresolvers import reverse
from ..views import UploadSpreadsheetView
def test_redirects_to_next_url_after_upload():
next_url = reverse('tabbed-page',
kwargs={'name': 'main', 'tab_name': 'rumors'})
view = UploadSpreadsheetView()
view.request = Mock(POST={'next': next_url})
url = view.get_success_url()
assert url == next_url
from mock import Mock
import pytest
from django.contrib.messages.storage.fallback import FallbackStorage
......@@ -13,6 +14,11 @@ from hid.tabs.view_and_edit_table import (
DELETE_COMMAND
)
from tabbed_page.tests.factories import (
TabbedPageFactory,
TabInstanceFactory
)
from taxonomies.tests.factories import (
TaxonomyFactory,
TermFactory,
......@@ -167,6 +173,40 @@ def test_get_category_options_orders_by_lowercase_name():
assert options == expected
@pytest.mark.django_db
def test_upload_form_source_read_from_settings():
page = TabbedPageFactory()
tab_instance = TabInstanceFactory(page=page)
request = Mock(GET={})
tab = ViewAndEditTableTab()
context_data = tab.get_context_data(tab_instance,
request,
source='rapidpro')
form = context_data['upload_form']
assert form.initial.get('source') == 'rapidpro'
@pytest.mark.django_db
def test_upload_form_next_url_read_from_tab_instance():
page = TabbedPageFactory(name='main')
tab_instance = TabInstanceFactory(page=page, name='rumors')
request = Mock(GET={})
tab = ViewAndEditTableTab()
context_data = tab.get_context_data(tab_instance,
request,
source='rapidpro')
form = context_data['upload_form']
expected_url = reverse('tabbed-page',
kwargs={'name': 'main', 'tab_name': 'rumors'})
assert form.initial.get('next') == expected_url
def test_views_item_get_request_parameters_renames_items_of_active_location():
query = QueryDict(
'action=something-bottom&item-top=top-value&item-bottom=bottom-value'
......
......@@ -33,7 +33,7 @@ class UploadSpreadsheetView(FormView):
template_name = "hid/upload.html"
def get_success_url(self):
return reverse("tabbed-page", name="main", tab_name="all")
return self.request.POST.get('next')
def form_valid(self, form):
data = form.cleaned_data
......
......@@ -36,7 +36,7 @@ def _get_rendering_details(context, tab_instance):
if tab_instance.settings:
settings = tab_instance.settings
else:
settings = {} # TODO: json field doesn't default to this?
settings = {}
request = context.get('request')
......
......@@ -15,6 +15,7 @@ class TabbedPageFactory(DjangoModelFactory):
class TabInstanceFactory(DjangoModelFactory):
class Meta:
model = TabInstance
django_get_or_create = ('name',)
name = fuzzy.FuzzyText()
label = fuzzy.FuzzyText()
......@@ -26,7 +26,6 @@ def setup_function(function):
clear_tabs()
@pytest.mark.django_db
@patch(render_to_string_method)
def test_uses_template_name(mock_render):
......
......@@ -32,9 +32,9 @@ class TabbedPageView(TemplateView):
candidates = []
tab_name = self.kwargs.get('tab_name')
if tab_name:
candidates = self.page.tabs.all().filter(name=tab_name)
candidates = self.page.tabs.filter(name=tab_name)
if len(candidates) == 0:
candidates = self.page.tabs.all().filter(default=True)
candidates = self.page.tabs.filter(default=True)
if len(candidates) == 0:
candidates = self.page.tabs.all()
if len(candidates) > 0:
......
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