瀏覽代碼

commit after every 100 in rebuild_tree

version-14
Nabin Hait 14 年之前
父節點
當前提交
10470a66b7
共有 1 個檔案被更改,包括 10 行新增3 行删除
  1. +10
    -3
      cgi-bin/webnotes/utils/nestedset.py

+ 10
- 3
cgi-bin/webnotes/utils/nestedset.py 查看文件

@@ -37,19 +37,26 @@ def rebuild_tree(doctype, parent_field):
for r in result:
right = rebuild_node(doctype, r[0], right, parent_field)
def rebuild_node(doctype, parent, left, parent_field):
def rebuild_node(doctype, parent, left, parent_field, cnt = 0):
# the right value of this node is the left value + 1
right = left+1
right = left+1

# get all children of this node
result = webnotes.conn.sql("SELECT name FROM `tab%s` WHERE `%s`='%s'" % (doctype, parent_field, parent))
for r in result:
right = rebuild_node(doctype, r[0], right, parent_field)
right = rebuild_node(doctype, r[0], right, parent_field, cnt)

# we've got the left value, and now that we've processed
# the children of this node we also know the right value
webnotes.conn.sql('UPDATE `tab%s` SET lft=%s, rgt=%s WHERE name="%s"' % (doctype,left,right,parent))

# commit after every 100
cnt += 1
if cnt % 100 == 0:
cnt = 0
webnotes.conn.sql("commit")
webnotes.conn.sql("start transaction")

#return the right value of this node + 1
return right+1


Loading…
取消
儲存