From 17d6d81fb5ffa7051968986b5f807a369e24142d Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Thu, 20 Feb 2025 10:48:45 +0530 Subject: [PATCH] feat: mini pretty dates (#31331) Narrow format pretty dates for list views, works the same way as client side function. --- frappe/tests/test_utils.py | 3 ++- frappe/utils/data.py | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/frappe/tests/test_utils.py b/frappe/tests/test_utils.py index 105f0f3eed..899e0e7299 100644 --- a/frappe/tests/test_utils.py +++ b/frappe/tests/test_utils.py @@ -685,7 +685,6 @@ class TestDateUtils(IntegrationTestCase): def test_pretty_date(self): from frappe import _ - # differnt cases now = get_datetime() test_cases = { @@ -707,6 +706,8 @@ class TestDateUtils(IntegrationTestCase): for dt, exp_message in test_cases.items(): self.assertEqual(pretty_date(dt), exp_message) + self.assertEqual(pretty_date(add_to_date(now, days=-5), mini=True), "5d") + def test_date_from_timegrain(self): start_date = getdate("2021-01-01") diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 44aee027f1..06fbe28b44 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -1692,7 +1692,7 @@ def escape_html(text: str) -> str: return "".join(html_escape_table.get(c, c) for c in text) -def pretty_date(iso_datetime: datetime.datetime | str) -> str: +def pretty_date(iso_datetime: datetime.datetime | str, mini=False) -> str: """Return a localized string representation of the delta to the current system time. For example, "1 hour ago", "2 days ago", "in 5 seconds", etc. @@ -1706,7 +1706,12 @@ def pretty_date(iso_datetime: datetime.datetime | str) -> str: iso_datetime = get_datetime(iso_datetime) now_dt = now_datetime() locale = frappe.local.lang.replace("-", "_") if frappe.local.lang else None - return format_timedelta(iso_datetime - now_dt, add_direction=True, locale=locale) + return format_timedelta( + iso_datetime - now_dt, + add_direction=not mini, + locale=locale, + format="long" if not mini else "narrow", + ) def comma_or(some_list: list | tuple, add_quotes=True) -> str: