From 6c634303ae9bad18885731fdd58a0136fafdc3a3 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 14 Mar 2026 16:29:06 -0500 Subject: [PATCH] fix: fix datetime handling for alembic migrations view this should ensure the column sorting works, and adds normal rendering for the form fields --- src/wuttaweb/views/alembic.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/wuttaweb/views/alembic.py b/src/wuttaweb/views/alembic.py index ed9352e..5d73849 100644 --- a/src/wuttaweb/views/alembic.py +++ b/src/wuttaweb/views/alembic.py @@ -44,19 +44,23 @@ from webhelpers2.html import tags, HTML from wuttaweb.views import View, MasterView from wuttaweb.forms import widgets +from wuttaweb.forms.schema import WuttaDateTime log = logging.getLogger(__name__) -def normalize_revision(config, rev): # pylint: disable=missing-function-docstring +def normalize_revision( + config, rev, json_safe=False +): # pylint: disable=missing-function-docstring app = config.get_app() created = None if match := re.search(r"Create Date: (\d{4}-\d{2}-\d{2}[\d:\. ]+\d)", rev.longdoc): created = datetime.datetime.fromisoformat(match.group(1)) created = app.localtime(created, from_utc=False) - created = app.render_datetime(created) + if json_safe: + created = app.render_datetime(created) return { "revision": rev.revision, @@ -92,7 +96,7 @@ class AlembicDashboardView(View): current_heads = context.get_current_heads() def normalize(rev): - normal = normalize_revision(self.config, rev) + normal = normalize_revision(self.config, rev, json_safe=True) normal["is_current"] = rev.revision in current_heads normal["revision"] = tags.link_to( @@ -318,6 +322,9 @@ class AlembicMigrationView(MasterView): # pylint: disable=abstract-method g.set_label("is_head", "Head") g.set_renderer("is_head", self.render_is_head) + # created + g.set_renderer("created", "datetime") + def render_is_head( # pylint: disable=missing-function-docstring,unused-argument self, rev, field, value ): @@ -369,6 +376,10 @@ class AlembicMigrationView(MasterView): # pylint: disable=abstract-method # path f.set_widget("path", widgets.CopyableTextWidget()) + # created + f.set_node("created", WuttaDateTime()) + f.set_widget("created", widgets.WuttaDateTimeWidget(self.request)) + def make_create_form(self): # pylint: disable=empty-docstring """ """ alembic = make_alembic_config(self.config)