From 7d5123dd54de78f0435f85ff954118b0ca7ccf19 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Mon, 19 Sep 2016 16:44:54 +0530 Subject: [PATCH] [fix] pull all madatory fields from meta while creatting new node in tree --- frappe/desk/treeview.py | 2 +- frappe/public/js/frappe/views/treeview.js | 42 +++++++++++++++++++---- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/frappe/desk/treeview.py b/frappe/desk/treeview.py index 0a06b7202b..fa2f3b65f5 100644 --- a/frappe/desk/treeview.py +++ b/frappe/desk/treeview.py @@ -26,7 +26,7 @@ def add_node(): doc = frappe.new_doc(doctype) doc.update({ - name_field: frappe.form_dict['name_field'], + name_field: frappe.form_dict[name_field], parent_field: frappe.form_dict['parent'], "is_group": frappe.form_dict['is_group'] }) diff --git a/frappe/public/js/frappe/views/treeview.js b/frappe/public/js/frappe/views/treeview.js index 459a293666..cd319daa06 100644 --- a/frappe/public/js/frappe/views/treeview.js +++ b/frappe/public/js/frappe/views/treeview.js @@ -7,7 +7,8 @@ frappe.views.TreeFactory = frappe.views.Factory.extend({ make: function(route) { frappe.model.with_doctype(route[1], function() { var options = { - doctype: route[1] + doctype: route[1], + meta: frappe.get_meta(route[1]) }; if (!frappe.treeview_settings[route[1]] && !frappe.meta.get_docfield(route[1], "is_group")) { @@ -166,7 +167,7 @@ frappe.views.TreeView = Class.extend({ return; } - this.prepare_fields() + this.prepare_fields(); // the dialog var d = new frappe.ui.Dialog({ @@ -174,7 +175,25 @@ frappe.views.TreeView = Class.extend({ fields: me.fields }) + me.args["parent_"+me.doctype.toLowerCase()] = me.args["parent"]; d.set_value("is_group", 0); + d.set_values(me.args); + + // set query to all link fields if company field exists + if (me.args["company"]) { + $.each(me.fields, function(i, field){ + if(field.fieldtype == "Link") { + d.fields_dict[field.fieldname].get_query = function() { + return { + filters:{ + "company": me.args["company"] + } + } + }; + } + }) + } + // create d.set_primary_action(__("Create New"), function() { var btn = this; @@ -215,15 +234,26 @@ frappe.views.TreeView = Class.extend({ var me = this; this.fields = [ - {fieldtype:'Data', fieldname: 'name_field', - label:__('New {0} Name',[__(me.doctype)]), reqd:true}, {fieldtype:'Check', fieldname:'is_group', label:__('Group Node'), description: __("Further nodes can be only created under 'Group' type nodes")} ] - if (me.opts.fields) { - me.fields = me.opts.fields; + if (this.opts.fields) { + this.fields = this.opts.fields; } + + var mandatory_fields = $.map(me.opts.meta.fields, + function(d) { return (d.reqd || d.bold && !d.read_only) ? d : null }); + + var opts_field_names = this.fields.map(function(d) { + return d.fieldname + }) + + mandatory_fields.map(function(d) { + if($.inArray(d.fieldname, opts_field_names) === -1) { + me.fields.push(d) + } + }) }, set_primary_action: function(){ var me = this;