0001-fields-do-not-consider-prefill-of-type-none-as-a-rea.patch
tests/admin_pages/test_form.py | ||
---|---|---|
1978 | 1978 |
app = login(get_app(pub)) |
1979 | 1979 |
resp = app.get('/backoffice/forms/1/fields/1/') |
1980 | 1980 |
assert resp.forms[0]['prefill$type'].options == [ |
1981 |
('None', False, 'None'),
|
|
1981 |
('None', True, 'None'),
|
|
1982 | 1982 |
('String / Template', False, 'String / Template'), |
1983 | 1983 |
('Python Expression', False, 'Python Expression'), |
1984 | 1984 |
('User Field', False, 'User Field'), |
... | ... | |
1991 | 1991 | |
1992 | 1992 |
resp = app.get('/backoffice/forms/1/fields/1/') |
1993 | 1993 |
assert resp.forms[0]['prefill$type'].options == [ |
1994 |
('None', False, 'None'),
|
|
1994 |
('None', True, 'None'),
|
|
1995 | 1995 |
('String / Template', False, 'String / Template'), |
1996 | 1996 |
('User Field', False, 'User Field'), |
1997 | 1997 |
('Geolocation', False, 'Geolocation'), |
tests/form_pages/test_block.py | ||
---|---|---|
1889 | 1889 |
'1_display': 'foobar, foobar', |
1890 | 1890 |
} |
1891 | 1891 |
formdef.data_class().wipe() |
1892 | ||
1893 | ||
1894 |
def test_block_with_block_item_field_condition_and_prefill(pub): |
|
1895 |
BlockDef.wipe() |
|
1896 |
block = BlockDef() |
|
1897 |
block.name = 'foobar' |
|
1898 |
block.fields = [ |
|
1899 |
fields.StringField( |
|
1900 |
id='123', |
|
1901 |
required=True, |
|
1902 |
label='One', |
|
1903 |
type='string', |
|
1904 |
prefill={'type': 'string', 'value': '{{ "plop" }}'}, |
|
1905 |
), |
|
1906 |
fields.ItemField( |
|
1907 |
id='234', |
|
1908 |
required=True, |
|
1909 |
label='Test2', |
|
1910 |
type='item', |
|
1911 |
varname='item', |
|
1912 |
items=['Foo', 'Bar'], |
|
1913 |
prefill={'type': 'none'}, |
|
1914 |
), |
|
1915 |
fields.StringField( |
|
1916 |
id='345', |
|
1917 |
required=True, |
|
1918 |
label='Two', |
|
1919 |
type='string', |
|
1920 |
condition={'type': 'django', 'value': 'block_var_item == "Foo"'}, |
|
1921 |
), |
|
1922 |
] |
|
1923 |
block.store() |
|
1924 | ||
1925 |
FormDef.wipe() |
|
1926 |
formdef = FormDef() |
|
1927 |
formdef.name = 'form title' |
|
1928 |
formdef.fields = [ |
|
1929 |
fields.BlockField(id='1', label='test', type='block:foobar'), |
|
1930 |
] |
|
1931 |
formdef.store() |
|
1932 |
formdef.data_class().wipe() |
|
1933 | ||
1934 |
app = get_app(pub) |
|
1935 |
resp = app.get(formdef.get_url()) |
|
1936 |
assert resp.form['f1$element0$f123'].value == 'plop' |
|
1937 |
assert resp.form['f1$element0$f234'].value == 'Foo' |
|
1938 |
assert resp.pyquery('[data-widget-name="f1$element0$f234"]').attr['data-live-source'] == 'true' |
|
1939 |
assert resp.pyquery('[data-widget-name="f1$element0$f345"]').attr.style == 'display: none' |
|
1940 |
live_resp = app.post( |
|
1941 |
formdef.get_url() + 'live?modified_field_id=123&modified_block_id=1&modified_block_row=0', |
|
1942 |
params=resp.form.submit_fields(), |
|
1943 |
) |
|
1944 |
assert live_resp.json['result']['1-123-0']['visible'] is True |
|
1945 |
assert live_resp.json['result']['1-234-0']['visible'] is True |
|
1946 |
assert live_resp.json['result']['1-345-0']['visible'] is True |
|
1947 |
resp.form['f1$element0$f345'] = 'test' |
|
1948 |
resp = resp.form.submit('submit') # validation |
wcs/fields.py | ||
---|---|---|
131 | 131 |
SingleSelectWidget, |
132 | 132 |
'type', |
133 | 133 |
options=options, |
134 |
value=value.get('type'), |
|
134 |
value=value.get('type') or 'none',
|
|
135 | 135 |
attrs={'data-dynamic-display-parent': 'true'}, |
136 | 136 |
) |
137 | 137 | |
... | ... | |
230 | 230 |
def _parse(self, request): |
231 | 231 |
values = {} |
232 | 232 |
type_ = self.get('type') |
233 |
if type_: |
|
233 |
if type_ and type_ != 'none':
|
|
234 | 234 |
values['type'] = type_ |
235 | 235 |
values['locked'] = self.get('locked') |
236 | 236 |
value = self.get('value_%s' % type_) |
... | ... | |
2260 | 2260 |
widget.extra_css_class = '%s %s' % (widget.extra_css_class, self.extra_css_class) |
2261 | 2261 |
else: |
2262 | 2262 |
widget.extra_css_class = self.extra_css_class |
2263 |
return widget |
|
2263 | 2264 | |
2264 | 2265 |
def store_display_value(self, data, field_id, raise_on_error=False): |
2265 | 2266 |
value = data.get(field_id) |
wcs/forms/root.py | ||
---|---|---|
410 | 410 |
prefilled = False |
411 | 411 |
locked = False |
412 | 412 | |
413 |
if field.prefill and field.prefill.get('type') == 'none': |
|
414 |
field.prefill = {} |
|
415 | ||
413 | 416 |
if field.prefill: |
414 | 417 |
prefill_user = get_request().user |
415 | 418 |
if get_request().is_in_backoffice(): |
416 |
- |