3
0
Fork 0

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:
Lance Edgar 2026-03-18 20:29:26 -05:00
parent 49f43e53f1
commit 3c063e7d7b
2 changed files with 26 additions and 3 deletions

View file

@ -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)

View file

@ -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"},