0006-fields-prefill-phone-value-69838.patch
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 |
pub.load_site_options() |
|
2085 |
if not pub.site_options.has_section('options'): |
|
2086 |
pub.site_options.add_section('options') |
|
2087 |
pub.site_options.set('options', 'default-country-code', 'FR') |
|
2088 |
with open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w') as fd: |
|
2089 |
pub.site_options.write(fd) |
|
2090 |
formdef = create_formdef() |
|
2091 |
formdef.data_class().wipe() |
|
2092 |
field = fields.StringField(id='0', label='string', prefill={'type': 'user', 'value': 'phone'}) |
|
2093 |
field.validation = {'type': 'phone-fr'} |
|
2094 |
formdef.fields = [field] |
|
2095 |
formdef.store() |
|
2096 | ||
2097 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/') |
|
2098 |
assert resp.pyquery('input#form_f0').val() == '01 23 45 67 89' |
|
2099 |
resp.forms[0]['f0'] = '0987654321' |
|
2100 |
resp = resp.forms[0].submit('submit') |
|
2101 |
assert resp.pyquery('button.form-submit').val() == 'Submit' |
|
2102 | ||
2103 | ||
2104 |
def test_form_phone_prefill_phone_validation(pub, nocache): |
|
2105 |
user = create_user(pub) |
|
2106 |
pub.load_site_options() |
|
2107 |
if not pub.site_options.has_section('options'): |
|
2108 |
pub.site_options.add_section('options') |
|
2109 |
pub.site_options.set('options', 'default-country-code', 'BE') |
|
2110 |
with open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w') as fd: |
|
2111 |
pub.site_options.write(fd) |
|
2112 |
formdef = create_formdef() |
|
2113 |
formdef.data_class().wipe() |
|
2114 |
field = fields.StringField(id='0', label='string', prefill={'type': 'user', 'value': 'phone'}) |
|
2115 |
field.validation = {'type': 'phone'} |
|
2116 |
formdef.fields = [field] |
|
2117 |
formdef.store() |
|
2118 | ||
2119 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/') |
|
2120 |
assert resp.pyquery('input#form_f0').val() == '01 23 45 67 89' |
|
2121 |
resp.forms[0]['f0'] = '0987654321' |
|
2122 |
resp = resp.forms[0].submit('submit') |
|
2123 |
assert resp.pyquery('button.form-submit').val() == 'Submit' |
|
2124 | ||
2125 |
user.phone = '+3281000000' |
|
2126 |
user.store() |
|
2127 | ||
2128 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/') |
|
2129 |
assert resp.pyquery('input#form_f0').val() == '081 00 00 00' |
|
2130 |
resp.forms[0]['f0'] = '0987654321' |
|
2131 |
resp = resp.forms[0].submit('submit') |
|
2132 |
assert resp.pyquery('button.form-submit').val() == 'Submit' |
|
2133 | ||
2134 |
user.phone = '+99981000000' |
|
2135 |
user.store() |
|
2136 | ||
2137 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/') |
|
2138 |
assert resp.pyquery('input#form_f0').val() == '+99981000000' |
|
2139 |
resp.forms[0]['f0'] = '0987654321' |
|
2140 |
resp = resp.forms[0].submit('submit') |
|
2141 |
assert resp.pyquery('button.form-submit').val() == 'Submit' |
|
2142 | ||
2143 | ||
2067 | 2144 |
def test_form_tracking_code_prefill(pub, nocache): |
2068 | 2145 |
create_user(pub) |
2069 | 2146 |
formdef = create_formdef() |
tests/test_prefill.py | ||
---|---|---|
1 | 1 |
import datetime |
2 |
import os |
|
2 | 3 |
import shutil |
3 | 4 | |
4 | 5 |
import pytest |
... | ... | |
20 | 21 | |
21 | 22 |
req = HTTPRequest(None, {'SCRIPT_NAME': '/', 'SERVER_NAME': 'example.net'}) |
22 | 23 |
pub._set_request(req) |
24 |
pub.write_cfg() |
|
23 | 25 | |
24 | 26 | |
25 | 27 |
@pytest.fixture |
... | ... | |
27 | 29 |
pub.user_class.wipe() |
28 | 30 |
user = pub.user_class(name='user') |
29 | 31 |
user.email = 'test@example.net' |
32 |
user.phone = '+33123456789' |
|
30 | 33 |
user.store() |
31 | 34 |
get_request()._user = user |
32 | 35 |
return user |
... | ... | |
66 | 69 |
assert field.get_prefill_value() == ('{{cards|objects:"unknown"|first|get:"foo"}}', False) |
67 | 70 | |
68 | 71 | |
69 |
def test_prefill_user(user): |
|
72 |
def test_prefill_user_email(user):
|
|
70 | 73 |
field = fields.Field() |
71 | 74 |
field.prefill = {'type': 'user', 'value': 'email'} |
72 | 75 |
assert field.get_prefill_value(user=get_request().user) == ('test@example.net', False) |
73 | 76 | |
74 | 77 | |
78 |
def test_prefill_user_phone(user): |
|
79 |
field = fields.Field() |
|
80 |
field.prefill = {'type': 'user', 'value': 'phone'} |
|
81 |
assert field.get_prefill_value(user=get_request().user) == ('+33123456789', False) |
|
82 | ||
83 | ||
84 |
def test_prefill_user_phone_fr_validation(user): |
|
85 |
pub.load_site_options() |
|
86 |
if not pub.site_options.has_section('options'): |
|
87 |
pub.site_options.add_section('options') |
|
88 |
pub.site_options.set('options', 'default-country-code', 'FR') |
|
89 |
with open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w') as fd: |
|
90 |
pub.site_options.write(fd) |
|
91 |
field = fields.Field() |
|
92 |
field.validation = {'type': 'phone-fr'} |
|
93 |
field.prefill = {'type': 'user', 'value': 'phone'} |
|
94 |
assert field.get_prefill_value(user=get_request().user) == ('01 23 45 67 89', False) |
|
95 | ||
96 | ||
97 |
def test_prefill_user_phone_validation(user): |
|
98 |
pub.load_site_options() |
|
99 |
if not pub.site_options.has_section('options'): |
|
100 |
pub.site_options.add_section('options') |
|
101 |
pub.site_options.set('options', 'default-country-code', 'BE') |
|
102 |
with open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w') as fd: |
|
103 |
pub.site_options.write(fd) |
|
104 |
field = fields.Field() |
|
105 |
field.validation = {'type': 'phone'} |
|
106 |
field.prefill = {'type': 'user', 'value': 'phone'} |
|
107 |
assert field.get_prefill_value(user=get_request().user) == ('01 23 45 67 89', False) |
|
108 | ||
109 |
user = get_request().user |
|
110 |
user.phone = '+3281000000' |
|
111 |
user.store() |
|
112 | ||
113 |
assert field.get_prefill_value(user=get_request().user) == ('081 00 00 00', False) |
|
114 | ||
115 |
user.phone = '+99981000000' |
|
116 |
user.store() |
|
117 | ||
118 |
assert field.get_prefill_value(user=get_request().user) == ('+99981000000', False) |
|
119 | ||
120 | ||
75 | 121 |
def test_prefill_user_attribute(user): |
76 | 122 |
from wcs.admin.settings import UserFieldsFormDef |
77 | 123 |
wcs/fields.py | ||
---|---|---|
83 | 83 |
get_as_datetime, |
84 | 84 |
get_document_type_value_options, |
85 | 85 |
get_document_types, |
86 |
get_local_number, |
|
86 | 87 |
strftime, |
87 | 88 |
strip_some_tags, |
88 | 89 |
xml_node_text, |
... | ... | |
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 |
phone = user.phone |
|
545 |
if hasattr(self, 'validation'): |
|
546 |
validation_type = self.validation.get('type', None) |
|
547 |
if validation_type == 'phone-fr': |
|
548 |
phone = get_local_number(user.phone, country_code='FR') or user.phone |
|
549 |
elif validation_type == 'phone': |
|
550 |
phone = get_local_number(user.phone) or user.phone |
|
551 |
return (phone, explicit_lock or 'phone' in (user.verified_fields or [])) |
|
542 | 552 |
elif user.form_data: |
543 | 553 |
userform = user.get_formdef() |
544 | 554 |
for userfield in userform.fields: |
545 |
- |