From d9b880248c592f1c9787f11c01c290ed0600787f Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 4 Feb 2026 08:48:53 -0600 Subject: [PATCH] fix: fallback to dict logic for grid render date/time --- src/wuttaweb/grids/base.py | 10 ++++++++-- tests/grids/test_base.py | 13 +++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/wuttaweb/grids/base.py b/src/wuttaweb/grids/base.py index 82965ef..99f1ec6 100644 --- a/src/wuttaweb/grids/base.py +++ b/src/wuttaweb/grids/base.py @@ -2030,7 +2030,10 @@ class Grid: # pylint: disable=too-many-instance-attributes,too-many-public-meth grid.set_renderer('foo', 'date') """ - dt = getattr(obj, key) + try: + dt = getattr(obj, key) + except AttributeError: + dt = obj[key] return self.app.render_date(dt) def render_datetime(self, obj, key, value): # pylint: disable=unused-argument @@ -2046,7 +2049,10 @@ class Grid: # pylint: disable=too-many-instance-attributes,too-many-public-meth grid.set_renderer('foo', 'datetime') """ - dt = getattr(obj, key) + try: + dt = getattr(obj, key) + except AttributeError: + dt = obj[key] return self.app.render_datetime(dt, html=True) def render_enum(self, obj, key, value, enum=None): diff --git a/tests/grids/test_base.py b/tests/grids/test_base.py index b8334a6..5af544e 100644 --- a/tests/grids/test_base.py +++ b/tests/grids/test_base.py @@ -1682,6 +1682,12 @@ class TestGrid(WebTestCase): result = grid.render_date(obj, "dt", str(dt)) self.assertEqual(result, "2025-01-13") + # object as dict + dt = datetime.date(2025, 1, 13) + obj = {"dt": dt} + result = grid.render_date(obj, "dt", str(dt)) + self.assertEqual(result, "2025-01-13") + def test_render_datetime(self): tzlocal = get_timezone_by_name("America/Los_Angeles") with patch.object(self.app, "get_timezone", return_value=tzlocal): @@ -1699,6 +1705,13 @@ class TestGrid(WebTestCase): self.assertTrue(result.startswith('