Projet

Général

Profil

0001-forms-fix-handling-of-verified-user-attributes-in-da.patch

Frédéric Péters, 27 septembre 2018 11:21

Télécharger (3,23 ko)

Voir les différences:

Subject: [PATCH] forms: fix handling of verified user attributes in date
 fields (#26776)

 tests/test_form_pages.py | 46 ++++++++++++++++++++++++++++++++++++++++
 wcs/forms/root.py        |  2 ++
 2 files changed, 48 insertions(+)
tests/test_form_pages.py
4379 4379
    assert not 'Check values then click submit.' in resp.body
4380 4380
    assert resp.form['f0'].value == 'foo@localhost'
4381 4381

  
4382
def test_form_page_profile_verified_date_prefill(pub):
4383
    user = create_user(pub)
4384

  
4385
    from wcs.admin.settings import UserFieldsFormDef
4386
    user_formdef = UserFieldsFormDef(pub)
4387
    user_formdef.fields.append(fields.DateField(id='_date', label='date', type='date'))
4388
    user_formdef.store()
4389
    user.form_data = {'_date': time.strptime('2018-09-27', '%Y-%m-%d')}
4390
    user.set_attributes_from_formdata(user.form_data)
4391
    user.store()
4392

  
4393
    formdef = create_formdef()
4394
    formdef.data_class().wipe()
4395
    formdef.fields = [fields.DateField(id='0', label='date',
4396
        prefill={'type': 'user', 'value': '_date'})]
4397
    formdef.store()
4398

  
4399
    resp = get_app(pub).get('/test/')
4400
    assert resp.form['f0'].value == ''
4401

  
4402
    resp = login(get_app(pub), username='foo', password='foo').get('/test/')
4403
    assert resp.form['f0'].value == '2018-09-27'
4404
    assert not 'readonly' in resp.form['f0'].attrs
4405
    resp.form['f0'].value = '2018-09-27'
4406
    resp = resp.form.submit('submit')
4407
    assert 'Check values then click submit.' in resp.body
4408
    assert resp.form['f0'].value == '2018-09-27'
4409

  
4410
    user.verified_fields = ['_date']
4411
    user.store()
4412

  
4413
    resp = login(get_app(pub), username='foo', password='foo').get('/test/')
4414
    assert resp.form['f0'].value == '2018-09-27'
4415
    assert 'readonly' in resp.form['f0'].attrs
4416

  
4417
    resp.form['f0'].value = '2018-09-24' # try changing the value
4418
    resp = resp.form.submit('submit')
4419
    assert 'Check values then click submit.' in resp.body
4420
    assert resp.form['f0'].value == '2018-09-27'  # it is reverted
4421

  
4422
    resp.form['f0'].value = '2018-09-24' # try again changing the value
4423
    resp = resp.form.submit('submit')
4424

  
4425
    assert formdef.data_class().count() == 1
4426
    assert time.strftime('%Y-%m-%d', formdef.data_class().select()[0].data['0']) == '2018-09-27'
4427

  
4382 4428
def test_form_page_profile_verified_radio_item_prefill(pub):
4383 4429
    user = create_user(pub)
4384 4430
    formdef = create_formdef()
wcs/forms/root.py
677 677
                    continue
678 678
                v, verified = field.get_prefill_value(user=prefill_user)
679 679
                if verified:
680
                    if not isinstance(v, basestring) and field.convert_value_to_str:
681
                        v = field.convert_value_to_str(v)
680 682
                    get_request().form['f%s' % field.id] = v
681 683

  
682 684
        if step == 0:
683
-