[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:
parent
95f0fa26ee
commit
1127d2b3e3
|
@ -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):
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue