Skip to content

Commit

Permalink
Added next url parameter to upload form
Browse files Browse the repository at this point in the history
So user is redirected to the correct page after uploading data
  • Loading branch information
martinburchell committed Aug 7, 2015
1 parent c13bacb commit daf6173
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 4 deletions.
2 changes: 2 additions & 0 deletions django/website/hid/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
12 changes: 11 additions & 1 deletion django/website/hid/tabs/view_and_edit_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,17 @@ def get_context_data(self, tab_instance, request, **kwargs):

# Build the upload form
source = kwargs.get('source')
upload_form = UploadForm(initial={'source': 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 = [
Expand Down
17 changes: 17 additions & 0 deletions django/website/hid/tests/upload_view_tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
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
32 changes: 30 additions & 2 deletions django/website/hid/tests/views_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
DELETE_COMMAND
)

from tabbed_page.tests.factories import (
TabbedPageFactory,
TabInstanceFactory
)

from taxonomies.tests.factories import (
TaxonomyFactory,
TermFactory,
Expand Down Expand Up @@ -167,13 +172,36 @@ def test_get_category_options_orders_by_lowercase_name():

@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={})
context_data = tab.get_context_data(request, source='rapidpro')
tab = ViewAndEditTableTab()

context_data = tab.get_context_data(tab_instance,
request,
source='rapidpro')

form = context_data['upload_form']
assert form.initial == {'source': 'rapidpro'}

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():
Expand Down
2 changes: 1 addition & 1 deletion django/website/hid/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class UploadSpreadsheetView(FormView):
template_name = "hid/upload.html"

def get_success_url(self):
return reverse("data-view")
return self.request.POST.get('next')

def form_valid(self, form):
data = form.cleaned_data
Expand Down

0 comments on commit daf6173

Please sign in to comment.