forms: don't set tracking code unless enabled (#30887)
This commit is contained in:
parent
e4ee1a902b
commit
6ddfd68c6d
|
@ -1258,6 +1258,35 @@ def test_form_no_tracking_code(pub):
|
|||
resp = get_app(pub).get('/test/')
|
||||
assert not '<h3>Tracking code</h3>' in resp.body
|
||||
|
||||
def test_form_no_tracking_code_variable(pub):
|
||||
create_user(pub)
|
||||
FormDef.wipe()
|
||||
formdef = create_formdef()
|
||||
formdef.data_class().wipe()
|
||||
formdef.fields = [fields.PageField(id='0', label='1st page', type='page'),
|
||||
fields.StringField(id='1', label='string'),
|
||||
fields.PageField(id='2', label='2nd page', type='page'),
|
||||
fields.CommentField(id='3', label='<p>xxx{{form_tracking_code|default:""}}yyy</p>', type='comment'),
|
||||
]
|
||||
formdef.store()
|
||||
app = login(get_app(pub), username='foo', password='foo')
|
||||
resp = app.get('/test/')
|
||||
resp.form['f1'] = 'foo'
|
||||
app.post('/test/autosave', params=resp.form.submit_fields())
|
||||
resp = resp.form.submit('submit')
|
||||
assert_current_page(resp, '2nd page')
|
||||
assert 'xxxyyy' in resp.body
|
||||
resp = resp.form.submit('submit')
|
||||
assert_current_page(resp, 'Validating')
|
||||
resp = resp.form.submit('submit').follow()
|
||||
assert 'The form has been recorded' in resp.body
|
||||
assert formdef.data_class().count() == 1
|
||||
data_id = formdef.data_class().select()[0].id
|
||||
data = formdef.data_class().get(data_id)
|
||||
assert data.data == {'1': 'foo'}
|
||||
assert data.tracking_code is None
|
||||
|
||||
|
||||
def get_displayed_tracking_code(resp):
|
||||
tracking_code = None
|
||||
for a_tag in resp.html.findAll('a'):
|
||||
|
|
|
@ -611,7 +611,7 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
# first hit on first page, if tracking code are enabled and we
|
||||
# are not editing an existing formdata, generate a new tracking
|
||||
# code.
|
||||
if not self.edit_mode and self.has_draft_support() and not get_request().form.has_key('mt'):
|
||||
if not self.edit_mode and self.formdef.enable_tracking_codes and not get_request().form.has_key('mt'):
|
||||
tracking_code = get_publisher().tracking_code_class()
|
||||
tracking_code.store()
|
||||
token = randbytes(8)
|
||||
|
@ -1134,7 +1134,7 @@ class FormPage(Directory, FormTemplateMixin):
|
|||
return redirect(get_publisher().get_root_url())
|
||||
|
||||
def set_tracking_code(self, formdata, magictoken_data=None):
|
||||
if not self.has_draft_support():
|
||||
if not self.formdef.enable_tracking_codes:
|
||||
return
|
||||
if formdata.tracking_code:
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue