Merge lp:~openerp-dev/openobject-client-web/import_data into lp:openobject-client-web/trunk

Proposed by Kunal Chavda
Status: Merged
Merged at revision: 4100
Proposed branch: lp:~openerp-dev/openobject-client-web/import_data
Merge into: lp:openobject-client-web/trunk
Diff against target: 137 lines (+38/-14)
2 files modified
addons/openerp/controllers/impex.py (+17/-12)
addons/openerp/controllers/templates/imp.mako (+21/-2)
To merge this branch: bzr merge lp:~openerp-dev/openobject-client-web/import_data
Reviewer Review Type Date Requested Status
Fabien Meghazi (OpenERP) Approve
Review via email: mp+43499@code.launchpad.net

Description of the change

Hello,

Please refer bug:-684697
I have fixed show error message when problem in import file.

Thanks.

To post a comment you must log in.
4086. By Fabien Meghazi (OpenERP)

[IMP] Refactored jQuery error element creation

Revision history for this message
Fabien Meghazi (OpenERP) (fme) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'addons/openerp/controllers/impex.py'
2--- addons/openerp/controllers/impex.py 2010-11-24 11:26:32 +0000
3+++ addons/openerp/controllers/impex.py 2010-12-14 12:42:30 +0000
4@@ -150,8 +150,8 @@
5 new_list = listgrid.List(name='_terp_list', model='ir.exports', view=view, ids=None,
6 domain=[('resource', '=', params.model)],
7 context=ctx, selectable=1, editable=False, pageable=False, impex=True)
8-
9-
10+
11+
12
13 return dict(new_list=new_list, model=params.model, ids=params.ids, ctx=ctx,
14 search_domain=params.search_domain, source=params.source,
15@@ -383,7 +383,7 @@
16 return export_csv(params.fields2, result, add_names)
17
18 @expose(template="/openerp/controllers/templates/imp.mako")
19- def imp(self, **kw):
20+ def imp(self, error=None, **kw):
21 params, data = TinyDict.split(kw)
22
23 ctx = dict((params.context or {}), **rpc.session.context)
24@@ -405,7 +405,7 @@
25
26 tree.show_headers = False
27
28- return dict(model=params.model, source=params.source, tree=tree, fields=kw.get('fields', {}))
29+ return dict(error=error, model=params.model, source=params.source, tree=tree, fields=kw.get('fields', {}))
30
31 @expose()
32 def detect_data(self, csvfile, csvsep, csvdel, csvcode, csvskip, **kw):
33@@ -413,6 +413,7 @@
34
35 _fields = {}
36 _fields_invert = {}
37+ error = None
38
39 fields = dict(rpc.RPCProxy(params.model).fields_get(False, rpc.session.context),
40 id={'type': 'char', 'string': 'ID'},
41@@ -461,19 +462,19 @@
42 elif word in _fields_invert.keys():
43 fields.append((_fields_invert[word], word))
44 else:
45- raise common.warning(_("You cannot import this field %s, because we cannot auto-detect it" % (word,)))
46+ error = {'message':_("You cannot import this field %s, because we cannot auto-detect it" % (word,))}
47 break
48 except:
49- raise common.warning(_('Error processing your first line of the file.\nField %s is unknown') % (word,), _('Import Error.'))
50+ error = {'message':_('Error processing your first line of the file. Field %s is unknown') % (word,), 'title':_('Import Error.')}
51
52 kw['fields'] = fields
53- return self.imp(**kw)
54+ return self.imp(error=error, **kw)
55
56 @expose()
57 def import_data(self, csvfile, csvsep, csvdel, csvcode, csvskip, fields=[], **kw):
58
59 params, data = TinyDict.split(kw)
60-
61+ res = None
62 content = csvfile.file.read()
63 input=StringIO.StringIO(content)
64 data = list(csv.reader(input, quotechar=str(csvdel), delimiter=str(csvsep)))[int(csvskip):]
65@@ -492,12 +493,16 @@
66 res = rpc.session.execute('object', 'execute', params.model, 'import_data', fields, datas, 'init', '', False, ctx)
67 except Exception, e:
68 raise common.warning(ustr(e), _('XML-RPC error'))
69+
70+
71 if res[0]>=0:
72- raise common.message(_('Imported %d objects') % (res[0],))
73+ error = {'message':_('Imported %d objects') % (res[0],)}
74+
75 else:
76 d = ''
77 for key,val in res[1].items():
78- d+= ('\t%s: %s\n' % (ustr(key),ustr(val)))
79- error = _('Error trying to import this record:\n%s\nError Message:\n%s\n\n%s') % (d,res[2],res[3])
80- raise common.warning(unicode(error), _('Importation Error'))
81+ d+= ('%s: %s' % (ustr(key),ustr(val)))
82+ msg = _('Error trying to import this record:%s. ErrorMessage:%s %s') % (d,res[2],res[3])
83+ error = {'message':ustr(msg), 'title':_('ImportationError')}
84
85+ return self.imp(error=error, **kw)
86\ No newline at end of file
87
88=== modified file 'addons/openerp/controllers/templates/imp.mako'
89--- addons/openerp/controllers/templates/imp.mako 2010-09-30 07:30:01 +0000
90+++ addons/openerp/controllers/templates/imp.mako 2010-12-14 12:42:30 +0000
91@@ -4,12 +4,13 @@
92 <title>Import Data</title>
93
94 <link rel="stylesheet" type="text/css" href="/openerp/static/css/impex.css"/>
95+ <link rel="stylesheet" type="text/css" href="/openerp/static/css/database.css"/>
96
97 <script type="text/javascript">
98 function add_fields(){
99-
100+
101 var tree = treeGrids['${tree.name}'];
102-
103+
104 var fields = tree.selection;
105 var select = openobject.dom.get('fields');
106
107@@ -57,6 +58,12 @@
108 }
109
110 function on_detector(src){
111+ jQuery('#error').dialog({
112+ modal: true,
113+ resizable: false,
114+ close: function(ev, ui) { $(this).remove(); }
115+ });
116+
117 var d = openobject.dom.get("detector");
118
119 if (d.contentDocument)
120@@ -91,6 +98,18 @@
121 }).submit();
122 }
123
124+ % if error:
125+ var $error_div = jQuery('\
126+ <div id="error" style="display: none" title="${error.get('title', 'Warning')}"> \
127+ <table class="errorbox"> \
128+ <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> \
129+ <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> \
130+ </table> \
131+ </div> \
132+ ');
133+ jQuery(window.parent.document.body).append($error_div);
134+ % endif
135+
136 </script>
137 </%def>
138