3
0
Fork 0

fix: fix datetime handling for alembic migrations view

this should ensure the column sorting works, and adds normal rendering
for the form fields
This commit is contained in:
Lance Edgar 2026-03-14 16:29:06 -05:00
parent 16131cd256
commit 6c634303ae

View file

@ -44,18 +44,22 @@ from webhelpers2.html import tags, HTML
from wuttaweb.views import View, MasterView from wuttaweb.views import View, MasterView
from wuttaweb.forms import widgets from wuttaweb.forms import widgets
from wuttaweb.forms.schema import WuttaDateTime
log = logging.getLogger(__name__) 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() app = config.get_app()
created = None created = None
if match := re.search(r"Create Date: (\d{4}-\d{2}-\d{2}[\d:\. ]+\d)", rev.longdoc): 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 = datetime.datetime.fromisoformat(match.group(1))
created = app.localtime(created, from_utc=False) created = app.localtime(created, from_utc=False)
if json_safe:
created = app.render_datetime(created) created = app.render_datetime(created)
return { return {
@ -92,7 +96,7 @@ class AlembicDashboardView(View):
current_heads = context.get_current_heads() current_heads = context.get_current_heads()
def normalize(rev): 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["is_current"] = rev.revision in current_heads
normal["revision"] = tags.link_to( normal["revision"] = tags.link_to(
@ -318,6 +322,9 @@ class AlembicMigrationView(MasterView): # pylint: disable=abstract-method
g.set_label("is_head", "Head") g.set_label("is_head", "Head")
g.set_renderer("is_head", self.render_is_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 def render_is_head( # pylint: disable=missing-function-docstring,unused-argument
self, rev, field, value self, rev, field, value
): ):
@ -369,6 +376,10 @@ class AlembicMigrationView(MasterView): # pylint: disable=abstract-method
# path # path
f.set_widget("path", widgets.CopyableTextWidget()) 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 def make_create_form(self): # pylint: disable=empty-docstring
""" """ """ """
alembic = make_alembic_config(self.config) alembic = make_alembic_config(self.config)