瀏覽代碼

Merge pull request #16502 from gavindsouza/nestedset-fixes

fix(nestedset): Fix rgt value via update_add_node
version-14
gavin 3 年之前
committed by GitHub
父節點
當前提交
62ca3b6edb
沒有發現已知的金鑰在資料庫的簽署中 GPG Key ID: 4AEE18F83AFDEB23
共有 2 個文件被更改,包括 7 次插入6 次删除
  1. +1
    -0
      frappe/database/database.py
  2. +6
    -6
      frappe/utils/nestedset.py

+ 1
- 0
frappe/database/database.py 查看文件

@@ -115,6 +115,7 @@ class Database(object):
{"name": "a%", "owner":"test@example.com"})

"""
debug = debug or getattr(self, "debug", False)
query = str(query)
if not run:
return query


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

@@ -63,9 +63,8 @@ def update_add_node(doc, parent, parent_field):
left, right = frappe.db.get_value(doctype, {"name": parent}, ["lft", "rgt"], for_update=True)
validate_loop(doc.doctype, doc.name, left, right)
else: # root

right = frappe.qb.from_(Table).select(
Coalesce(Max(Table.rgt), 0)
Coalesce(Max(Table.rgt), 0) + 1
).where(Coalesce(Table[parent_field], "") == "").run(pluck=True)[0]

right = right or 1
@@ -110,14 +109,15 @@ def update_move_node(doc: Document, parent_field: str):
).run()

if parent:
# re-query value due to computation above
new_parent = frappe.qb.from_(Table).select(
Table.lft, Table.rgt
).where(Table.name == parent).for_update().run(as_dict=True)[0]

# set parent lft, rgt
frappe.qb.update(Table).set(Table.rgt, Table.rgt + diff).where(Table.name == parent).run()

# shift right at new parent
frappe.qb.update(Table).set(Table.lft, Table.lft + diff).set(Table.rgt, Table.rgt + diff).where(
(Table.lft >= new_parent.lft) & (Table.lft <= new_parent.rgt)
).run()

frappe.qb.update(Table).set(Table.lft, Table.lft + diff).set(Table.rgt, Table.rgt + diff).where(
Table.lft > new_parent.rgt
).run()


Loading…
取消
儲存