Projet

Général

Profil

0011-fields-prefill-phone-value-69838.patch

Paul Marillonnet, 02 novembre 2022 10:45

Télécharger (4,62 ko)

Voir les différences:

Subject: [PATCH 11/13] fields: prefill phone value (#69838)

 tests/form_pages/test_all.py | 31 +++++++++++++++++++++++++++++++
 tests/test_prefill.py        | 16 +++++++++++++++-
 wcs/fields.py                |  7 +++++++
 3 files changed, 53 insertions(+), 1 deletion(-)
tests/form_pages/test_all.py
107 107
    user = pub.user_class()
108 108
    user.name = 'User Name'
109 109
    user.email = 'foo@localhost'
110
    user.phone = '+33123456789'
110 111
    user.store()
111 112
    account = PasswordAccount(id='foo')
112 113
    account.set_password('foo')
......
2064 2065
    resp = app.get('/code/%s/load' % tracking_code, headers={'User-agent': 'Googlebot'}, status=403)
2065 2066

  
2066 2067

  
2068
def test_form_phone_prefill(pub, nocache):
2069
    create_user(pub)
2070
    formdef = create_formdef()
2071
    formdef.data_class().wipe()
2072
    formdef.fields = [fields.StringField(id='0', label='string', prefill={'type': 'user', 'value': 'phone'})]
2073
    formdef.store()
2074

  
2075
    resp = login(get_app(pub), username='foo', password='foo').get('/test/')
2076
    assert resp.pyquery('input#form_f0').val() == '+33123456789'
2077
    resp.forms[0]['f0'] = '+33987654321'
2078
    resp = resp.forms[0].submit('submit')
2079
    assert resp.pyquery('button.form-submit').val() == 'Submit'
2080

  
2081

  
2082
def test_form_phone_prefill_phone_fr_validation(pub, nocache):
2083
    create_user(pub)
2084
    formdef = create_formdef()
2085
    formdef.data_class().wipe()
2086
    field = fields.StringField(id='0', label='string', prefill={'type': 'user', 'value': 'phone'})
2087
    field.validation = {'type': 'phone-fr'}
2088
    formdef.fields = [field]
2089
    formdef.store()
2090

  
2091
    resp = login(get_app(pub), username='foo', password='foo').get('/test/')
2092
    assert resp.pyquery('input#form_f0').val() == '01 23 45 67 89'
2093
    resp.forms[0]['f0'] = '0987654321'
2094
    resp = resp.forms[0].submit('submit')
2095
    assert resp.pyquery('button.form-submit').val() == 'Submit'
2096

  
2097

  
2067 2098
def test_form_tracking_code_prefill(pub, nocache):
2068 2099
    create_user(pub)
2069 2100
    formdef = create_formdef()
tests/test_prefill.py
27 27
    pub.user_class.wipe()
28 28
    user = pub.user_class(name='user')
29 29
    user.email = 'test@example.net'
30
    user.phone = '+33123456789'
30 31
    user.store()
31 32
    get_request()._user = user
32 33
    return user
......
66 67
    assert field.get_prefill_value() == ('{{cards|objects:"unknown"|first|get:"foo"}}', False)
67 68

  
68 69

  
69
def test_prefill_user(user):
70
def test_prefill_user_email(user):
70 71
    field = fields.Field()
71 72
    field.prefill = {'type': 'user', 'value': 'email'}
72 73
    assert field.get_prefill_value(user=get_request().user) == ('test@example.net', False)
73 74

  
74 75

  
76
def test_prefill_user_phone(user):
77
    field = fields.Field()
78
    field.prefill = {'type': 'user', 'value': 'phone'}
79
    assert field.get_prefill_value(user=get_request().user) == ('+33123456789', False)
80

  
81

  
82
def test_prefill_user_phone_fr(user):
83
    field = fields.Field()
84
    field.validation = {'type': 'phone-fr'}
85
    field.prefill = {'type': 'user', 'value': 'phone'}
86
    assert field.get_prefill_value(user=get_request().user) == ('01 23 45 67 89', False)
87

  
88

  
75 89
def test_prefill_user_attribute(user):
76 90
    from wcs.admin.settings import UserFieldsFormDef
77 91

  
wcs/fields.py
85 85
    get_document_types,
86 86
    strftime,
87 87
    strip_some_tags,
88
    try_local_number,
88 89
    xml_node_text,
89 90
)
90 91
from .qommon.ods import NS as OD_NS
......
539 540
            x = self.prefill.get('value')
540 541
            if x == 'email':
541 542
                return (user.email, explicit_lock or 'email' in (user.verified_fields or []))
543
            elif x == 'phone':
544
                if hasattr(self, 'validation') and self.validation.get('type', None) == 'phone-fr':
545
                    phone = try_local_number(user.phone)
546
                else:
547
                    phone = user.phone
548
                return (phone, explicit_lock or 'phone' in (user.verified_fields or []))
542 549
            elif user.form_data:
543 550
                userform = user.get_formdef()
544 551
                for userfield in userform.fields:
545
-