|
1 |
import datetime
|
1 |
2 |
import io
|
2 |
3 |
import json
|
3 |
4 |
from unittest import mock
|
... | ... | |
799 |
800 |
live_resp = app.post('/foo/live?modified_field_id=user', params=resp.form.submit_fields(), status=403)
|
800 |
801 |
|
801 |
802 |
|
|
803 |
def test_field_live_date_prefill(pub, http_requests):
|
|
804 |
pub.cfg['language'] = {'language': 'fr'}
|
|
805 |
pub.write_cfg()
|
|
806 |
CardDef.wipe()
|
|
807 |
carddef = CardDef()
|
|
808 |
carddef.name = 'foo'
|
|
809 |
carddef.digest_templates = {'default': '{{ form_var_foo }}'}
|
|
810 |
carddef.fields = [
|
|
811 |
fields.StringField(id='1', type='string', label='string', varname='foo'),
|
|
812 |
fields.DateField(
|
|
813 |
type='date',
|
|
814 |
id='2',
|
|
815 |
varname='date',
|
|
816 |
),
|
|
817 |
]
|
|
818 |
carddef.store()
|
|
819 |
carddef.data_class().wipe()
|
|
820 |
carddata1 = carddef.data_class()()
|
|
821 |
carddata1.data = {
|
|
822 |
'1': 'bar',
|
|
823 |
'2': datetime.date(2021, 10, 1).timetuple(),
|
|
824 |
}
|
|
825 |
carddata1.just_created()
|
|
826 |
carddata1.store()
|
|
827 |
carddata2 = carddef.data_class()()
|
|
828 |
carddata2.data = {
|
|
829 |
'1': 'baz',
|
|
830 |
'2': datetime.date(2021, 10, 30).timetuple(),
|
|
831 |
}
|
|
832 |
carddata2.just_created()
|
|
833 |
carddata2.store()
|
|
834 |
FormDef.wipe()
|
|
835 |
formdef = FormDef()
|
|
836 |
formdef.name = 'Foo'
|
|
837 |
formdef.fields = [
|
|
838 |
fields.ItemField(
|
|
839 |
type='item', id='1', label='foo', varname='foo', data_source={'type': 'carddef:foo'}
|
|
840 |
),
|
|
841 |
fields.DateField(
|
|
842 |
type='date',
|
|
843 |
id='2',
|
|
844 |
label='date',
|
|
845 |
varname='date',
|
|
846 |
prefill={'type': 'string', 'value': '{{ form_var_foo_live_var_date }}'},
|
|
847 |
),
|
|
848 |
]
|
|
849 |
formdef.store()
|
|
850 |
formdef.data_class().wipe()
|
|
851 |
|
|
852 |
app = get_app(pub)
|
|
853 |
resp = app.get('/foo/')
|
|
854 |
assert resp.html.find('div', {'data-field-id': '1'}).attrs['data-live-source'] == 'true'
|
|
855 |
assert resp.pyquery('#var_date.widget-prefilled') # second field is marked as prefilled
|
|
856 |
assert resp.form['f2'].value == ''
|
|
857 |
resp.form['f1'] = str(carddata1.id)
|
|
858 |
live_resp = app.post('/foo/live?modified_field_id=1&prefilled_2=on', params=resp.form.submit_fields())
|
|
859 |
assert live_resp.json['result']['2'] == {'visible': True, 'content': '2021-10-01'}
|
|
860 |
|
|
861 |
resp.form['f2'] = '2021-10-30' # manually changed -> widget-prefilled class will be removed
|
|
862 |
resp.form['f1'] = str(carddata2.id)
|
|
863 |
live_resp = app.post('/foo/live?modified_field_id=1', params=resp.form.submit_fields())
|
|
864 |
assert live_resp.json['result']['2'] == {'visible': True}
|
|
865 |
|
|
866 |
|
802 |
867 |
def test_field_live_block_string_prefill(pub, http_requests):
|
803 |
868 |
FormDef.wipe()
|
804 |
869 |
BlockDef.wipe()
|