Modernize datagrid columns, fix bugs, and add JSON serialization.

Review Request #14844 — Created Feb. 20, 2026 and updated — Latest diff uploaded

Information

Review Board
release-7.1.x

Reviewers

This is a major update to the existing datagrid columns, largely
preparing them for the new Dashboard API resource, and fixing up a
number of issues in their implementation.

All columns now provide a stable JSON representation that can be used in
the API, returning structured data, API-compatible objects (which will
be turned into payloads or links), or raw values.

In some cases, this is done by overriding the new to_json(), but in
most we just now calculate the state for both the JSON and HTML
representations in the column-controlled get_raw_object_value(). This
keeps the data calculation in one place, and simplifies both output
functions (often using default logic).

HTML rendering has been fixed in all places to correctly use
format_html() or escape() for results. This will future-proof these
columns for when the datagrid code starts escaping non-SafeStrings.

Most of the __init__() methods are now gone, instead using the new
class-defined attributes. This is much easier to maintain and
specialize.

Types have been fixed and annotated all throughout, catching issues in
some of the logic.

Many bugs (such as extra spaces at the end of values, wrong data types
being returned where strings are expected) that weren't previously
caught have been fixed, with tests updated to strictly check return
types.

Unit tests pass.

Tested all columns in the dashboard in both the browser and with
a test script using the in-progress dashboard API.

Commits

Files