799 |
799 |
live_resp = app.post('/foo/live?modified_field_id=user', params=resp.form.submit_fields(), status=403)
|
800 |
800 |
|
801 |
801 |
|
|
802 |
def test_field_live_item_datasource_carddef_prefill(pub, http_requests):
|
|
803 |
CardDef.wipe()
|
|
804 |
|
|
805 |
carddef_related = CardDef()
|
|
806 |
carddef_related.name = 'bar'
|
|
807 |
carddef_related.digest_templates = {'default': '{{ form_var_bar }}'}
|
|
808 |
carddef_related.fields = [
|
|
809 |
fields.StringField(id='1', type='string', label='string', varname='bar'),
|
|
810 |
]
|
|
811 |
carddef_related.store()
|
|
812 |
carddef_related.data_class().wipe()
|
|
813 |
for value in ['A', 'B', 'C']:
|
|
814 |
carddata = carddef_related.data_class()()
|
|
815 |
carddata.data = {
|
|
816 |
'1': value,
|
|
817 |
}
|
|
818 |
carddata.just_created()
|
|
819 |
carddata.store()
|
|
820 |
|
|
821 |
carddef = CardDef()
|
|
822 |
carddef.name = 'foo'
|
|
823 |
carddef.digest_templates = {'default': '{{ form_var_foo }}'}
|
|
824 |
carddef.fields = [
|
|
825 |
fields.StringField(id='1', type='string', label='string', varname='foo'),
|
|
826 |
fields.ItemField(
|
|
827 |
type='item',
|
|
828 |
id='2',
|
|
829 |
varname='item',
|
|
830 |
data_source={'type': 'carddef:bar'},
|
|
831 |
),
|
|
832 |
]
|
|
833 |
carddef.store()
|
|
834 |
carddef.data_class().wipe()
|
|
835 |
carddata1 = carddef.data_class()()
|
|
836 |
carddata1.data = {
|
|
837 |
'1': 'bar',
|
|
838 |
'2': '1',
|
|
839 |
'2_display': 'A',
|
|
840 |
}
|
|
841 |
carddata1.just_created()
|
|
842 |
carddata1.store()
|
|
843 |
carddata2 = carddef.data_class()()
|
|
844 |
carddata2.data = {
|
|
845 |
'1': 'baz',
|
|
846 |
'2': '2',
|
|
847 |
'2_display': 'B',
|
|
848 |
}
|
|
849 |
carddata2.just_created()
|
|
850 |
carddata2.store()
|
|
851 |
|
|
852 |
FormDef.wipe()
|
|
853 |
formdef = FormDef()
|
|
854 |
formdef.name = 'Foo'
|
|
855 |
formdef.fields = [
|
|
856 |
fields.ItemField(
|
|
857 |
type='item', id='1', label='foo', varname='foo', data_source={'type': 'carddef:foo'}
|
|
858 |
),
|
|
859 |
fields.ItemField(
|
|
860 |
type='item',
|
|
861 |
id='2',
|
|
862 |
label='item',
|
|
863 |
varname='item',
|
|
864 |
prefill={'type': 'string', 'value': '{{ form_var_foo_live_var_item }}'},
|
|
865 |
data_source={'type': 'carddef:bar'},
|
|
866 |
),
|
|
867 |
]
|
|
868 |
formdef.store()
|
|
869 |
formdef.data_class().wipe()
|
|
870 |
|
|
871 |
app = get_app(pub)
|
|
872 |
resp = app.get('/foo/')
|
|
873 |
assert resp.html.find('div', {'data-field-id': '1'}).attrs['data-live-source'] == 'true'
|
|
874 |
assert resp.pyquery('#var_item.widget-prefilled') # second field is marked as prefilled
|
|
875 |
assert resp.form['f2'].value == '1'
|
|
876 |
resp.form['f1'] = str(carddata2.id)
|
|
877 |
live_resp = app.post('/foo/live?modified_field_id=1&prefilled_2=on', params=resp.form.submit_fields())
|
|
878 |
assert live_resp.json['result']['2'] == {'visible': True, 'content': '2'}
|
|
879 |
|
|
880 |
resp.form['f2'] = '3' # manually changed -> widget-prefilled class will be removed
|
|
881 |
resp.form['f1'] = str(carddata1.id)
|
|
882 |
live_resp = app.post('/foo/live?modified_field_id=1', params=resp.form.submit_fields())
|
|
883 |
assert live_resp.json['result']['2'] == {'visible': True}
|
|
884 |
|
|
885 |
|
802 |
886 |
def test_field_live_block_string_prefill(pub, http_requests):
|
803 |
887 |
FormDef.wipe()
|
804 |
888 |
BlockDef.wipe()
|