Преглед на файлове

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

Also avoid manual plucking
version-14
Ankush Menat преди 3 години
committed by GitHub
родител
ревизия
3fb1eaf13b
No known key found for this signature in database 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",
)

Зареждане…
Отказ
Запис