blob: fd1dfa726b67478d7b5c120dd0b01c31dcc4170d [file] [log] [blame]
Raffael Meyer9aae0c22020-04-08 05:26:57 +02001"""Import Address Templates from ./templates directory."""
2import os
3import frappe
4
Ankush Menat494bd9e2022-03-28 18:52:46 +05305
Raffael Meyer9aae0c22020-04-08 05:26:57 +02006def set_up_address_templates(default_country=None):
7 for country, html in get_address_templates():
8 is_default = 1 if country == default_country else 0
9 update_address_template(country, html, is_default)
10
Ankush Menat494bd9e2022-03-28 18:52:46 +053011
Raffael Meyer9aae0c22020-04-08 05:26:57 +020012def get_address_templates():
13 """
14 Return country and path for all HTML files in this directory.
Ankush Menat4551d7d2021-08-19 13:41:10 +053015
Raffael Meyer9aae0c22020-04-08 05:26:57 +020016 Returns a list of dicts.
17 """
Ankush Menat494bd9e2022-03-28 18:52:46 +053018
Raffael Meyer9aae0c22020-04-08 05:26:57 +020019 def country(file_name):
20 """Convert 'united_states.html' to 'United States'."""
21 suffix_pos = file_name.find(".html")
22 country_snake_case = file_name[:suffix_pos]
23 country_title_case = " ".join(country_snake_case.split("_")).title()
24 return country_title_case
25
26 def get_file_content(file_name):
27 """Convert 'united_states.html' to '/path/to/united_states.html'."""
28 full_path = os.path.join(template_dir, file_name)
29 with open(full_path, "r") as f:
30 content = f.read()
31 return content
32
33 dir_name = os.path.dirname(__file__)
34 template_dir = os.path.join(dir_name, "templates")
35 file_names = os.listdir(template_dir)
36 html_files = [file for file in file_names if file.endswith(".html")]
37
38 return [(country(file_name), get_file_content(file_name)) for file_name in html_files]
39
40
41def update_address_template(country, html, is_default=0):
42 """Update existing Address Template or create a new one."""
43 if not frappe.db.exists("Country", country):
44 frappe.log_error("Country {} for regional Address Template does not exist.".format(country))
45 return
46
47 if frappe.db.exists("Address Template", country):
48 frappe.db.set_value("Address Template", country, "template", html)
49 frappe.db.set_value("Address Template", country, "is_default", is_default)
50 else:
Ankush Menat494bd9e2022-03-28 18:52:46 +053051 frappe.get_doc(
52 dict(doctype="Address Template", country=country, is_default=is_default, template=html)
53 ).insert()