blob: 684c76620a49b49c717c08a201c6230843b1daa8 [file] [log] [blame]
Raffael Meyer9aae0c22020-04-08 05:26:57 +02001"""Import Address Templates from ./templates directory."""
2import os
Akhil Narang3effaf22024-03-27 11:37:26 +05303
Raffael Meyer9aae0c22020-04-08 05:26:57 +02004import frappe
5
Ankush Menat494bd9e2022-03-28 18:52:46 +05306
Raffael Meyer9aae0c22020-04-08 05:26:57 +02007def set_up_address_templates(default_country=None):
8 for country, html in get_address_templates():
9 is_default = 1 if country == default_country else 0
10 update_address_template(country, html, is_default)
11
Ankush Menat494bd9e2022-03-28 18:52:46 +053012
Raffael Meyer9aae0c22020-04-08 05:26:57 +020013def get_address_templates():
14 """
15 Return country and path for all HTML files in this directory.
Ankush Menat4551d7d2021-08-19 13:41:10 +053016
Raffael Meyer9aae0c22020-04-08 05:26:57 +020017 Returns a list of dicts.
18 """
Ankush Menat494bd9e2022-03-28 18:52:46 +053019
Raffael Meyer9aae0c22020-04-08 05:26:57 +020020 def country(file_name):
21 """Convert 'united_states.html' to 'United States'."""
22 suffix_pos = file_name.find(".html")
23 country_snake_case = file_name[:suffix_pos]
24 country_title_case = " ".join(country_snake_case.split("_")).title()
25 return country_title_case
26
27 def get_file_content(file_name):
28 """Convert 'united_states.html' to '/path/to/united_states.html'."""
29 full_path = os.path.join(template_dir, file_name)
Akhil Narang3effaf22024-03-27 11:37:26 +053030 with open(full_path) as f:
Raffael Meyer9aae0c22020-04-08 05:26:57 +020031 content = f.read()
32 return content
33
34 dir_name = os.path.dirname(__file__)
35 template_dir = os.path.join(dir_name, "templates")
36 file_names = os.listdir(template_dir)
37 html_files = [file for file in file_names if file.endswith(".html")]
38
39 return [(country(file_name), get_file_content(file_name)) for file_name in html_files]
40
41
42def update_address_template(country, html, is_default=0):
43 """Update existing Address Template or create a new one."""
44 if not frappe.db.exists("Country", country):
Akhil Narang3effaf22024-03-27 11:37:26 +053045 frappe.log_error(f"Country {country} for regional Address Template does not exist.")
Raffael Meyer9aae0c22020-04-08 05:26:57 +020046 return
47
48 if frappe.db.exists("Address Template", country):
49 frappe.db.set_value("Address Template", country, "template", html)
50 frappe.db.set_value("Address Template", country, "is_default", is_default)
51 else:
Ankush Menat494bd9e2022-03-28 18:52:46 +053052 frappe.get_doc(
53 dict(doctype="Address Template", country=country, is_default=is_default, template=html)
54 ).insert()