diff --git a/core/page/data_import_tool/data_import_tool.js b/core/page/data_import_tool/data_import_tool.js index 99c88da6c5..0ea9336e3a 100644 --- a/core/page/data_import_tool/data_import_tool.js +++ b/core/page/data_import_tool/data_import_tool.js @@ -49,9 +49,20 @@ wn.pages['data-import-tool'].onload = function(wrapper) { method:'core.page.data_import_tool.data_import_tool.get_doctypes', callback: function(r) { $select.add_options(['Select...'].concat(r.message)); + wrapper.doctypes = r.message; + wrapper.set_route_options(); } }); + wrapper.set_route_options = function() { + if(wn.route_options + && wn.route_options.doctype + && in_list(wrapper.doctypes, wn.route_options.doctype)) { + $select.val(wn.route_options.doctype).change(); + wn.route_options = null; + } + } + // load options $select.change(function() { var val = $(this).val() @@ -93,53 +104,53 @@ wn.pages['data-import-tool'].onload = function(wrapper) { } }); + write_messages = function(r) { + $(wrapper).find(".dit-progress-area").toggle(false); + $("#dit-output").empty(); + + $.each(r.messages, function(i, v) { + var $p = $('

').html(v).appendTo('#dit-output'); + if(v.substr(0,5)=='Error') { + $p.css('color', 'red'); + } else if(v.substr(0,8)=='Inserted') { + $p.css('color', 'green'); + } else if(v.substr(0,7)=='Updated') { + $p.css('color', 'green'); + } else if(v.substr(0,5)=='Valid') { + $p.css('color', '#777'); + } + }); + } + // upload wn.upload.make({ parent: $('#dit-upload-area'), args: { method: 'core.page.data_import_tool.data_import_tool.upload' }, - callback: function(r) { - $(wrapper).find(".dit-progress-area").toggle(false); - - if(!r.messages) r.messages = []; - - // clear output area - $("#dit-output").empty(); - - // replace links if error has occured - if(r.exc || r.error) { - r.messages = $.map(r.messages, function(v) { - var msg = v.replace("Inserted", "Valid") - .replace("Updated", "Valid").split("<"); - if (msg.length > 1) { - v = msg[0] + (msg[1].split(">").slice(-1)[0]); - } else { - v = msg[0]; - } - return v; - }); - - r.messages = ["

Import Failed!

"] - .concat(r.messages) - } else { - r.messages = ["

Import Successful!

"]. - concat(r.messages) - } - - $.each(r.messages, function(i, v) { - var $p = $('

').html(v).appendTo('#dit-output'); - if(v.substr(0,5)=='Error') { - $p.css('color', 'red'); - } else if(v.substr(0,8)=='Inserted') { - $p.css('color', 'green'); - } else if(v.substr(0,7)=='Updated') { - $p.css('color', 'green'); - } else if(v.substr(0,5)=='Valid') { - $p.css('color', '#777'); + onerror: function(r) { + r.messages = $.map(r.message.messages, function(v) { + var msg = v.replace("Inserted", "Valid") + .replace("Updated", "Valid").split("<"); + if (msg.length > 1) { + v = msg[0] + (msg[1].split(">").slice(-1)[0]); + } else { + v = msg[0]; } + return v; }); + r.messages = ["

Import Failed!

"] + .concat(r.messages); + + write_messages(r); + }, + callback: function(r) { + // replace links if error has occured + r.messages = ["

Import Successful!

"]. + concat(r.messages) + + write_messages(r); } }); @@ -169,4 +180,8 @@ wn.pages['data-import-tool'].onload = function(wrapper) { $('#dit-output').empty(); $(wrapper).find(".dit-progress-area").toggle(true); }); +} + +wn.pages['data-import-tool'].onshow = function(wrapper) { + wrapper.set_route_options && wrapper.set_route_options(); } \ No newline at end of file diff --git a/core/page/data_import_tool/data_import_tool.py b/core/page/data_import_tool/data_import_tool.py index 8be83e8889..62916aeb1a 100644 --- a/core/page/data_import_tool/data_import_tool.py +++ b/core/page/data_import_tool/data_import_tool.py @@ -33,7 +33,11 @@ def get_template(): parenttype = webnotes.form_dict.get('parent_doctype') doctype_dl = webnotes.model.doctype.get(doctype) - tablecolumns = [f[0] for f in webnotes.conn.sql('desc `tab%s`' % doctype)] + + tablecolumns = filter(None, + [doctype_dl.get_field(f[0]) for f in webnotes.conn.sql('desc `tab%s`' % doctype)]) + + tablecolumns.sort(lambda a, b: a.idx - b.idx) def getinforow(docfield): """make info comment""" @@ -85,17 +89,15 @@ def get_template(): inforow = ['Info:', ''] columns = [key] - def append_row(t, mandatory): - docfield = doctype_dl.get_field(t) - + def append_row(docfield, mandatory): if docfield and ((mandatory and docfield.reqd) or not (mandatory or docfield.reqd)) \ - and (t not in ('parenttype', 'trash_reason')) and not docfield.hidden: - fieldrow.append(t) + and (docfield.fieldname not in ('parenttype', 'trash_reason')) and not docfield.hidden: + fieldrow.append(docfield.fieldname) labelrow.append(docfield.label) mandatoryrow.append(docfield.reqd and 'Yes' or 'No') typerow.append(docfield.fieldtype) inforow.append(getinforow(docfield)) - columns.append(t) + columns.append(docfield.fieldname) # get all mandatory fields for t in tablecolumns: @@ -213,6 +215,7 @@ def upload(): d['doctype'] = doctype try: + webnotes.message_log = [] check_record(d, parenttype, doctype_dl) if parenttype: # child doc @@ -233,7 +236,6 @@ def upload(): ret.append('Error for row (#%d) %s : %s' % (row_idx, len(row)>1 and row[1] or "", err_msg)) webnotes.errprint(webnotes.getTraceback()) - webnotes.message_log = [] ret, error = validate_parent(parent_list, parenttype, ret, error)