fix: ensure uuid column is preserved for grid data
i.e. even if it's not explicitly requested; this is for sake of checkboxes
This commit is contained in:
parent
49f43e53f1
commit
3c063e7d7b
2 changed files with 26 additions and 3 deletions
|
|
@ -2506,8 +2506,12 @@ 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(original_record)
|
record = self.object_to_dict(original_record)
|
||||||
|
|
||||||
# discard non-declared fields
|
# discard non-declared fields (but always keep uuid)
|
||||||
record = {field: record[field] for field in record if field in self.columns}
|
record = {
|
||||||
|
field: record[field]
|
||||||
|
for field in record
|
||||||
|
if field in self.columns or field == "uuid"
|
||||||
|
}
|
||||||
|
|
||||||
# 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)
|
||||||
|
|
|
||||||
|
|
@ -1993,7 +1993,7 @@ class TestGrid(WebTestCase):
|
||||||
context, {"data": [{"foo": "bar", "baz": "zoo"}], "row_classes": {}}
|
context, {"data": [{"foo": "bar", "baz": "zoo"}], "row_classes": {}}
|
||||||
)
|
)
|
||||||
|
|
||||||
# non-declared columns are discarded
|
# non-declared columns are discarded...
|
||||||
mydata = [
|
mydata = [
|
||||||
{"foo": "a", "bar": "b", "baz": "c"},
|
{"foo": "a", "bar": "b", "baz": "c"},
|
||||||
]
|
]
|
||||||
|
|
@ -2001,6 +2001,25 @@ class TestGrid(WebTestCase):
|
||||||
context = grid.get_vue_context()
|
context = grid.get_vue_context()
|
||||||
self.assertEqual(context, {"data": [{"bar": "b"}], "row_classes": {}})
|
self.assertEqual(context, {"data": [{"bar": "b"}], "row_classes": {}})
|
||||||
|
|
||||||
|
# ...but uuid column is never discarded
|
||||||
|
mydata = [
|
||||||
|
{
|
||||||
|
"foo": "a",
|
||||||
|
"bar": "b",
|
||||||
|
"baz": "c",
|
||||||
|
"uuid": "069bb511-39d3-7c74-8000-38668fdef9ec",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
grid = self.make_grid(columns=["bar"], data=mydata)
|
||||||
|
context = grid.get_vue_context()
|
||||||
|
self.assertEqual(
|
||||||
|
context,
|
||||||
|
{
|
||||||
|
"data": [{"bar": "b", "uuid": "069bb511-39d3-7c74-8000-38668fdef9ec"}],
|
||||||
|
"row_classes": {},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
# if grid has actions, that list may be supplemented
|
# if grid has actions, that list may be supplemented
|
||||||
mydata = [
|
mydata = [
|
||||||
{"foo": "bar", "baz": "zoo"},
|
{"foo": "bar", "baz": "zoo"},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue