Преглед изворни кода

Merge pull request #12270 from deepeshgarg007/rebuild_tree

feat: Provision to rebuild NSM from treeview
version-14
mergify[bot] пре 4 година
committed by GitHub
родитељ
комит
340446c313
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 измењених фајлова са 35 додато и 1 уклоњено
  1. +29
    -1
      frappe/public/js/frappe/views/treeview.js
  2. +6
    -0
      frappe/utils/nestedset.py

+ 29
- 1
frappe/public/js/frappe/views/treeview.js Прегледај датотеку

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


+ 6
- 0
frappe/utils/nestedset.py Прегледај датотеку

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



Loading…
Откажи
Сачувај