|
123456789101112131415161718192021222324252627282930313233343536 |
- # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
- # MIT License. See license.txt
-
-
- import frappe
- from frappe import _
-
-
- @frappe.whitelist()
- def get_all_nodes(method, company):
- """Recursively gets all data from nodes"""
- method = frappe.get_attr(method)
-
- if method not in frappe.whitelisted:
- frappe.throw(_("Not Permitted"), frappe.PermissionError)
-
- root_nodes = method(company=company)
- result = []
- nodes_to_expand = []
-
- for root in root_nodes:
- data = method(root.id, company)
- result.append(dict(parent=root.id, parent_name=root.name, data=data))
- nodes_to_expand.extend(
- [{"id": d.get("id"), "name": d.get("name")} for d in data if d.get("expandable")]
- )
-
- while nodes_to_expand:
- parent = nodes_to_expand.pop(0)
- data = method(parent.get("id"), company)
- result.append(dict(parent=parent.get("id"), parent_name=parent.get("name"), data=data))
- for d in data:
- if d.get("expandable"):
- nodes_to_expand.append({"id": d.get("id"), "name": d.get("name")})
-
- return result
|