diff options
author | Jenkins <jenkins@review.openstack.org> | 2017-07-03 21:01:15 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2017-07-03 21:01:15 +0000 |
commit | a1e421e0b782e4eaea7815033b04f8512cc44e42 (patch) | |
tree | b67bfc34bb205988cf53f79b03f713049d9af65b /openstack_auth | |
parent | 011c2274a00f8b0d7313aa06843753e28326d47e (diff) | |
parent | 35a2fb35a712633a88850211de11d78e7f39c343 (diff) | |
download | django_openstack_auth-a1e421e0b782e4eaea7815033b04f8512cc44e42.tar.gz |
Merge "Add support for a domain dropdown menu at login"
Diffstat (limited to 'openstack_auth')
-rw-r--r-- | openstack_auth/forms.py | 21 | ||||
-rw-r--r-- | openstack_auth/tests/tests.py | 26 |
2 files changed, 42 insertions, 5 deletions
diff --git a/openstack_auth/forms.py b/openstack_auth/forms.py index 0acb290..bacc9c0 100644 --- a/openstack_auth/forms.py +++ b/openstack_auth/forms.py @@ -61,11 +61,22 @@ class Login(django_auth_forms.AuthenticationForm): 'OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT', False): last_domain = self.request.COOKIES.get('login_domain', None) - self.fields['domain'] = forms.CharField( - initial=last_domain, - label=_("Domain"), - required=True, - widget=forms.TextInput(attrs={"autofocus": "autofocus"})) + if getattr(settings, + 'OPENSTACK_KEYSTONE_DOMAIN_DROPDOWN', + False): + self.fields['domain'] = forms.ChoiceField( + label=_("Domain"), + initial=last_domain, + required=True, + choices=getattr(settings, + 'OPENSTACK_KEYSTONE_DOMAIN_CHOICES', + ())) + else: + self.fields['domain'] = forms.CharField( + initial=last_domain, + label=_("Domain"), + required=True, + widget=forms.TextInput(attrs={"autofocus": "autofocus"})) self.fields['username'].widget = forms.widgets.TextInput() fields_ordering = ['domain', 'username', 'password', 'region'] self.fields['region'].choices = self.get_region_choices() diff --git a/openstack_auth/tests/tests.py b/openstack_auth/tests/tests.py index 4790f73..80e5a88 100644 --- a/openstack_auth/tests/tests.py +++ b/openstack_auth/tests/tests.py @@ -1091,6 +1091,32 @@ class OpenStackAuthTestsV3(OpenStackAuthTestsMixin, token=unscoped.auth_token) self.assertEqual(project_list, expected_projects) + def test_login_form_multidomain(self): + override = self.settings(OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT=True) + override.enable() + self.addCleanup(override.disable) + + url = reverse('login') + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + self.assertContains(response, 'name="domain" type="text"') + + def test_login_form_multidomain_dropdown(self): + override = self.settings(OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT=True, + OPENSTACK_KEYSTONE_DOMAIN_DROPDOWN=True, + OPENSTACK_KEYSTONE_DOMAIN_CHOICES=( + ('Default', 'Default'),) + ) + override.enable() + self.addCleanup(override.disable) + + url = reverse('login') + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + self.assertContains(response, 'select id="id_domain" name="domain"') + self.assertContains(response, 'option value="Default"') + settings.OPENSTACK_KEYSTONE_DOMAIN_DROPDOWN = False + class OpenStackAuthTestsWebSSO(OpenStackAuthTestsMixin, OpenStackAuthFederatedTestsMixin, |