Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 1 | """Import Address Templates from ./templates directory.""" |
| 2 | import os |
| 3 | import frappe |
| 4 | |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 5 | |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 6 | def 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 Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 11 | |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 12 | def get_address_templates(): |
| 13 | """ |
| 14 | Return country and path for all HTML files in this directory. |
Ankush Menat | 4551d7d | 2021-08-19 13:41:10 +0530 | [diff] [blame] | 15 | |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 16 | Returns a list of dicts. |
| 17 | """ |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 18 | |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 19 | 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 | |
| 41 | def 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 Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 51 | frappe.get_doc( |
| 52 | dict(doctype="Address Template", country=country, is_default=is_default, template=html) |
| 53 | ).insert() |