Merge pull request #12270 from deepeshgarg007/rebuild_tree

feat: Provision to rebuild NSM from treeview
This commit is contained in:
mergify[bot] 2021-02-24 11:24:51 +00:00 committed by GitHub
commit 340446c313
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 1 deletions

View file

@ -172,6 +172,23 @@ frappe.views.TreeView = Class.extend({
this.post_render();
},
rebuild_tree: function() {
let me = this;
frappe.call({
"method": "frappe.utils.nestedset.rebuild_tree",
"args": {
'doctype': me.doctype,
'parent_field': "parent_"+me.doctype.toLowerCase().replace(/ /g, '_'),
},
"callback": function(r) {
if (!r.exc) {
me.make_tree();
}
}
});
},
post_render: function() {
var me = this;
me.opts.post_render && me.opts.post_render(me);
@ -368,7 +385,7 @@ frappe.views.TreeView = Class.extend({
}, "add");
}
},
set_menu_item: function(){
set_menu_item: function() {
var me = this;
this.menu_items = [
@ -393,6 +410,17 @@ frappe.views.TreeView = Class.extend({
},
];
if (frappe.user.has_role('System Manager')) {
this.menu_items.push(
{
label: __('Rebuild Tree'),
action: function() {
me.rebuild_tree();
}
}
);
}
if (me.opts.menu_items) {
me.menu_items.push.apply(me.menu_items, me.opts.menu_items)
}

View file

@ -137,10 +137,16 @@ def update_move_node(doc, parent_field):
frappe.db.sql("""update `tab{0}` set lft = -lft + %s, rgt = -rgt + %s, modified=%s
where lft < 0""".format(doc.doctype), (new_diff, new_diff, n))
@frappe.whitelist()
def rebuild_tree(doctype, parent_field):
"""
call rebuild_node for all root nodes
"""
# Check for perm if called from client-side
if frappe.request and frappe.local.form_dict.cmd == 'rebuild_tree':
frappe.only_for('System Manager')
# get all roots
frappe.db.auto_commit_on_many_writes = 1