diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index 073a5a93f..96d253510 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -7232,6 +7232,32 @@ def test_field_live_comment_content(pub, http_requests): assert live_resp.json['result']['7']['content'] == '

bla hello bla

' +def test_field_live_comment_content_from_structured_item_data(pub, http_requests): + FormDef.wipe() + formdef = FormDef() + formdef.name = 'Foo' + formdef.fields = [ + fields.ItemField(type='item', id='1', label='Foo', + varname='bar', + data_source={ + 'type': 'json', + 'value': 'http://remote.example.net/json-list-extra' + } + ), + fields.CommentField(id='7', label='bla {{form_var_bar_structured_foo}} bla', type='comment'), + ] + formdef.store() + formdef.data_class().wipe() + + app = get_app(pub) + resp = app.get('/foo/') + assert 'f1' in resp.form.fields + assert resp.html.find('div', {'data-field-id': '1'}).attrs['data-live-source'] == 'true' + resp.form['f1'] = 'a' + live_resp = app.post('/foo/live', params=resp.form.submit_fields()) + assert live_resp.json['result']['7']['content'] == '

bla bar bla

' + + def test_form_edit_and_backoffice_field_change(pub): create_user(pub) diff --git a/wcs/fields.py b/wcs/fields.py index 55cab6466..be0d45422 100644 --- a/wcs/fields.py +++ b/wcs/fields.py @@ -463,7 +463,9 @@ class Field(object): return True def get_referenced_varnames(self, formdef, value): - return re.findall(r'\b%s[_\.]var[_\.]([a-zA-Z0-9_]+?)(?:_raw|\b)' % formdef.var_prefix, value or '') + return re.findall( + r'\b%s[_\.]var[_\.]([a-zA-Z0-9_]+?)(?:_raw|_live_|_structured_|\b)' % formdef.var_prefix, + value or '') def get_condition_varnames(self, formdef): return self.get_referenced_varnames(formdef, self.condition['value'])