Projet

Général

Profil

0001-forms-don-t-set-tracking-code-unless-enabled-30887.patch

Frédéric Péters, 25 février 2019 18:53

Télécharger (3,1 ko)

Voir les différences:

Subject: [PATCH] forms: don't set tracking code unless enabled (#30887)

 tests/test_form_pages.py | 29 +++++++++++++++++++++++++++++
 wcs/forms/root.py        |  4 ++--
 2 files changed, 31 insertions(+), 2 deletions(-)
tests/test_form_pages.py
1258 1258
    resp = get_app(pub).get('/test/')
1259 1259
    assert not '<h3>Tracking code</h3>' in resp.body
1260 1260

  
1261
def test_form_no_tracking_code_variable(pub):
1262
    create_user(pub)
1263
    FormDef.wipe()
1264
    formdef = create_formdef()
1265
    formdef.data_class().wipe()
1266
    formdef.fields = [fields.PageField(id='0', label='1st page', type='page'),
1267
            fields.StringField(id='1', label='string'),
1268
            fields.PageField(id='2', label='2nd page', type='page'),
1269
            fields.CommentField(id='3', label='<p>xxx{{form_tracking_code|default:""}}yyy</p>', type='comment'),
1270
    ]
1271
    formdef.store()
1272
    app = login(get_app(pub), username='foo', password='foo')
1273
    resp = app.get('/test/')
1274
    resp.form['f1'] = 'foo'
1275
    app.post('/test/autosave', params=resp.form.submit_fields())
1276
    resp = resp.form.submit('submit')
1277
    assert_current_page(resp, '2nd page')
1278
    assert 'xxxyyy' in resp.body
1279
    resp = resp.form.submit('submit')
1280
    assert_current_page(resp, 'Validating')
1281
    resp = resp.form.submit('submit').follow()
1282
    assert 'The form has been recorded' in resp.body
1283
    assert formdef.data_class().count() == 1
1284
    data_id = formdef.data_class().select()[0].id
1285
    data = formdef.data_class().get(data_id)
1286
    assert data.data == {'1': 'foo'}
1287
    assert data.tracking_code is None
1288

  
1289

  
1261 1290
def get_displayed_tracking_code(resp):
1262 1291
    tracking_code = None
1263 1292
    for a_tag in resp.html.findAll('a'):
wcs/forms/root.py
611 611
            # first hit on first page, if tracking code are enabled and we
612 612
            # are not editing an existing formdata, generate a new tracking
613 613
            # code.
614
            if not self.edit_mode and self.has_draft_support() and not get_request().form.has_key('mt'):
614
            if not self.edit_mode and self.formdef.enable_tracking_codes and not get_request().form.has_key('mt'):
615 615
                tracking_code = get_publisher().tracking_code_class()
616 616
                tracking_code.store()
617 617
                token = randbytes(8)
......
1134 1134
        return redirect(get_publisher().get_root_url())
1135 1135

  
1136 1136
    def set_tracking_code(self, formdata, magictoken_data=None):
1137
        if not self.has_draft_support():
1137
        if not self.formdef.enable_tracking_codes:
1138 1138
            return
1139 1139
        if formdata.tracking_code:
1140 1140
            return
1141
-