diff --git a/src/wuttaweb/forms/widgets.py b/src/wuttaweb/forms/widgets.py index 72c4d79..e7ba16d 100644 --- a/src/wuttaweb/forms/widgets.py +++ b/src/wuttaweb/forms/widgets.py @@ -274,7 +274,7 @@ class WuttaDateTimeWidget(DateTimeInputWidget): if not cstruct: return "" dt = datetime.datetime.fromisoformat(cstruct) - return self.app.render_datetime(dt) + return self.app.render_datetime(dt, html=True) return super().serialize(field, cstruct, **kw) diff --git a/src/wuttaweb/grids/base.py b/src/wuttaweb/grids/base.py index 76149f6..63829a4 100644 --- a/src/wuttaweb/grids/base.py +++ b/src/wuttaweb/grids/base.py @@ -2041,7 +2041,7 @@ class Grid: # pylint: disable=too-many-instance-attributes,too-many-public-meth grid.set_renderer('foo', 'datetime') """ dt = getattr(obj, key) - return self.app.render_datetime(dt) + return self.app.render_datetime(dt, html=True) def render_enum(self, obj, key, value, enum=None): """ diff --git a/src/wuttaweb/views/master.py b/src/wuttaweb/views/master.py index f1920ed..030bacd 100644 --- a/src/wuttaweb/views/master.py +++ b/src/wuttaweb/views/master.py @@ -25,7 +25,6 @@ Base Logic for Master Views """ # pylint: disable=too-many-lines -import datetime import logging import os import threading @@ -1280,7 +1279,6 @@ class MasterView(View): # pylint: disable=too-many-public-methods # issued_at g.set_label("issued_at", "Changed") - g.set_renderer("issued_at", self.render_issued_at) g.set_link("issued_at") g.set_sort_defaults("issued_at", "desc") @@ -1390,7 +1388,7 @@ class MasterView(View): # pylint: disable=too-many-public-methods "instance_title": instance_title, "instance_url": self.get_action_url("versions", instance), "transaction": txn, - "changed": self.render_issued_at(txn, None, None), + "changed": self.app.render_datetime(txn.issued_at, html=True), "version_diffs": version_diffs, "show_prev_next": True, "prev_url": prev_url, @@ -1421,14 +1419,6 @@ class MasterView(View): # pylint: disable=too-many-public-methods .all() ) - def render_issued_at( # pylint: disable=missing-function-docstring,unused-argument - self, txn, key, value - ): - dt = txn.issued_at - dt = dt.replace(tzinfo=datetime.timezone.utc) - dt = dt.astimezone(None) - return self.app.render_datetime(dt) - ############################## # autocomplete methods ############################## @@ -2025,22 +2015,17 @@ class MasterView(View): # pylint: disable=too-many-public-methods fmt = f"${{:0,.{scale}f}}" return fmt.format(value) - def grid_render_datetime(self, record, key, value, fmt=None): - """ - Custom grid value renderer for - :class:`~python:datetime.datetime` fields. + def grid_render_datetime( # pylint: disable=empty-docstring + self, record, key, value, fmt=None + ): + """ """ + warnings.warn( + "MasterView.grid_render_datetime() is deprecated; " + "please use app.render_datetime() directly instead", + DeprecationWarning, + stacklevel=2, + ) - :param fmt: Optional format string to use instead of the - default: ``'%Y-%m-%d %I:%M:%S %p'`` - - To use this feature for your grid:: - - grid.set_renderer('my_datetime_field', self.grid_render_datetime) - - # you can also override format - grid.set_renderer('my_datetime_field', self.grid_render_datetime, - fmt='%Y-%m-%d %H:%M:%S') - """ # nb. get new value since the one provided will just be a # (json-safe) *string* if the original type was datetime value = record[key] diff --git a/src/wuttaweb/views/upgrades.py b/src/wuttaweb/views/upgrades.py index a4868b2..34b2ed8 100644 --- a/src/wuttaweb/views/upgrades.py +++ b/src/wuttaweb/views/upgrades.py @@ -81,9 +81,6 @@ class UpgradeView(MasterView): # pylint: disable=abstract-method # description g.set_link("description") - # created - g.set_renderer("created", self.grid_render_datetime) - # created_by g.set_link("created_by") Creator = orm.aliased(model.User) # pylint: disable=invalid-name @@ -96,9 +93,6 @@ class UpgradeView(MasterView): # pylint: disable=abstract-method # status g.set_renderer("status", self.grid_render_enum, enum=enum.UpgradeStatus) - # executed - g.set_renderer("executed", self.grid_render_datetime) - # executed_by g.set_link("executed_by") Executor = orm.aliased(model.User) # pylint: disable=invalid-name diff --git a/tests/forms/test_widgets.py b/tests/forms/test_widgets.py index 03799bd..818c38a 100644 --- a/tests/forms/test_widgets.py +++ b/tests/forms/test_widgets.py @@ -207,7 +207,8 @@ class TestWuttaDateTimeWidget(WebTestCase): # input data (from schema type) is always "local, zone-aware, isoformat" dt = datetime.datetime(2024, 12, 12, 13, 49, tzinfo=tzlocal) result = widget.serialize(field, dt.isoformat()) - self.assertEqual(result, "2024-12-12 13:49-0500") + self.assertTrue(result.startswith('