3
0
Fork 0

fix: improve support for date, datetime fields in grids, forms

This commit is contained in:
Lance Edgar 2024-12-12 15:15:00 -06:00
parent eda2326a97
commit 3cad7f1b13
8 changed files with 234 additions and 6 deletions

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8; -*-
import datetime
from unittest import TestCase
from unittest.mock import patch, MagicMock
@ -206,6 +207,31 @@ class TestGrid(WebTestCase):
self.assertIsNot(grid.renderers['foo'], render2)
self.assertEqual(grid.renderers['foo'](None, None, None), 42)
def test_set_default_renderer(self):
model = self.app.model
# no defaults for "plain" schema
grid = self.make_grid(columns=['foo', 'bar'])
self.assertEqual(grid.renderers, {})
# no defaults for "plain" mapped class
grid = self.make_grid(model_class=model.Setting)
self.assertEqual(grid.renderers, {})
def myrender(obj, key, value):
return value
# renderer set for datetime mapped field
grid = self.make_grid(model_class=model.Upgrade)
self.assertIn('created', grid.renderers)
self.assertIsNot(grid.renderers['created'], myrender)
# renderer *not* set for datetime, if override present
grid = self.make_grid(model_class=model.Upgrade,
renderers={'created': myrender})
self.assertIn('created', grid.renderers)
self.assertIs(grid.renderers['created'], myrender)
def test_linked_columns(self):
grid = self.make_grid(columns=['foo', 'bar'])
self.assertEqual(grid.linked_columns, [])
@ -1294,6 +1320,18 @@ class TestGrid(WebTestCase):
# rendering methods
##############################
def test_render_datetime(self):
grid = self.make_grid(columns=['foo', 'bar'])
obj = MagicMock(dt=None)
result = grid.render_datetime(obj, 'dt', None)
self.assertIsNone(result)
dt = datetime.datetime(2024, 12, 12, 13, 44, tzinfo=datetime.timezone.utc)
obj = MagicMock(dt=dt)
result = grid.render_datetime(obj, 'dt', str(dt))
self.assertEqual(result, '2024-12-12 13:44+0000')
def test_render_vue_tag(self):
grid = self.make_grid(columns=['foo', 'bar'])
html = grid.render_vue_tag()