Browse Source

Minor fix (#5663)

* minor nestedset fix

* set current node as selected node in tree
version-14
Zarrar 7 years ago
committed by Nabin Hait
parent
commit
2691b52375
2 changed files with 13 additions and 8 deletions
  1. +4
    -2
      frappe/public/js/frappe/ui/tree.js
  2. +9
    -6
      frappe/utils/nestedset.py

+ 4
- 2
frappe/public/js/frappe/ui/tree.js View File

@@ -149,12 +149,14 @@ frappe.ui.Tree = class {
if(!deep) {
frappe.run_serially([
() => {return this.get_nodes(value, is_root);},
(data_set) => { this.render_node_children(node, data_set); }
(data_set) => { this.render_node_children(node, data_set); },
() => { this.set_selected_node(node); }
]);
} else {
frappe.run_serially([
() => {return this.get_all_nodes(value, is_root);},
(data_list) => { this.render_children_of_all_nodes(data_list); }
(data_list) => { this.render_children_of_all_nodes(data_list); },
() => { this.set_selected_node(node); }
]);
}
}


+ 9
- 6
frappe/utils/nestedset.py View File

@@ -194,11 +194,7 @@ class NestedSet(Document):
frappe.throw(_("Root {0} cannot be deleted").format(_(self.doctype)))

# cannot delete non-empty group
has_children = frappe.db.sql("""select count(name) from `tab{doctype}`
where `{nsm_parent_field}`=%s""".format(doctype=self.doctype, nsm_parent_field=self.nsm_parent_field),
(self.name,))[0][0]
if has_children:
frappe.throw(_("Cannot delete {0} as it has child nodes").format(self.name), NestedSetChildExistsError)
self.validate_if_child_exists()

self.set(self.nsm_parent_field, "")

@@ -211,6 +207,13 @@ class NestedSet(Document):
else:
raise

def validate_if_child_exists(self):
has_children = frappe.db.sql("""select count(name) from `tab{doctype}`
where `{nsm_parent_field}`=%s""".format(doctype=self.doctype, nsm_parent_field=self.nsm_parent_field),
(self.name,))[0][0]
if has_children:
frappe.throw(_("Cannot delete {0} as it has child nodes").format(self.name), NestedSetChildExistsError)

def before_rename(self, olddn, newdn, merge=False, group_fname="is_group"):
if merge and hasattr(self, group_fname):
is_group = frappe.db.get_value(self.doctype, newdn, group_fname)
@@ -237,7 +240,7 @@ class NestedSet(Document):
frappe.throw(_("""Multiple root nodes not allowed."""), NestedSetMultipleRootsError)

def validate_ledger(self, group_identifier="is_group"):
if self.get(group_identifier) == "No":
if hasattr(self, group_identifier) and not bool(self.get(group_identifier)):
if frappe.db.sql("""select name from `tab{0}` where {1}=%s and docstatus!=2"""
.format(self.doctype, self.nsm_parent_field), (self.name)):
frappe.throw(_("{0} {1} cannot be a leaf node as it has children").format(_(self.doctype), self.name))


Loading…
Cancel
Save