fix: fallback to dict logic for grid render date/time
This commit is contained in:
parent
4ac40a835b
commit
d9b880248c
2 changed files with 21 additions and 2 deletions
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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('<span title="'))
|
||||
self.assertIn("2024-12-12 05:44-0800", result)
|
||||
|
||||
# object as dict
|
||||
dt = datetime.datetime(2024, 12, 12, 13, 44)
|
||||
obj = {"dt": dt}
|
||||
result = grid.render_datetime(obj, "dt", str(dt))
|
||||
self.assertTrue(result.startswith('<span title="'))
|
||||
self.assertIn("2024-12-12 05:44-0800", result)
|
||||
|
||||
def test_render_vue_tag(self):
|
||||
grid = self.make_grid(columns=["foo", "bar"])
|
||||
html = grid.render_vue_tag()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue