[IMP]Improved code for required field should be selected and reload list view after successfully import data.

bzr revid: kch@tinyerp.com-20110906121146-p7z0gpa4bofneg2j
This commit is contained in:
Kunal Chavda (OpenERP) 2011-09-06 17:41:46 +05:30
parent 95f0fa26ee
commit 1127d2b3e3
2 changed files with 39 additions and 10 deletions

View File

@ -1331,11 +1331,17 @@ class Import(View):
import StringIO import StringIO
_fields = {} _fields = {}
_fields_invert = {} _fields_invert = {}
req_field = []
error = None error = None
all_fields = [] all_fields = []
fields = dict(req.session.model(params.get('model')).fields_get(False, req.session.eval_context(req.context))) fields = dict(req.session.model(params.get('model')).fields_get(False, req.session.eval_context(req.context)))
fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}})
for field in fields:
value = fields[field]
if (value.get('required',False) == True):
req_field.append(field)
def model_populate(fields, prefix_node='', prefix=None, prefix_value='', level=2): def model_populate(fields, prefix_node='', prefix=None, prefix_value='', level=2):
def str_comp(x,y): def str_comp(x,y):
if x<y: return 1 if x<y: return 1
@ -1394,7 +1400,6 @@ class Import(View):
else: else:
count = count + 1 count = count + 1
fields.append((word, word)) fields.append((word, word))
# error = {'message':("You cannot import the field '%s', because we cannot auto-detect it" % (word,))}
if len(line) == count: if len(line) == count:
error = {'message':"File has not any column header."} error = {'message':"File has not any column header."}
@ -1406,7 +1411,7 @@ class Import(View):
error=dict(error, preview=params.get('csvfile').file.read(200)) error=dict(error, preview=params.get('csvfile').file.read(200))
return simplejson.dumps({'error':error}) return simplejson.dumps({'error':error})
return simplejson.dumps({'records':records[1:],'header':fields,'all_fields':all_fields}) return simplejson.dumps({'records':records[1:],'header':fields,'all_fields':all_fields,'req_field':req_field})
@openerpweb.httprequest @openerpweb.httprequest
def import_data(self, req, **params): def import_data(self, req, **params):

View File

@ -1,11 +1,12 @@
openerp.base.data_import = function(openerp) { openerp.base.data_import = function(openerp) {
openerp.base.DataImport = openerp.base.Dialog.extend({ openerp.base.DataImport = openerp.base.Dialog.extend({
init: function(parent, dataset){ init: function(parent, dataset){
this.parent = parent;
this._super(parent); this._super(parent);
this.dataset = dataset; this.dataset = dataset;
}, },
start: function() { start: function() {
var self = this var self = this;
self._super(false); self._super(false);
self.template = 'ImportDataView'; self.template = 'ImportDataView';
self.dialog_title = "Import Data" self.dialog_title = "Import Data"
@ -36,7 +37,7 @@ openerp.base.DataImport = openerp.base.Dialog.extend({
this.$element.find('#import_data').attr({ this.$element.find('#import_data').attr({
'action': '/base/import/import_data' 'action': '/base/import/import_data'
}).ajaxSubmit({ }).ajaxSubmit({
success: this.import_results success: this.on_import_results
}); });
}, },
on_autodetect_data: function() { on_autodetect_data: function() {
@ -49,23 +50,27 @@ openerp.base.DataImport = openerp.base.Dialog.extend({
this.$element.find('#import_data').attr({ this.$element.find('#import_data').attr({
'action': '/base/import/detect_data' 'action': '/base/import/detect_data'
}).ajaxSubmit({ }).ajaxSubmit({
success: this.import_results success: this.on_import_results
}); });
}, },
import_results:function(res){ on_import_results:function(res){
$('#result, #success').empty(); var self = this;
this.$element.find('#result, #success , #message').empty();
var results = $.parseJSON(res); var results = $.parseJSON(res);
var result_node = $("#result"); var result_node = $("#result");
var records = {};
if (results['records']){ if (results['records']){
records = {'header':results['header'],'sel':results['all_fields'],'row':results['records']}; records = {'header':results['header'],'sel':results['all_fields'],'row':results['records']};
result_node.append(QWeb.render('ImportView-result',{'records':records})); result_node.append(QWeb.render('ImportView-result',{'records':records}));
}else if(results['error']){ }else if(results['error']){
result_node.append(QWeb.render('ImportView-result',{'error': results['error']})); result_node.append(QWeb.render('ImportView-result',{'error': results['error']}));
}else if(results['success']){ }else if(results['success']){
var success_node = $("#success"); self.stop();
success_node.append(QWeb.render('ImportView-result',{'success': results['success']})); this.parent.reload_content();
} }
this.do_check_req_field(results['req_field']);
var selected_fields = []; var selected_fields = [];
$("td #sel_field").click(function(){ $("td #sel_field").click(function(){
selected_fields = []; selected_fields = [];
@ -77,16 +82,35 @@ openerp.base.DataImport = openerp.base.Dialog.extend({
$("#message").empty(); $("#message").empty();
$("td #sel_field").css('background-color',''); $("td #sel_field").css('background-color','');
$(".ui-button-text:contains('Import File')").parent().attr("disabled",false); $(".ui-button-text:contains('Import File')").parent().attr("disabled",false);
self.do_check_req_field(results['req_field']);
var curr_selected = this.selectedIndex; var curr_selected = this.selectedIndex;
if ($.inArray(curr_selected,selected_fields) > -1){ if ($.inArray(curr_selected,selected_fields) > -1){
$(this).css('background-color','#FF6666'); $(this).css('background-color','#FF6666');
$("#message").append("Selected column should not be same."); $("#message").append("*Selected column should not be same.");
$(".ui-button-text:contains('Import File')").parent().attr("disabled",true); $(".ui-button-text:contains('Import File')").parent().attr("disabled",true);
}else{ }else{
$(this).css('background-color',''); $(this).css('background-color','');
} }
}); });
}, },
do_check_req_field: function(req_fld){
if (req_fld.length){
var sel_fields =[];
var required_fields = [];
$("td #sel_field option:selected").each(function(){
sel_fields.push($(this).val());
});
_.each(req_fld,function(fld){
if ($.inArray(fld,sel_fields) <= -1){
required_fields.push(fld);
}
});
if (required_fields.length){
$("#message").append("*Required Fields are not selected which is "+required_fields+". ");
$(".ui-button-text:contains('Import File')").parent().attr("disabled",true);
}
}
},
stop: function() { stop: function() {
$(this.$dialog).remove(); $(this.$dialog).remove();
this._super(); this._super();