wcs: escape option ids in card cell filters (#78004)
gitea/combo/pipeline/head This commit looks good Details

This commit is contained in:
Valentin Deniaud 2023-05-30 13:58:48 +02:00
parent c85578186c
commit 221af86bd9
3 changed files with 18 additions and 16 deletions

View File

@ -73,6 +73,8 @@ def get_filter_attrs(cell, card):
if not isinstance(value, list):
value = [value]
value = [escape(x) for x in value]
attrs[filter_id] = json.dumps(value)
return mark_safe(' '.join("data-%s='%s'" % (filter_id, value) for filter_id, value in attrs.items()))

View File

@ -1593,8 +1593,8 @@ def test_card_cell_table_mode_render_filters(mock_send, context, app):
assert len(resp.form.fields) == 1
assert resp.form['related'].options == [('13', False, 'Abc'), ('42', False, 'Foo Bar')]
assert [x.attrib for x in resp.pyquery('.list-of-cards li')] == [
{'data-related': '[42]'},
{'data-related': '[13]'},
{'data-related': '["42"]'},
{'data-related': '["13"]'},
{},
]
@ -1605,12 +1605,12 @@ def test_card_cell_table_mode_render_filters(mock_send, context, app):
assert len(resp.form.fields) == 2
assert resp.form['fieldj'].options == [
('first value', False, 'First Value'),
('second value', False, 'Second Value'),
('second value \'', False, 'Second Value \''),
('third value', False, 'Third Value'),
]
assert [x.attrib for x in resp.pyquery('.list-of-cards li')] == [
{'data-related': '[42]', 'data-fieldj': '["first value", "second value"]'},
{'data-related': '[13]', 'data-fieldj': '["first value", "third value"]'},
{'data-related': '["42"]', 'data-fieldj': '["first value", "second value \'"]'},
{'data-related': '["13"]', 'data-fieldj': '["first value", "third value"]'},
{},
]
@ -1625,8 +1625,8 @@ def test_card_cell_table_mode_render_filters(mock_send, context, app):
resp = TestResponse(cell.render(context))
assert len(resp.form.fields) == 2
assert [x.attrib for x in resp.pyquery('table tbody tr')] == [
{'data-related': '[42]', 'data-fieldj': '["first value", "second value"]'},
{'data-related': '[13]', 'data-fieldj': '["first value", "third value"]'},
{'data-related': '["42"]', 'data-fieldj': '["first value", "second value \'"]'},
{'data-related': '["13"]', 'data-fieldj': '["first value", "third value"]'},
{},
]
@ -3260,8 +3260,8 @@ def test_card_cell_card_mode_render_filters(mock_send, context, app):
attributes = [x.attrib for x in resp.pyquery('.cell--body')]
data_attributes = [{k: v for k, v in attr.items() if k.startswith('data')} for attr in attributes]
assert data_attributes == [
{'data-related': '[42]'},
{'data-related': '[13]'},
{'data-related': '["42"]'},
{'data-related': '["13"]'},
{},
]
@ -3272,15 +3272,15 @@ def test_card_cell_card_mode_render_filters(mock_send, context, app):
assert len(resp.form.fields) == 2
assert resp.form['fieldj'].options == [
('first value', False, 'First Value'),
('second value', False, 'Second Value'),
('second value \'', False, 'Second Value \''),
('third value', False, 'Third Value'),
]
attributes = [x.attrib for x in resp.pyquery('.cell--body')]
data_attributes = [{k: v for k, v in attr.items() if k.startswith('data')} for attr in attributes]
assert data_attributes == [
{'data-related': '[42]', 'data-fieldj': '["first value", "second value"]'},
{'data-related': '[13]', 'data-fieldj': '["first value", "third value"]'},
{'data-related': '["42"]', 'data-fieldj': '["first value", "second value \'"]'},
{'data-related': '["13"]', 'data-fieldj': '["first value", "third value"]'},
{},
]
@ -3298,8 +3298,8 @@ def test_card_cell_card_mode_render_filters(mock_send, context, app):
attributes = [x.attrib for x in resp.pyquery('.cell--body')]
data_attributes = [{k: v for k, v in attr.items() if k.startswith('data')} for attr in attributes]
assert data_attributes == [
{'data-related': '[42]', 'data-fieldj': '["first value", "second value"]'},
{'data-related': '[13]', 'data-fieldj': '["first value", "third value"]'},
{'data-related': '["42"]', 'data-fieldj': '["first value", "second value \'"]'},
{'data-related': '["13"]', 'data-fieldj': '["first value", "third value"]'},
{},
]

View File

@ -125,8 +125,8 @@ WCS_CARDS_DATA = {
'fieldg': 'test@localhost',
'fieldh': 'https://www.example.net/',
'fieldi': "<p>lorem<strong>ipsum</p><p>hello'world</p>",
'fieldj': 'First Value, Second Value',
'fieldj_raw': ['first value', 'second value'],
'fieldj': 'First Value, Second Value \'',
'fieldj_raw': ['first value', 'second value \''],
'fieldk': 'test',
'related': 'Foo Bar',
'related_raw': 42,