fix: discard non-declared field values for grid vue data
This commit is contained in:
parent
2ccfe29553
commit
5b6c686a9d
2 changed files with 15 additions and 0 deletions
|
|
@ -2390,6 +2390,9 @@ class Grid: # pylint: disable=too-many-instance-attributes,too-many-public-meth
|
||||||
# convert record to new dict
|
# convert record to new dict
|
||||||
record = self.object_to_dict(record)
|
record = self.object_to_dict(record)
|
||||||
|
|
||||||
|
# discard non-declared fields
|
||||||
|
record = {field: record[field] for field in record if field in self.columns}
|
||||||
|
|
||||||
# make all values safe for json
|
# make all values safe for json
|
||||||
record = make_json_safe(record, warn=False)
|
record = make_json_safe(record, warn=False)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1867,7 +1867,19 @@ class TestGrid(WebTestCase):
|
||||||
context = grid.get_vue_context()
|
context = grid.get_vue_context()
|
||||||
self.assertEqual(context, {"data": [{"foo": "bar"}], "row_classes": {}})
|
self.assertEqual(context, {"data": [{"foo": "bar"}], "row_classes": {}})
|
||||||
|
|
||||||
|
# non-declared columns are discarded
|
||||||
|
mydata = [
|
||||||
|
{"foo": "a", "bar": "b", "baz": "c"},
|
||||||
|
]
|
||||||
|
grid = self.make_grid(columns=["bar"], data=mydata)
|
||||||
|
context = grid.get_vue_context()
|
||||||
|
self.assertEqual(context, {"data": [{"bar": "b"}], "row_classes": {}})
|
||||||
|
|
||||||
# if grid has actions, that list may be supplemented
|
# if grid has actions, that list may be supplemented
|
||||||
|
mydata = [
|
||||||
|
{"foo": "bar"},
|
||||||
|
]
|
||||||
|
grid = self.make_grid(columns=["foo"], data=mydata)
|
||||||
grid.actions.append(mod.GridAction(self.request, "view", url="/blarg"))
|
grid.actions.append(mod.GridAction(self.request, "view", url="/blarg"))
|
||||||
context = grid.get_vue_context()
|
context = grid.get_vue_context()
|
||||||
self.assertIsNot(context["data"], mydata)
|
self.assertIsNot(context["data"], mydata)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue