diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 0281efca48..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 @@ -878,6 +879,20 @@ def get_weekday(datetime: DateTimeLikeObject | None = None) -> str: return weekdays[datetime.weekday()] +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) + + return calendar.month_name[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", )