@openerpweb.httprequest
def import_data(self, req, **params):
import StringIO
+ _fields = {}
+ _fields_invert = {}
+ prefix_node=''
+ prefix_value = ''
context = req.session.eval_context(req.context)
modle_obj = req.session.model(params.get('model'))
if not isinstance(fields, list):
fields = [fields]
+ flds = dict(req.session.model(params.get('model')).fields_get(False, req.session.eval_context(req.context)))
+ flds.update({'id':{'string':'ID'},'.id':{'string':'Database ID'}})
+ fields_order = flds.keys()
+ for field in fields_order:
+ st_name = prefix_value+flds[field]['string'] or field
+ _fields[prefix_node+field] = st_name
+ _fields_invert[st_name] = prefix_node+field
+
+ unmatch_field = []
+ for fld in fields:
+ if ((fld not in _fields.keys()) and (fld not in _fields_invert.keys())):
+ unmatch_field.append(fld)
+
+ if unmatch_field:
+ error = {'message':("You cannot import the fields '%s',because we cannot auto-detect it." % (unmatch_field))}
+ return simplejson.dumps({'error':error})
+
for line in data:
try:
datas.append(map(lambda x:x.decode(params.get('csvcode')).encode('utf-8'), line))
var success_node = $("#success");
success_node.append(QWeb.render('ImportView-result',{'success': results['success']}));
}
- var mm = [];
+ var selected_fields = [];
$("td #sel_field").click(function(){
- mm = [];
+ selected_fields = [];
$("td #sel_field option:selected").each(function(){
- mm.push($(this).index());
+ selected_fields.push($(this).index());
});
});
$("td #sel_field").change(function(){
- $(this).css('background-color','');
- var kk = this.selectedIndex;
- if ($.inArray(kk,mm) > -1){
+ $("#message").empty();
+ $("td #sel_field").css('background-color','');
+ $(".ui-button-text:contains('Import File')").parent().attr("disabled",false);
+ 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.");
+ $(".ui-button-text:contains('Import File')").parent().attr("disabled",true);
}else{
$(this).css('background-color','');
}