3
0
Fork 0

fix: add render_date(), render_datetime() methods for app handler

This commit is contained in:
Lance Edgar 2024-12-12 10:00:18 -06:00
parent c1108e3102
commit 80a983f812
2 changed files with 58 additions and 0 deletions

View file

@ -668,6 +668,51 @@ class AppHandler:
return False
##############################
# common value renderers
##############################
display_format_date = '%Y-%m-%d'
"""
Format string to use when displaying :class:`python:datetime.date`
objects. See also :meth:`render_date()`.
"""
display_format_datetime = '%Y-%m-%d %H:%M%z'
"""
Format string to use when displaying
:class:`python:datetime.datetime` objects. See also
:meth:`render_datetime()`.
"""
def render_date(self, value):
"""
Return a human-friendly display string for the given date.
Uses :attr:`display_format_date` to render the value.
:param value: A :class:`python:datetime.date` instance (or
``None``).
:returns: Display string, or ``None``.
"""
if value is not None:
return value.strftime(self.display_format_date)
def render_datetime(self, value):
"""
Return a human-friendly display string for the given datetime.
Uses :attr:`display_format_datetime` to render the value.
:param value: A :class:`python:datetime.datetime` instance (or
``None``).
:returns: Display string, or ``None``.
"""
if value is not None:
return value.strftime(self.display_format_datetime)
##############################
# getters for other handlers
##############################

View file

@ -1,5 +1,6 @@
# -*- coding: utf-8; -*-
import datetime
import os
import shutil
import sys
@ -421,6 +422,18 @@ app_title = WuttaTest
session = self.app.get_session(user)
self.assertIs(session, mysession)
def test_render_date(self):
self.assertIsNone(self.app.render_date(None))
dt = datetime.date(2024, 12, 11)
self.assertEqual(self.app.render_date(dt), '2024-12-11')
def test_render_datetime(self):
self.assertIsNone(self.app.render_datetime(None))
dt = datetime.datetime(2024, 12, 11, 8, 30, tzinfo=datetime.timezone.utc)
self.assertEqual(self.app.render_datetime(dt), '2024-12-11 08:30+0000')
def test_get_person(self):
people = self.app.get_people_handler()
with patch.object(people, 'get_person') as get_person: