← Back to team overview

openerp-dev-web team mailing list archive

[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