openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #01204
[Merge] lp:~openerp-dev/openobject-client-web/import_data into lp:openobject-client-web
kch (Open ERP) has proposed merging lp:~openerp-dev/openobject-client-web/import_data into lp:openobject-client-web.
Requested reviews:
OpenERP SA's Web Client R&D (openerp-dev-web)
Hello,
Please refer bug:-684697
I have fixed show error message when problem in import file.
Thanks.
--
https://code.launchpad.net/~openerp-dev/openobject-client-web/import_data/+merge/43499
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-client-web/import_data.
=== modified file 'addons/openerp/controllers/impex.py'
--- addons/openerp/controllers/impex.py 2010-11-24 11:26:32 +0000
+++ addons/openerp/controllers/impex.py 2010-12-13 09:04:58 +0000
@@ -150,8 +150,8 @@
new_list = listgrid.List(name='_terp_list', model='ir.exports', view=view, ids=None,
domain=[('resource', '=', params.model)],
context=ctx, selectable=1, editable=False, pageable=False, impex=True)
-
-
+
+
return dict(new_list=new_list, model=params.model, ids=params.ids, ctx=ctx,
search_domain=params.search_domain, source=params.source,
@@ -383,7 +383,7 @@
return export_csv(params.fields2, result, add_names)
@expose(template="/openerp/controllers/templates/imp.mako")
- def imp(self, **kw):
+ def imp(self, error=None, **kw):
params, data = TinyDict.split(kw)
ctx = dict((params.context or {}), **rpc.session.context)
@@ -405,7 +405,7 @@
tree.show_headers = False
- return dict(model=params.model, source=params.source, tree=tree, fields=kw.get('fields', {}))
+ return dict(error=error, model=params.model, source=params.source, tree=tree, fields=kw.get('fields', {}))
@expose()
def detect_data(self, csvfile, csvsep, csvdel, csvcode, csvskip, **kw):
@@ -413,6 +413,7 @@
_fields = {}
_fields_invert = {}
+ error = None
fields = dict(rpc.RPCProxy(params.model).fields_get(False, rpc.session.context),
id={'type': 'char', 'string': 'ID'},
@@ -461,19 +462,19 @@
elif word in _fields_invert.keys():
fields.append((_fields_invert[word], word))
else:
- raise common.warning(_("You cannot import this field %s, because we cannot auto-detect it" % (word,)))
+ error = {'message':_("You cannot import this field %s, because we cannot auto-detect it" % (word,))}
break
except:
- raise common.warning(_('Error processing your first line of the file.\nField %s is unknown') % (word,), _('Import Error.'))
+ error = {'message':_('Error processing your first line of the file. Field %s is unknown') % (word,), 'title':_('Import Error.')}
kw['fields'] = fields
- return self.imp(**kw)
+ return self.imp(error=error, **kw)
@expose()
def import_data(self, csvfile, csvsep, csvdel, csvcode, csvskip, fields=[], **kw):
params, data = TinyDict.split(kw)
-
+ res = None
content = csvfile.file.read()
input=StringIO.StringIO(content)
data = list(csv.reader(input, quotechar=str(csvdel), delimiter=str(csvsep)))[int(csvskip):]
@@ -492,12 +493,16 @@
res = rpc.session.execute('object', 'execute', params.model, 'import_data', fields, datas, 'init', '', False, ctx)
except Exception, e:
raise common.warning(ustr(e), _('XML-RPC error'))
+
+
if res[0]>=0:
- raise common.message(_('Imported %d objects') % (res[0],))
+ error = {'message':_('Imported %d objects') % (res[0],)}
+
else:
d = ''
for key,val in res[1].items():
- d+= ('\t%s: %s\n' % (ustr(key),ustr(val)))
- error = _('Error trying to import this record:\n%s\nError Message:\n%s\n\n%s') % (d,res[2],res[3])
- raise common.warning(unicode(error), _('Importation Error'))
+ d+= ('%s: %s' % (ustr(key),ustr(val)))
+ msg = _('Error trying to import this record:%s. ErrorMessage:%s %s') % (d,res[2],res[3])
+ error = {'message':ustr(msg), 'title':_('ImportationError')}
+ return self.imp(error=error, **kw)
\ No newline at end of file
=== modified file 'addons/openerp/controllers/templates/imp.mako'
--- addons/openerp/controllers/templates/imp.mako 2010-09-30 07:30:01 +0000
+++ addons/openerp/controllers/templates/imp.mako 2010-12-13 09:04:58 +0000
@@ -4,12 +4,13 @@
<title>Import Data</title>
<link rel="stylesheet" type="text/css" href="/openerp/static/css/impex.css"/>
+ <link rel="stylesheet" type="text/css" href="/openerp/static/css/database.css"/>
<script type="text/javascript">
function add_fields(){
-
+
var tree = treeGrids['${tree.name}'];
-
+
var fields = tree.selection;
var select = openobject.dom.get('fields');
@@ -57,6 +58,12 @@
}
function on_detector(src){
+ jQuery('#error').dialog({
+ modal: true,
+ resizable: false,
+ close: function(ev, ui) { $(this).remove(); }
+ });
+
var d = openobject.dom.get("detector");
if (d.contentDocument)
@@ -91,6 +98,15 @@
}).submit();
}
+ % if error:
+ var $error_div = jQuery("<div id='error' title=${error.get('title', 'Warning')}></div>");
+ var $error_tbl = jQuery('<table class="errorbox">');
+ $error_tbl.append('<tr><td style="padding: 4px 2px;" width="10%"><img src="/openerp/static/images/warning.png"></td><td class="error_message_content"><pre>${error["message"]}</pre></td></tr>');
+ $error_tbl.append('<tr><td style="padding: 0 8px 5px 0; vertical-align:top;" align="right" colspan="2"><a class="button-a" id="error_btn" onclick="jQuery(\'#error\').dialog(\'close\');">OK</a></td></tr>');
+ $error_div.append($error_tbl);
+ jQuery(window.parent.document.body).append($error_div);
+ % endif
+
</script>
</%def>
Follow ups