Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 1 | """Import Address Templates from ./templates directory.""" |
| 2 | import os |
Akhil Narang | 3effaf2 | 2024-03-27 11:37:26 +0530 | [diff] [blame] | 3 | |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 4 | import frappe |
| 5 | |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 6 | |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 7 | def 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 Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 12 | |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 13 | def get_address_templates(): |
| 14 | """ |
| 15 | Return country and path for all HTML files in this directory. |
Ankush Menat | 4551d7d | 2021-08-19 13:41:10 +0530 | [diff] [blame] | 16 | |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 17 | Returns a list of dicts. |
| 18 | """ |
Ankush Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 19 | |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 20 | 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 Narang | 3effaf2 | 2024-03-27 11:37:26 +0530 | [diff] [blame] | 30 | with open(full_path) as f: |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 31 | 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 | |
| 42 | def 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 Narang | 3effaf2 | 2024-03-27 11:37:26 +0530 | [diff] [blame] | 45 | frappe.log_error(f"Country {country} for regional Address Template does not exist.") |
Raffael Meyer | 9aae0c2 | 2020-04-08 05:26:57 +0200 | [diff] [blame] | 46 | 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 Menat | 494bd9e | 2022-03-28 18:52:46 +0530 | [diff] [blame] | 52 | frappe.get_doc( |
| 53 | dict(doctype="Address Template", country=country, is_default=is_default, template=html) |
| 54 | ).insert() |