diff --git a/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py b/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py index 5402c4d65c8..40def49b32e 100644 --- a/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py +++ b/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py @@ -8,6 +8,7 @@ from functools import reduce import frappe from frappe import _ +from frappe.core.doctype.file.utils import find_file_by_url from frappe.desk.form.linked_with import get_linked_fields from frappe.model.document import Document from frappe.utils import cint, cstr @@ -58,6 +59,8 @@ def validate_columns(data): @frappe.whitelist() def validate_company(company: str): + frappe.has_permission("Chart of Accounts Importer", throw=True) + parent_company, allow_account_creation_against_child_company = frappe.get_cached_value( "Company", company, ["parent_company", "allow_account_creation_against_child_company"] ) @@ -110,7 +113,10 @@ def import_coa(file_name: str, company: str): def get_file(file_name): - file_doc = frappe.get_doc("File", {"file_url": file_name}) + file_doc = find_file_by_url(file_name) + if not file_doc: + raise frappe.PermissionError + parts = file_doc.get_extension() extension = parts[1] extension = extension.lstrip(".") @@ -179,6 +185,8 @@ def get_coa( ): """called by tree view (to fetch node's children)""" + frappe.has_permission("Chart of Accounts Importer", throw=True) + file_doc, extension = get_file(file_name) parent = None if parent == _("All Accounts") else parent @@ -326,6 +334,8 @@ def build_response_as_excel(writer): @frappe.whitelist() def download_template(file_type: str, template_type: str, company: str): + frappe.has_permission("Chart of Accounts Importer", throw=True) + writer = get_template(template_type, company) if file_type == "CSV": @@ -378,7 +388,6 @@ def get_sample_template(writer, company): return writer -@frappe.whitelist() def validate_accounts(file_doc: Document, extension: str): if extension == "csv": accounts = generate_data_from_csv(file_doc, as_dict=True)