From 1a4422a33427f371334e3f8e8bc8a9e9e917c47a Mon Sep 17 00:00:00 2001 From: Paul Marillonnet Date: Wed, 12 Dec 2018 12:01:59 +0100 Subject: [PATCH] WIP manager: keep querystring while performing user add (#28897) --- src/authentic2/manager/user_views.py | 5 ++++- tests/test_manager.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/authentic2/manager/user_views.py b/src/authentic2/manager/user_views.py index 762f5ff7..866c4178 100644 --- a/src/authentic2/manager/user_views.py +++ b/src/authentic2/manager/user_views.py @@ -23,6 +23,7 @@ from authentic2.utils import switch_user, send_password_reset_mail, redirect, se from authentic2.a2_rbac.utils import get_default_ou from authentic2 import hooks from django_rbac.utils import get_role_model, get_role_parenting_model, get_ou_model +from urlparse import urlparse from .views import BaseTableView, BaseAddView, \ @@ -129,8 +130,10 @@ class UserAddView(BaseAddView): return fields def get_success_url(self): + querystring = urlparse(self.request.get_full_path()).query + reversed_url = reverse('a2-manager-user-detail', kwargs={'pk': self.object.pk}) return self.request.POST.get('next_url') or \ - reverse('a2-manager-user-detail', kwargs={'pk': self.object.pk}) + '{}?{}'.format(reversed_url, querystring) def get_context_data(self, **kwargs): context = super(UserAddView, self).get_context_data(**kwargs) diff --git a/tests/test_manager.py b/tests/test_manager.py index 33bec66b..d417fcaf 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -780,3 +780,18 @@ def test_manager_create_user_next_url_form_error(superuser_or_admin, app, ou1): form.set('email', 'jd') # erroneous form.set('password1', 'notvalid') # erroneous assert '' % next_url in form.submit().body + + +def test_manager_add_user_querystring(superuser_or_admin, app, ou1): + querystring = u'stay_here=true' + url = u'/manage/users/%s/add/?%s' % (ou1.pk, querystring) + 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 querystring in form.submit().location -- 2.20.0