Skip to content

Commit

Permalink
simplify redirects
Browse files Browse the repository at this point in the history
  • Loading branch information
rloomans committed Feb 25, 2017
1 parent 05dc8c9 commit 13a75d4
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 25 deletions.
9 changes: 6 additions & 3 deletions teamtemp/tests/view/admin_only_view_testcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@ def admin_url(self, for_team=False):
else:
return reverse('admin', kwargs={'survey_id': self.teamtemp.id})

def login_url(self):
return reverse('login', kwargs={'survey_id': self.teamtemp.id})
def login_url(self, redirect_to=None):
if not redirect_to:
redirect_to = self.admin_url()

return reverse('login', kwargs={'survey_id': self.teamtemp.id, 'redirect_to': redirect_to})

def assertIsPasswordForm(self, response):
self.assertContains(response, 'Enter the admin password')
Expand All @@ -42,7 +45,7 @@ def assertIsAdminForm(self, response, for_team=False):

def assertDoesLoginRedirect(self, response, expected_url=None, redirect_to=None):
if not expected_url:
expected_url = self.login_url() + '?' + urlencode({'redirect_to': (redirect_to or self.admin_url())})
expected_url = self.login_url(redirect_to=redirect_to)

self.assertRedirects(response, expected_url=expected_url, status_code=status.HTTP_302_FOUND)
self.assertIsPasswordForm(response)
Expand Down
1 change: 1 addition & 0 deletions teamtemp/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
url(r'^user/?$', user_view, name='user'),
url(r'^admin/(?P<survey_id>[0-9a-zA-Z]{8})$', admin_view, name='admin'),
url(r'^login/(?P<survey_id>[0-9a-zA-Z]{8})$', login_view, name='login'),
url(r'^login/(?P<survey_id>[0-9a-zA-Z]{8})(?P<redirect_to>/.+)$', login_view, name='login'),
url(r'^set/(?P<survey_id>[0-9a-zA-Z]{8})$', set_view, name='set'),
url(r'^admin/(?P<survey_id>[0-9a-zA-Z]{8})/(?P<team_name>[-\w]{1,64})$', admin_view, name='admin'),
url(r'^(?P<survey_id>[0-9a-zA-Z]{8})/(?P<team_name>[-\w]{1,64})$', submit_view, name='submit'),
Expand Down
41 changes: 19 additions & 22 deletions teamtemp/views.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
from __future__ import division, print_function

from django.http import HttpResponsePermanentRedirect
from future import standard_library

standard_library.install_aliases()

from builtins import range, str
from past.utils import old_div
import errno
Expand All @@ -20,7 +19,7 @@
from django.contrib.auth.hashers import check_password, make_password
from django.db import transaction
from django.http import Http404, HttpResponse
from django.shortcuts import HttpResponseRedirect, get_object_or_404, render
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.views.static import serve as serve_static
from django_filters.rest_framework import DjangoFilterBackend
Expand All @@ -34,10 +33,9 @@
from teamtemp.headers import cache_control, no_cache, ie_edge
from teamtemp.responses.models import *

from urllib import urlencode
from urllib.request import urlretrieve
from urllib.error import ContentTooShortError
from urllib.parse import urlparse
from urllib.parse import urlparse, urlencode


class WordCloudImageViewSet(viewsets.ModelViewSet):
Expand Down Expand Up @@ -143,7 +141,7 @@ def home_view(request, survey_type='TEAMTEMP'):

messages.success(request, 'Survey %s created.' % survey.id)

return HttpResponseRedirect(reverse('team', kwargs={'survey_id': survey_id}))
return redirect('team', survey_id=survey_id)
else:
form = CreateSurveyForm()

Expand Down Expand Up @@ -173,7 +171,7 @@ def set_view(request, survey_id):
timezone.activate(pytz.timezone(survey.default_tz or 'UTC'))

if not authenticated_user(request, survey):
return HttpResponseRedirect(reverse('login', kwargs={'survey_id': survey_id}) + '?' + urlencode({'redirect_to': request.get_full_path()}))
return redirect('login', survey_id=survey_id, redirect_to=request.get_full_path())

survey_teams = survey.teams.all().order_by('team_name')

Expand Down Expand Up @@ -236,7 +234,7 @@ def set_view(request, survey_id):
survey.full_clean()
survey.save()

return HttpResponseRedirect(reverse('admin', kwargs={'survey_id': survey_id}))
return redirect('admin', survey_id=survey_id)
else:
form = SurveySettingsForm(instance=survey)

Expand Down Expand Up @@ -379,12 +377,12 @@ def login_view(request, survey_id, redirect_to=None):
if check_password(password, survey.password):
responses.add_admin_for_survey(request, survey.id)
assert responses.is_admin_for_survey(request, survey_id)
return HttpResponseRedirect(redirect_to)
return redirect(redirect_to)
else:
form.add_error('password', 'Incorrect password')

if authenticated_user(request, survey):
return HttpResponseRedirect(redirect_to)
return redirect(redirect_to)

return render(request, 'password.html', { 'form': form })

Expand All @@ -396,7 +394,7 @@ def admin_view(request, survey_id, team_name=''):
timezone.activate(pytz.timezone(survey.default_tz or 'UTC'))

if not authenticated_user(request, survey):
return HttpResponseRedirect(reverse('login', kwargs={'survey_id': survey_id}) + '?' + urlencode({'redirect_to': request.get_full_path()}))
return redirect('login', survey_id=survey_id, redirect_to=request.get_full_path())

if team_name != '':
team = get_object_or_404(Teams, request_id=survey_id, team_name=team_name)
Expand Down Expand Up @@ -517,9 +515,9 @@ def reset_view(request, survey_id):
else:
messages.error(request, 'Survey archive failed.')
else:
return HttpResponseRedirect(reverse('login', kwargs={'survey_id': survey_id}) + '?' + urlencode({'redirect_to': request.get_full_path()}))
return redirect('login', survey_id=survey_id, redirect_to=request.get_full_path())

return HttpResponseRedirect(reverse('admin', kwargs={'survey_id': survey_id}))
return redirect('admin', survey_id=survey_id)


@no_cache()
Expand Down Expand Up @@ -638,7 +636,7 @@ def team_view(request, survey_id, team_name=None):
survey = get_object_or_404(TeamTemperature, pk=survey_id)

if not authenticated_user(request, survey):
return HttpResponseRedirect(reverse('login', kwargs={'survey_id': survey_id}) + '?' + urlencode({'redirect_to': request.get_full_path()}))
return redirect('login', survey_id=survey_id, redirect_to=request.get_full_path())

team = None
if team_name is not None:
Expand Down Expand Up @@ -694,7 +692,7 @@ def team_view(request, survey_id, team_name=None):

messages.success(request, 'Team created.')

return HttpResponseRedirect(reverse('admin', kwargs={'survey_id': survey_id}))
return redirect('admin', survey_id=survey_id)
else:
form = AddTeamForm(instance=team, dept_names_list=dept_names_list, region_names_list=region_names_list,
site_names_list=site_names_list)
Expand Down Expand Up @@ -1003,11 +1001,11 @@ def wordcloud_view(request, word_hash=''):
word_cloud_image = cached_word_cloud(word_hash=word_hash, generate=True)

if word_cloud_image and word_cloud_image.image_url:
return HttpResponsePermanentRedirect(word_cloud_image.image_url)
return redirect(word_cloud_image.image_url, permanent=True)

print("Word Cloud: '%s' not found" % word_hash, file=sys.stderr)

return HttpResponseRedirect('/media/blank.png')
return redirect('/media/blank.png')


@ie_edge()
Expand Down Expand Up @@ -1084,12 +1082,11 @@ def bvc_view(request, survey_id, team_name='', archive_id='', num_iterations='0'
filter_site_names = ','.join(csf['filter_site_names'])

print("Filter this bvc:", filter_this_bvc, file=sys.stderr)

return HttpResponseRedirect(reverse('bvc', kwargs={'survey_id': survey_id,
'dept_names': filter_dept_names,
'region_names': filter_region_names,
'site_names': filter_site_names}))
else:
return redirect('bvc', survey_id=survey_id,
dept_names=filter_dept_names,
region_names=filter_region_names,
site_names=filter_site_names)
raise Exception('Form Is Not Valid:', form)
else:
return render(request, 'bvc.html',
Expand Down

0 comments on commit 13a75d4

Please sign in to comment.