54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Import Address Templates from ./templates directory."""
 | |
| import os
 | |
| import frappe
 | |
| 
 | |
| 
 | |
| def set_up_address_templates(default_country=None):
 | |
| 	for country, html in get_address_templates():
 | |
| 		is_default = 1 if country == default_country else 0
 | |
| 		update_address_template(country, html, is_default)
 | |
| 
 | |
| 
 | |
| def get_address_templates():
 | |
| 	"""
 | |
| 	Return country and path for all HTML files in this directory.
 | |
| 
 | |
| 	Returns a list of dicts.
 | |
| 	"""
 | |
| 
 | |
| 	def country(file_name):
 | |
| 		"""Convert 'united_states.html' to 'United States'."""
 | |
| 		suffix_pos = file_name.find(".html")
 | |
| 		country_snake_case = file_name[:suffix_pos]
 | |
| 		country_title_case = " ".join(country_snake_case.split("_")).title()
 | |
| 		return country_title_case
 | |
| 
 | |
| 	def get_file_content(file_name):
 | |
| 		"""Convert 'united_states.html' to '/path/to/united_states.html'."""
 | |
| 		full_path = os.path.join(template_dir, file_name)
 | |
| 		with open(full_path, "r") as f:
 | |
| 			content = f.read()
 | |
| 		return content
 | |
| 
 | |
| 	dir_name = os.path.dirname(__file__)
 | |
| 	template_dir = os.path.join(dir_name, "templates")
 | |
| 	file_names = os.listdir(template_dir)
 | |
| 	html_files = [file for file in file_names if file.endswith(".html")]
 | |
| 
 | |
| 	return [(country(file_name), get_file_content(file_name)) for file_name in html_files]
 | |
| 
 | |
| 
 | |
| def update_address_template(country, html, is_default=0):
 | |
| 	"""Update existing Address Template or create a new one."""
 | |
| 	if not frappe.db.exists("Country", country):
 | |
| 		frappe.log_error("Country {} for regional Address Template does not exist.".format(country))
 | |
| 		return
 | |
| 
 | |
| 	if frappe.db.exists("Address Template", country):
 | |
| 		frappe.db.set_value("Address Template", country, "template", html)
 | |
| 		frappe.db.set_value("Address Template", country, "is_default", is_default)
 | |
| 	else:
 | |
| 		frappe.get_doc(
 | |
| 			dict(doctype="Address Template", country=country, is_default=is_default, template=html)
 | |
| 		).insert()
 |