From dcee2002eac24ee91c9eb1871d0c96204d264208 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 19 Jun 2019 20:50:29 +0200 Subject: [PATCH 3/3] last fixes (to fixup/rebase) --- src/authentic2/forms/mixins.py | 3 ++- tests/test_profile.py | 47 ++++++++++++++++++++++------------ 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/authentic2/forms/mixins.py b/src/authentic2/forms/mixins.py index c1b4597e..c45e0f5a 100644 --- a/src/authentic2/forms/mixins.py +++ b/src/authentic2/forms/mixins.py @@ -17,6 +17,7 @@ from collections import OrderedDict from django import forms +from django.utils.translation import ugettext as _ class LockedFieldFormMixin(object): @@ -47,7 +48,6 @@ class LockedFieldFormMixin(object): # TextArea or CheckboxInput if isinstance(initial, bool): initial = _('Yes') if initial else _('No') - pass else: for key, label in choices: if initial == key: @@ -57,6 +57,7 @@ class LockedFieldFormMixin(object): label=field.label, help_text=field.help_text, initial=initial, + required=False, widget=forms.TextInput(attrs={'readonly': ''})) if not locked_fields: return diff --git a/tests/test_profile.py b/tests/test_profile.py index 76f412aa..77ac6319 100644 --- a/tests/test_profile.py +++ b/tests/test_profile.py @@ -29,43 +29,58 @@ def test_account_edit_view(app, simple_user): url = reverse('profile_edit') resp = app.get(url, status=200) - attribute = Attribute.objects.create( + phone = Attribute.objects.create( name='phone', label='phone', - kind='string', user_visible=True, user_editable=True) + kind='phone_number', user_visible=True, user_editable=True) + title = Attribute.objects.create( + name='title', label='title', + kind='title', user_visible=True, user_editable=True) + agreement = Attribute.objects.create( + name='agreement', label='agreement', + kind='boolean', user_visible=True, user_editable=True) resp = app.get(url, status=200) - resp = app.post(url, params={ - 'csrfmiddlewaretoken': resp.form['csrfmiddlewaretoken'].value, - 'edit-profile-first_name': resp.form['edit-profile-first_name'].value, - 'edit-profile-last_name': resp.form['edit-profile-last_name'].value, - 'edit-profile-phone': '1234' - }, status=302) + resp.form['edit-profile-phone'] = '1234' + resp = resp.form.submit() # verify that missing next_url in POST is ok assert resp['Location'].endswith(reverse('account_management')) - assert attribute.get_value(simple_user) == '1234' + assert phone.get_value(simple_user) == '1234' resp = app.get(url, status=200) resp.form.set('edit-profile-phone', '0123456789') resp = resp.form.submit().follow() - assert attribute.get_value(simple_user) == '0123456789' + assert phone.get_value(simple_user) == '0123456789' resp = app.get(url, status=200) resp.form.set('edit-profile-phone', '9876543210') resp = resp.form.submit('cancel').follow() - assert attribute.get_value(simple_user) == '0123456789' + assert phone.get_value(simple_user) == '0123456789' - attribute.set_value(simple_user, '0123456789', verified=True) + phone.set_value(simple_user, '0123456789', verified=True) + title.set_value(simple_user, 'Mr', verified=True) + agreement.set_value(simple_user, True, verified=True) resp = app.get(url, status=200) assert 'edit-profile-phone' not in resp.form.fields + assert 'edit-profile-title' not in resp.form.fields + assert 'edit-profile-agreement' not in resp.form.fields assert 'readonly' in resp.form['edit-profile-phone@disabled'].attrs + assert 'readonly' in resp.form['edit-profile-title@disabled'].attrs + assert 'readonly' in resp.form['edit-profile-agreement@disabled'].attrs + resp.form.set('edit-profile-phone@disabled', '1234') + resp.form.set('edit-profile-title@disabled', 'Mrs') + resp.form.set('edit-profile-agreement@disabled', 'False') resp = resp.form.submit().follow() - assert attribute.get_value(simple_user) == '0123456789' + assert phone.get_value(simple_user) == '0123456789' + assert title.get_value(simple_user) == 'Mr' + assert agreement.get_value(simple_user) is True - attribute.disabled = True - attribute.save() + phone.disabled = True + phone.save() resp = app.get(url, status=200) assert 'edit-profile-phone@disabled' not in resp - assert attribute.get_value(simple_user) == '0123456789' + assert 'edit-profile-title@disabled' in resp + assert 'edit-profile-agreement@disabled' in resp + assert phone.get_value(simple_user) == '0123456789' def test_account_edit_next_url(app, simple_user, external_redirect_next_url, assert_external_redirect): -- 2.20.1