Skip to content

Commit 6fede23

Browse files
committed
Only return render_coll columns that differ from default, refs #2619
1 parent eae94dc commit 6fede23

File tree

4 files changed

+7
-11
lines changed

4 files changed

+7
-11
lines changed

datasette/views/row.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,6 @@ async def template_data():
140140
break
141141
if plugin_display_value:
142142
rendered_row[column] = str(plugin_display_value)
143-
else:
144-
# Default: convert value to string
145-
rendered_row[column] = "" if value is None else str(value)
146143
rendered_rows.append(rendered_row)
147144
data["render_cell"] = rendered_rows
148145

datasette/views/table.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1516,9 +1516,6 @@ async def extra_render_cell():
15161516
break
15171517
if plugin_display_value:
15181518
rendered_row[column] = str(plugin_display_value)
1519-
else:
1520-
# Default: convert value to string
1521-
rendered_row[column] = "" if value is None else str(value)
15221519
rendered_rows.append(rendered_row)
15231520
return rendered_rows
15241521

tests/test_api.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -792,14 +792,15 @@ def render_cell(self, value, column, table, database):
792792
assert "rows" in data
793793

794794
# render_cell should be a list with one row (since this is a row page)
795+
# Only columns modified by plugins are included (sparse output)
795796
render_cell = data["render_cell"]
796797
assert len(render_cell) == 1
797798

798799
# The row: id=1, name='Alice'
799800
# The 'name' column should be rendered by our plugin as <strong>Alice</strong>
800801
assert render_cell[0]["name"] == "<strong>Alice</strong>"
801-
# The 'id' column should use default rendering (just the value as string)
802-
assert render_cell[0]["id"] == "1"
802+
# The 'id' column is not included since no plugin modified it
803+
assert "id" not in render_cell[0]
803804

804805
# The regular rows should still contain raw values
805806
assert data["rows"] == [{"id": 1, "name": "Alice"}]

tests/test_table_api.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1426,18 +1426,19 @@ def render_cell(self, value, column, table, database):
14261426
assert "rows" in data
14271427

14281428
# render_cell should be a list of rows, each row being a dict of column -> rendered HTML
1429+
# Only columns modified by plugins are included (sparse output)
14291430
render_cell = data["render_cell"]
14301431
assert len(render_cell) == 2
14311432

14321433
# First row: id=1, name='Alice'
14331434
# The 'name' column should be rendered by our plugin as <strong>Alice</strong>
14341435
assert render_cell[0]["name"] == "<strong>Alice</strong>"
1435-
# The 'id' column should use default rendering (just the value as string)
1436-
assert render_cell[0]["id"] == "1"
1436+
# The 'id' column is not included since no plugin modified it
1437+
assert "id" not in render_cell[0]
14371438

14381439
# Second row: id=2, name='Bob'
14391440
assert render_cell[1]["name"] == "<strong>Bob</strong>"
1440-
assert render_cell[1]["id"] == "2"
1441+
assert "id" not in render_cell[1]
14411442

14421443
# The regular rows should still contain raw values
14431444
assert data["rows"] == [

0 commit comments

Comments
 (0)