浏览代码

perf: dont query for impossible child/ancestor (#16577)

Also avoid manual plucking
version-14
Ankush Menat 3 年前
committed by GitHub
父节点
当前提交
3fb1eaf13b
找不到此签名对应的密钥 GPG 密钥 ID: 4AEE18F83AFDEB23
共有 1 个文件被更改,包括 20 次插入25 次删除
  1. +20
    -25
      frappe/utils/nestedset.py

+ 20
- 25
frappe/utils/nestedset.py 查看文件

@@ -352,34 +352,29 @@ def get_ancestors_of(doctype, name, order_by="lft desc", limit=None):
"""Get ancestor elements of a DocType with a tree structure"""
lft, rgt = frappe.db.get_value(doctype, name, ["lft", "rgt"])

result = [
d["name"]
for d in frappe.db.get_all(
doctype,
{"lft": ["<", lft], "rgt": [">", rgt]},
"name",
order_by=order_by,
limit_page_length=limit,
)
]

return result or []
return frappe.get_all(
doctype,
{"lft": ["<", lft], "rgt": [">", rgt]},
"name",
order_by=order_by,
limit_page_length=limit,
pluck="name",
)


def get_descendants_of(doctype, name, order_by="lft desc", limit=None, ignore_permissions=False):
"""Return descendants of the current record"""
lft, rgt = frappe.db.get_value(doctype, name, ["lft", "rgt"])

result = [
d["name"]
for d in frappe.db.get_list(
doctype,
{"lft": [">", lft], "rgt": ["<", rgt]},
"name",
order_by=order_by,
limit_page_length=limit,
ignore_permissions=ignore_permissions,
)
]

return result or []
if rgt - lft <= 1:
return []

return frappe.get_list(
doctype,
{"lft": [">", lft], "rgt": ["<", rgt]},
"name",
order_by=order_by,
limit_page_length=limit,
ignore_permissions=ignore_permissions,
pluck="name",
)

正在加载...
取消
保存