cancel user add: set correct location (#29181)
This commit is contained in:
parent
93c52a940c
commit
0ad3bf4dfe
|
@ -132,15 +132,16 @@ class UserAddView(BaseAddView):
|
||||||
return fields
|
return fields
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
return self.request.POST.get('next') or \
|
return select_next_url(
|
||||||
reverse('a2-manager-user-detail', kwargs={'pk': self.object.pk})
|
self.request,
|
||||||
|
default=reverse('a2-manager-user-detail', kwargs={'pk': self.object.pk}),
|
||||||
|
include_post=True)
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(UserAddView, self).get_context_data(**kwargs)
|
context = super(UserAddView, self).get_context_data(**kwargs)
|
||||||
context['cancel_url'] = '../..'
|
context['cancel_url'] = select_next_url(self.request, default='../..', include_post=True)
|
||||||
|
context['next'] = select_next_url(self.request, default=None, include_post=True)
|
||||||
context['ou'] = self.ou
|
context['ou'] = self.ou
|
||||||
if hasattr(self.request, 'GET') and 'next' in self.request.GET:
|
|
||||||
context['next'] = self.request.GET['next']
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
|
|
@ -743,35 +743,25 @@ def test_return_on_logout(superuser, app):
|
||||||
|
|
||||||
|
|
||||||
def test_manager_create_user_next(superuser_or_admin, app, ou1):
|
def test_manager_create_user_next(superuser_or_admin, app, ou1):
|
||||||
next_url = u'https://example.nowhere.null/'
|
next_url = u'/example.nowhere.null/'
|
||||||
url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url)
|
url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url)
|
||||||
login(app, superuser_or_admin, '/manage/')
|
login(app, superuser_or_admin, '/manage/')
|
||||||
response = app.get(url)
|
response = app.get(url)
|
||||||
|
|
||||||
|
# cancel if not handled through form submission
|
||||||
|
assert response.pyquery.remove_namespaces()('a.cancel').attr('href') == next_url
|
||||||
|
|
||||||
form = response.form
|
form = response.form
|
||||||
form.set('first_name', 'John')
|
form.set('first_name', 'John')
|
||||||
form.set('last_name', 'Doe')
|
form.set('last_name', 'Doe')
|
||||||
form.set('email', 'john.doe@gmail.com')
|
form.set('email', 'john.doe@gmail.com')
|
||||||
form.set('password1', 'ABcd1234')
|
form.set('password1', 'ABcd1234')
|
||||||
form.set('password2', 'ABcd1234')
|
form.set('password2', 'ABcd1234')
|
||||||
assert form.submit().location == next_url
|
assert urlparse(form.submit().location).path == next_url
|
||||||
|
|
||||||
|
|
||||||
def test_manager_create_user_next_form_cancelation(superuser_or_admin, app, ou1):
|
|
||||||
next_url = u'https://example.nowhere.null/'
|
|
||||||
url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url)
|
|
||||||
login(app, superuser_or_admin, '/manage/')
|
|
||||||
response = app.get(url)
|
|
||||||
form = response.form
|
|
||||||
form.set('first_name', 'John')
|
|
||||||
form.set('last_name', 'Doe')
|
|
||||||
form.set('email', 'john.doe@gmail.com')
|
|
||||||
form.set('password1', 'ABcd1234')
|
|
||||||
form.set('password2', 'ABcd1234')
|
|
||||||
assert form.submit('cancel').location == next_url
|
|
||||||
|
|
||||||
|
|
||||||
def test_manager_create_user_next_form_error(superuser_or_admin, app, ou1):
|
def test_manager_create_user_next_form_error(superuser_or_admin, app, ou1):
|
||||||
next_url = u'https://example.nowhere.null/'
|
next_url = u'/example.nowhere.null/'
|
||||||
url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url)
|
url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url)
|
||||||
login(app, superuser_or_admin, '/manage/')
|
login(app, superuser_or_admin, '/manage/')
|
||||||
response = app.get(url)
|
response = app.get(url)
|
||||||
|
|
Loading…
Reference in New Issue