From b41083561ed1a931a35f0730bde0105c1c909452 Mon Sep 17 00:00:00 2001 From: vishnu Date: Sat, 17 Aug 2024 14:11:00 +0000 Subject: [PATCH 1/4] feat: Add get_month function to return current or specific month as a string --- frappe/utils/data.py | 49 +++++++++++++++++++++++++++++++++++++++ frappe/utils/safe_exec.py | 1 + 2 files changed, 50 insertions(+) diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 0281efca48..88cbb0ae0c 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -878,6 +878,55 @@ def get_weekday(datetime: DateTimeLikeObject | None = None) -> str: return weekdays[datetime.weekday()] +def get_months() -> dict[int, str]: + """Return a list of weekday names. + Return value: + months_dict = { + 1: "January", + 2: "February", + 3: "March", + 4: "April", + 5: "May", + 6: "June", + 7: "July", + 8: "August", + 9: "September", + 10: "October", + 11: "November", + 12: "December", + } + """ + return { + 1: "January", + 2: "February", + 3: "March", + 4: "April", + 5: "May", + 6: "June", + 7: "July", + 8: "August", + 9: "September", + 10: "October", + 11: "November", + 12: "December", + } + + +def get_month(datetime: DateTimeLikeObject | None = None) -> str: + """Return the month name (e.g. 'January') for the given datetime like object (datetime.date, datetime.datetime, string). + + If `datetime` argument is not provided, the current month name is returned. + """ + if not datetime: + datetime = now_datetime() + + if isinstance(datetime, str): + datetime = get_datetime(datetime) + + months = get_months() + return months[datetime.month] + + def get_timespan_date_range( timespan: TimespanOptions, ) -> tuple[datetime.datetime, datetime.datetime] | None: diff --git a/frappe/utils/safe_exec.py b/frappe/utils/safe_exec.py index ad1edad943..35885644e1 100644 --- a/frappe/utils/safe_exec.py +++ b/frappe/utils/safe_exec.py @@ -656,6 +656,7 @@ VALID_UTILS = ( "formatdate", "get_user_info_for_avatar", "get_abbr", + "get_month", ) From ace2122e92e7c19339b055e849578d765cd4080e Mon Sep 17 00:00:00 2001 From: vishnu Date: Wed, 21 Aug 2024 18:07:03 +0000 Subject: [PATCH 2/4] chore: removed extra functiion --- frappe/utils/data.py | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 88cbb0ae0c..700f8db60e 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -878,40 +878,6 @@ def get_weekday(datetime: DateTimeLikeObject | None = None) -> str: return weekdays[datetime.weekday()] -def get_months() -> dict[int, str]: - """Return a list of weekday names. - Return value: - months_dict = { - 1: "January", - 2: "February", - 3: "March", - 4: "April", - 5: "May", - 6: "June", - 7: "July", - 8: "August", - 9: "September", - 10: "October", - 11: "November", - 12: "December", - } - """ - return { - 1: "January", - 2: "February", - 3: "March", - 4: "April", - 5: "May", - 6: "June", - 7: "July", - 8: "August", - 9: "September", - 10: "October", - 11: "November", - 12: "December", - } - - def get_month(datetime: DateTimeLikeObject | None = None) -> str: """Return the month name (e.g. 'January') for the given datetime like object (datetime.date, datetime.datetime, string). From 5b73b8c20a498cc9d7cc8a00f42430946b295191 Mon Sep 17 00:00:00 2001 From: vishnu Date: Wed, 21 Aug 2024 18:28:34 +0000 Subject: [PATCH 3/4] chore: added calendar module --- frappe/utils/data.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 700f8db60e..54395795ba 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -16,6 +16,7 @@ from typing import Any, Literal, Optional, TypeVar from urllib.parse import parse_qsl, quote, urlencode, urljoin, urlparse, urlunparse import pytz +import calendar from click import secho from dateutil import parser from dateutil.parser import ParserError @@ -889,8 +890,7 @@ def get_month(datetime: DateTimeLikeObject | None = None) -> str: if isinstance(datetime, str): datetime = get_datetime(datetime) - months = get_months() - return months[datetime.month] + return calendar.month_name[datetime.month] def get_timespan_date_range( From 22042ae00bfc88d09363cfa00e464e401f876765 Mon Sep 17 00:00:00 2001 From: vishnu Date: Wed, 21 Aug 2024 18:49:48 +0000 Subject: [PATCH 4/4] chore: pre-commit --- frappe/utils/data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 54395795ba..8b35a1da5c 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -2,6 +2,7 @@ # License: MIT. See LICENSE import base64 +import calendar import datetime import hashlib import json @@ -16,7 +17,6 @@ from typing import Any, Literal, Optional, TypeVar from urllib.parse import parse_qsl, quote, urlencode, urljoin, urlparse, urlunparse import pytz -import calendar from click import secho from dateutil import parser from dateutil.parser import ParserError