Projet

Général

Profil

0001-conditions-encode-items-values-for-contains-checks-2.patch

Frédéric Péters, 28 novembre 2018 12:09

Télécharger (3,27 ko)

Voir les différences:

Subject: [PATCH] conditions: encode items values for contains checks (#28416)

 tests/test_form_pages.py | 47 ++++++++++++++++++++++++++++++++++++++++
 wcs/variables.py         |  2 +-
 2 files changed, 48 insertions(+), 1 deletion(-)
tests/test_form_pages.py
5351 5351
    resp = resp.form.submit('submit')
5352 5352
    assert 'f4' in resp.form.fields
5353 5353

  
5354
def test_field_unicode_condition_in_array(pub):
5355
    FormDef.wipe()
5356
    formdef = FormDef()
5357
    formdef.name = 'Foo'
5358
    formdef.fields = [
5359
        fields.PageField(id='0', label='1st page', type='page'),
5360
        fields.ItemsField(id='1', label='items', type='items',
5361
                required=True,
5362
                varname='foo', items=['Pomme', 'Poire', 'Pêche', 'Abricot']),
5363
        fields.PageField(id='2', label='2nd page', type='page'),
5364
        fields.StringField(type='string', id='3', label='Baz', size='40',
5365
            required=True, varname='baz',
5366
            condition={'type': 'django', 'value': '"Pêche" in form_var_foo'}),
5367
        fields.CommentField(type='comment', id='4', label='{{form_var_foo}}'),
5368
        fields.CommentField(type='comment', id='5', label='{% if "Pêche" in form_var_foo %}OK{% endif %}'),
5369
    ]
5370

  
5371
    workflow = Workflow(name='test')
5372
    st1 = workflow.add_status('Status1', 'st1')
5373
    display1 = DisplayMessageWorkflowStatusItem()
5374
    display1.message = 'Message {% if "Pêche" in form_var_foo %}OK{% endif %}'
5375
    display1.to = []
5376
    st1.items.append(display1)
5377
    display1.parent = st1
5378
    workflow.store()
5379

  
5380
    formdef.workflow = workflow
5381
    formdef.store()
5382

  
5383
    resp = get_app(pub).get('/foo/')
5384
    resp.form['f1$element1'].checked = True
5385
    resp = resp.form.submit('submit')
5386
    assert not 'f3' in resp.form.fields
5387

  
5388
    resp = get_app(pub).get('/foo/')
5389
    resp.form['f1$element1'].checked = True
5390
    resp.form['f1$element2'].checked = True
5391
    resp = resp.form.submit('submit')
5392
    assert 'f3' in resp.form.fields  # check it's ok in field condition
5393
    resp.form['f3'] = 'hop'
5394
    assert '>Poire, Pêche<' in resp.body  # check it's displayed correctly
5395
    assert '>OK<' in resp.body  # check it's ok in template condition
5396
    resp = resp.form.submit('submit')
5397
    assert 'Check values then click submit.' in resp.body
5398
    resp = resp.form.submit('submit').follow()
5399
    assert '<p>Message OK</p>' in resp.body  # check it's ok in workflow template
5400

  
5354 5401
def test_field_live_condition(pub):
5355 5402
    FormDef.wipe()
5356 5403
    formdef = FormDef()
wcs/variables.py
358 358

  
359 359
    def __contains__(self, value):
360 360
        if self.field.key == 'items':
361
            return value in self.data.get(self.field.id)
361
            return qommon.misc.site_encode(value) in self.data.get(self.field.id)
362 362
        return value in self.get_value()
363 363

  
364 364
    def __unicode__(self):
365
-