diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py index ac19690b5fd..3d03d9d4569 100644 --- a/erpnext/accounts/doctype/account/account.py +++ b/erpnext/accounts/doctype/account/account.py @@ -273,4 +273,8 @@ def update_account_number(name, account_number): def get_name_with_number(new_account, account_number): if account_number and not new_account[0].isdigit(): new_account = account_number + " - " + new_account - return new_account \ No newline at end of file + return new_account + + +def on_doctype_update(): + frappe.db.add_index("Account", ["lft", "rgt"]) \ No newline at end of file diff --git a/erpnext/accounts/doctype/cost_center/cost_center.py b/erpnext/accounts/doctype/cost_center/cost_center.py index 55388a5d106..fe1e9076de4 100644 --- a/erpnext/accounts/doctype/cost_center/cost_center.py +++ b/erpnext/accounts/doctype/cost_center/cost_center.py @@ -64,3 +64,6 @@ class CostCenter(NestedSet): if not merge: frappe.db.set_value("Cost Center", newdn, "cost_center_name", " - ".join(newdn.split(" - ")[:-1])) + +def on_doctype_update(): + frappe.db.add_index("Cost Center", ["lft", "rgt"]) \ No newline at end of file diff --git a/erpnext/agriculture/doctype/land_unit/land_unit.py b/erpnext/agriculture/doctype/land_unit/land_unit.py index 42a9b33954c..f577eca5f30 100644 --- a/erpnext/agriculture/doctype/land_unit/land_unit.py +++ b/erpnext/agriculture/doctype/land_unit/land_unit.py @@ -177,4 +177,7 @@ def get_children(doctype, parent, is_root=False): # return nodes return land_units - \ No newline at end of file + + +def on_doctype_update(): + frappe.db.add_index("Land Unit", ["lft", "rgt"]) \ No newline at end of file diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py index bb12231f33c..864d435ed15 100755 --- a/erpnext/hr/doctype/employee/employee.py +++ b/erpnext/hr/doctype/employee/employee.py @@ -329,4 +329,8 @@ def get_children(doctype, parent=None, company=None, is_root=False, is_tree=Fals .format(company=company, condition=condition), as_dict=1) # return employee - return employee \ No newline at end of file + return employee + + +def on_doctype_update(): + frappe.db.add_index("Employee", ["lft", "rgt"]) \ No newline at end of file diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 92b33385ec9..f82904178a6 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -515,3 +515,4 @@ erpnext.patches.v10_0.update_hub_connector_domain erpnext.patches.v10_0.set_student_party_type erpnext.patches.v10_0.update_project_in_sle erpnext.patches.v10_0.fix_reserved_qty_for_sub_contract +erpnext.patches.v11_0.add_index_on_nestedset_doctypes \ No newline at end of file diff --git a/erpnext/patches/v11_0/add_index_on_nestedset_doctypes.py b/erpnext/patches/v11_0/add_index_on_nestedset_doctypes.py new file mode 100644 index 00000000000..fde18914bce --- /dev/null +++ b/erpnext/patches/v11_0/add_index_on_nestedset_doctypes.py @@ -0,0 +1,8 @@ +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +import frappe + +def execute(): + for dt in ("Account", "Cost Center", "File", "Employee", "Land Unit", "Task", "Customer Group", "Sales Person", "Territory"): + frappe.get_doc("DocType", dt).run_module_method("on_doctype_update") \ No newline at end of file diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py index e418845f3f0..fcaa344dfa7 100644 --- a/erpnext/projects/doctype/task/task.py +++ b/erpnext/projects/doctype/task/task.py @@ -236,3 +236,6 @@ def add_multiple_tasks(data, parent): new_doc['subject'] = d.get("subject") new_task = frappe.get_doc(new_doc) new_task.insert() + +def on_doctype_update(): + frappe.db.add_index("Task", ["lft", "rgt"]) \ No newline at end of file diff --git a/erpnext/setup/doctype/customer_group/customer_group.py b/erpnext/setup/doctype/customer_group/customer_group.py index 7472c51affd..388ddcaadab 100644 --- a/erpnext/setup/doctype/customer_group/customer_group.py +++ b/erpnext/setup/doctype/customer_group/customer_group.py @@ -25,3 +25,6 @@ def get_parent_customer_groups(customer_group): return frappe.db.sql("""select name from `tabCustomer Group` where lft <= %s and rgt >= %s order by lft asc""", (lft, rgt), as_dict=True) + +def on_doctype_update(): + frappe.db.add_index("Customer Group", ["lft", "rgt"]) \ No newline at end of file diff --git a/erpnext/setup/doctype/sales_person/sales_person.py b/erpnext/setup/doctype/sales_person/sales_person.py index 8542c88546a..816ee842e36 100644 --- a/erpnext/setup/doctype/sales_person/sales_person.py +++ b/erpnext/setup/doctype/sales_person/sales_person.py @@ -33,3 +33,6 @@ class SalesPerson(NestedSet): if sales_person and sales_person != self.name: frappe.throw(_("Another Sales Person {0} exists with the same Employee id").format(sales_person)) + +def on_doctype_update(): + frappe.db.add_index("Sales Person", ["lft", "rgt"]) \ No newline at end of file diff --git a/erpnext/setup/doctype/territory/territory.py b/erpnext/setup/doctype/territory/territory.py index de8da350c20..095bd1c179c 100644 --- a/erpnext/setup/doctype/territory/territory.py +++ b/erpnext/setup/doctype/territory/territory.py @@ -22,3 +22,5 @@ class Territory(NestedSet): super(Territory, self).on_update() self.validate_one_root() +def on_doctype_update(): + frappe.db.add_index("Territory", ["lft", "rgt"]) \ No newline at end of file