brotherton-erpnext/erpnext/regional/address_template/setup.py
2021-08-19 13:43:28 +05:30

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()