Merge pull request #16502 from gavindsouza/nestedset-fixes

fix(nestedset): Fix rgt value via update_add_node
This commit is contained in:
gavin 2022-04-04 16:00:56 +05:30 committed by GitHub
commit 62ca3b6edb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 6 deletions

View file

@ -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

View file

@ -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()