[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
|
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):
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue