[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
_fields = {}
_fields_invert = {}
req_field = []
error = None
all_fields = []
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'}})
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 str_comp(x,y):
if x<y: return 1
@ -1394,7 +1400,6 @@ class Import(View):
else:
count = count + 1
fields.append((word, word))
# error = {'message':("You cannot import the field '%s', because we cannot auto-detect it" % (word,))}
if len(line) == count:
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))
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
def import_data(self, req, **params):

View File

@ -1,11 +1,12 @@
openerp.base.data_import = function(openerp) {
openerp.base.DataImport = openerp.base.Dialog.extend({
init: function(parent, dataset){
this.parent = parent;
this._super(parent);
this.dataset = dataset;
},
start: function() {
var self = this
var self = this;
self._super(false);
self.template = 'ImportDataView';
self.dialog_title = "Import Data"
@ -36,7 +37,7 @@ openerp.base.DataImport = openerp.base.Dialog.extend({
this.$element.find('#import_data').attr({
'action': '/base/import/import_data'
}).ajaxSubmit({
success: this.import_results
success: this.on_import_results
});
},
on_autodetect_data: function() {
@ -49,23 +50,27 @@ openerp.base.DataImport = openerp.base.Dialog.extend({
this.$element.find('#import_data').attr({
'action': '/base/import/detect_data'
}).ajaxSubmit({
success: this.import_results
success: this.on_import_results
});
},
import_results:function(res){
$('#result, #success').empty();
on_import_results:function(res){
var self = this;
this.$element.find('#result, #success , #message').empty();
var results = $.parseJSON(res);
var result_node = $("#result");
var records = {};
if (results['records']){
records = {'header':results['header'],'sel':results['all_fields'],'row':results['records']};
result_node.append(QWeb.render('ImportView-result',{'records':records}));
}else if(results['error']){
result_node.append(QWeb.render('ImportView-result',{'error': results['error']}));
}else if(results['success']){
var success_node = $("#success");
success_node.append(QWeb.render('ImportView-result',{'success': results['success']}));
self.stop();
this.parent.reload_content();
}
this.do_check_req_field(results['req_field']);
var selected_fields = [];
$("td #sel_field").click(function(){
selected_fields = [];
@ -77,16 +82,35 @@ openerp.base.DataImport = openerp.base.Dialog.extend({
$("#message").empty();
$("td #sel_field").css('background-color','');
$(".ui-button-text:contains('Import File')").parent().attr("disabled",false);
self.do_check_req_field(results['req_field']);
var curr_selected = this.selectedIndex;
if ($.inArray(curr_selected,selected_fields) > -1){
$(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);
}else{
$(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() {
$(this.$dialog).remove();
this._super();