瀏覽代碼

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",
)

Loading…
取消
儲存