1866 |
1866 |
data = formdef.data_class().get(data_id)
|
1867 |
1867 |
assert data.data['0'] is None
|
1868 |
1868 |
|
|
1869 |
def test_form_items_datasource(pub):
|
|
1870 |
formdef = create_formdef()
|
|
1871 |
formdef.fields = [fields.ItemsField(id='1', label='items',
|
|
1872 |
varname='items', required=False, data_source={'type': 'foobar'})]
|
|
1873 |
formdef.store()
|
|
1874 |
|
|
1875 |
data_class = formdef.data_class()
|
|
1876 |
data_class.wipe()
|
|
1877 |
|
|
1878 |
# add the named data source
|
|
1879 |
NamedDataSource.wipe()
|
|
1880 |
data_source = NamedDataSource(name='foobar')
|
|
1881 |
data_source.data_source = {'type': 'formula', 'value': repr([])}
|
|
1882 |
data_source.store()
|
|
1883 |
|
|
1884 |
resp = get_app(pub).get('/test/')
|
|
1885 |
formdef.data_class().wipe()
|
|
1886 |
resp = resp.forms[0].submit('submit') # should go straight to validation
|
|
1887 |
assert 'Check values then click submit.' in resp.body
|
|
1888 |
assert resp.forms[0]['previous']
|
|
1889 |
resp = resp.forms[0].submit('previous')
|
|
1890 |
|
|
1891 |
# replace the named data source with one with items
|
|
1892 |
NamedDataSource.wipe()
|
|
1893 |
data_source = NamedDataSource(name='foobar')
|
|
1894 |
data_source.data_source = {'type': 'formula', 'value': repr(['un', 'deux'])}
|
|
1895 |
data_source.store()
|
|
1896 |
|
|
1897 |
resp = get_app(pub).get('/test/')
|
|
1898 |
assert 'f1$elementun' in resp.form.fields
|
|
1899 |
assert 'f1$elementdeux' in resp.form.fields
|
|
1900 |
resp.form['f1$elementun'].checked = True
|
|
1901 |
resp.form['f1$elementdeux'].checked = True
|
|
1902 |
resp = resp.form.submit('submit')
|
|
1903 |
assert 'Check values then click submit.' in resp.body
|
|
1904 |
resp = resp.form.submit('submit')
|
|
1905 |
resp = resp.follow()
|
|
1906 |
|
|
1907 |
assert data_class.select()[0].data == {'1': ['un', 'deux'], '1_display': 'un, deux'}
|
|
1908 |
|
|
1909 |
data_source.data_source = {'type': 'formula',
|
|
1910 |
'value': repr([{'id': '1', 'text': 'un'},
|
|
1911 |
{'id': '2', 'text': 'deux'}])}
|
|
1912 |
data_source.store()
|
|
1913 |
|
|
1914 |
data_class.wipe()
|
|
1915 |
resp = get_app(pub).get('/test/')
|
|
1916 |
assert 'f1$element1' in resp.form.fields
|
|
1917 |
assert 'f1$element2' in resp.form.fields
|
|
1918 |
resp.form['f1$element1'].checked = True
|
|
1919 |
resp.form['f1$element2'].checked = True
|
|
1920 |
resp = resp.form.submit('submit')
|
|
1921 |
assert 'Check values then click submit.' in resp.body
|
|
1922 |
resp = resp.form.submit('submit')
|
|
1923 |
resp = resp.follow()
|
|
1924 |
|
|
1925 |
assert data_class.select()[0].data == {'1': ['1', '2'], '1_display': 'un, deux'}
|
|
1926 |
|
|
1927 |
data_source.data_source = {'type': 'formula',
|
|
1928 |
'value': repr([{'id': '1', 'text': 'un', 'foo': 'bar1'},
|
|
1929 |
{'id': '2', 'text': 'deux', 'foo': 'bar2'}])}
|
|
1930 |
data_source.store()
|
|
1931 |
|
|
1932 |
data_class.wipe()
|
|
1933 |
resp = get_app(pub).get('/test/')
|
|
1934 |
assert 'f1$element1' in resp.form.fields
|
|
1935 |
assert 'f1$element2' in resp.form.fields
|
|
1936 |
resp.form['f1$element1'].checked = True
|
|
1937 |
resp.form['f1$element2'].checked = True
|
|
1938 |
resp = resp.form.submit('submit')
|
|
1939 |
assert 'Check values then click submit.' in resp.body
|
|
1940 |
resp = resp.form.submit('submit')
|
|
1941 |
resp = resp.follow()
|
|
1942 |
assert data_class.select()[0].data == {
|
|
1943 |
'1': ['1', '2'],
|
|
1944 |
'1_structured': [{'text': 'un', 'foo': 'bar1', 'id': '1'},
|
|
1945 |
{'text': 'deux', 'foo': 'bar2', 'id': '2'}],
|
|
1946 |
'1_display': 'un, deux'}
|
|
1947 |
# along the way, check substitution variables
|
|
1948 |
substvars = data_class.select()[0].get_substitution_variables()
|
|
1949 |
assert substvars['form_var_items'] == 'un, deux'
|
|
1950 |
assert substvars['form_var_items_raw'] == ['1', '2']
|
|
1951 |
assert substvars['form_var_items_0_foo'] == 'bar1'
|
|
1952 |
assert substvars['form_var_items_1_foo'] == 'bar2'
|
|
1953 |
|
1869 |
1954 |
def test_form_autosave(pub):
|
1870 |
1955 |
formdef = create_formdef()
|
1871 |
1956 |
formdef.fields = [fields.PageField(id='0', label='1st page', type='page'),
|