From 4888d75e72fe53d98d62e734f3c6f0abe8edd0e3 Mon Sep 17 00:00:00 2001 From: barredterra <14891507+barredterra@users.noreply.github.com> Date: Fri, 14 Jul 2023 11:59:45 +0200 Subject: [PATCH] feat(Holiday List): display localized country name --- .../setup/doctype/holiday_list/holiday_list.js | 10 +++++++--- .../setup/doctype/holiday_list/holiday_list.json | 2 +- .../setup/doctype/holiday_list/holiday_list.py | 16 +++++++++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.js b/erpnext/setup/doctype/holiday_list/holiday_list.js index dc4cd9fd112..8df49e15819 100644 --- a/erpnext/setup/doctype/holiday_list/holiday_list.js +++ b/erpnext/setup/doctype/holiday_list/holiday_list.js @@ -8,8 +8,12 @@ frappe.ui.form.on("Holiday List", { } frm.call("get_supported_countries").then(r => { - frm.subdivisions_by_country = r.message; - frm.set_df_property("country", "options", Object.keys(r.message)); + frm.subdivisions_by_country = r.message.subdivisions_by_country; + frm.set_df_property( + "country", + "options", + r.message.countries.sort((a, b) => a.label.localeCompare(b.label)) + ); if (frm.doc.country) { frm.trigger("set_subdivisions"); @@ -31,7 +35,7 @@ frappe.ui.form.on("Holiday List", { }, set_subdivisions: function(frm) { const subdivisions = frm.subdivisions_by_country[frm.doc.country]; - if (subdivisions.length > 0) { + if (subdivisions && subdivisions.length > 0) { frm.set_df_property("subdivision", "options", frm.subdivisions_by_country[frm.doc.country]); frm.set_df_property("subdivision", "hidden", 0); } else { diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.json b/erpnext/setup/doctype/holiday_list/holiday_list.json index 2d24db28c8b..e9b848fdf54 100644 --- a/erpnext/setup/doctype/holiday_list/holiday_list.json +++ b/erpnext/setup/doctype/holiday_list/holiday_list.json @@ -141,7 +141,7 @@ "icon": "fa fa-calendar", "idx": 1, "links": [], - "modified": "2023-07-13 13:12:32.082690", + "modified": "2023-07-14 11:29:12.537263", "modified_by": "Administrator", "module": "Setup", "name": "Holiday List", diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.py b/erpnext/setup/doctype/holiday_list/holiday_list.py index 1aec032a478..0b26a62ce6e 100644 --- a/erpnext/setup/doctype/holiday_list/holiday_list.py +++ b/erpnext/setup/doctype/holiday_list/holiday_list.py @@ -6,6 +6,7 @@ import json from datetime import date import frappe +from babel import Locale from frappe import _, throw from frappe.model.document import Document from frappe.utils import formatdate, getdate, today @@ -39,7 +40,15 @@ class HolidayList(Document): @frappe.whitelist() def get_supported_countries(self): - return list_supported_countries() + subdivisions_by_country = list_supported_countries() + countries = [ + {"value": country, "label": local_country_name(country)} + for country in subdivisions_by_country.keys() + ] + return { + "countries": countries, + "subdivisions_by_country": subdivisions_by_country, + } @frappe.whitelist() def get_local_holidays(self): @@ -157,3 +166,8 @@ def is_holiday(holiday_list, date=None): ) else: return False + + +def local_country_name(country_code: str) -> str: + """Return the localized country name for the given country code.""" + return Locale.parse(frappe.local.lang).territories.get(country_code, country_code)