Merge lp:~openerp-dev/openobject-addons/7.0-opw-606955-dhr into lp:openobject-addons/7.0

Proposed by Dharti Ratani(OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-addons/7.0-opw-606955-dhr
Merge into: lp:openobject-addons/7.0
Diff against target: 27 lines (+5/-4)
1 file modified
audittrail/audittrail.py (+5/-4)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/7.0-opw-606955-dhr
Reviewer Review Type Date Requested Status
Vinay Rana (OpenERP) Pending
Naresh(OpenERP) Pending
Review via email: mp+216853@code.launchpad.net

Description of the change

Hello Sir,

I have fixed the traceback when creating invoice from the form view, if its audittrail rule is present.

Steps to reproduce:

-Create an audittrail rule for account.invoice with all the log actions as true.
-Open any account invoice form and from there create a new record from the button "Create"
-It results in traceback

Traceback (most recent call last):
  File "/opt/openerp/server/openerp/netsvc.py", line 296, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/opt/openerp/server/openerp/service/web_services.py", line 626, in dispatch
    res = fn(db, uid, *params)
  File "/opt/openerp/server/openerp/osv/osv.py", line 190, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
 File "/opt/openerp/server/openerp/osv/osv.py", line 132, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/opt/openerp/server/openerp/osv/osv.py", line 199, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/opt/openerp/addons/audittrail/audittrail.py", line 522, in execute_cr
    return self.log_fct(cr, uid, model, method, fct_src, *args, **kw)
  File "/opt/openerp/addons/audittrail/audittrail.py", line 300, in log_fct
    old_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
  File "/opt/openerp/addons/audittrail/audittrail.py", line 335, in get_data
    for resource in resource_pool.read(cr, SUPERUSER_ID, res_ids, resource_pool._all_columns):
  File "/opt/openerp/server/openerp/osv/orm.py", line 3674, in read
    result = self._read_flat(cr, user, select, fields, context, load)
  File "/opt/openerp/server/openerp/osv/orm.py", line 3783, in _read_flat
    res2 = self._columns[val[0]].get(cr, self, ids, val, user, context=context, values=res)
  File "/opt/openerp/server/openerp/osv/fields.py", line 1145, in get
    result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
  File "/opt/openerp/addons/mail/mail_thread.py", line 105, in _get_message_data
    (user_pid, self._name, tuple(ids),))
  File "/opt/openerp/server/openerp/sql_db.py", line 161, in wrapper
    return f(self, *args, **kwargs)
  File "/opt/openerp/server/openerp/sql_db.py", line 226, in execute
    res = self._obj.execute(query, params)
ProgrammingError: syntax error at or near ")"
LINE 4: ... WHERE m.model = 'account.invoice' AND m.res_id in ()

Checked with :

Addons : revision 9874
Server : revision 5255
Web : revision 4153

Thanks

To post a comment you must log in.

Unmerged revisions

10006. By Dharti Ratani(OpenERP)

[FIX]Fixed the traceback while creating account invoice from button Create in form view when its audittrail rule is present

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'audittrail/audittrail.py'
2--- audittrail/audittrail.py 2014-03-12 05:45:35 +0000
3+++ audittrail/audittrail.py 2014-04-23 10:24:14 +0000
4@@ -295,18 +295,19 @@
5 res_ids = args[0]
6 if isinstance(res_ids, (long, int)):
7 res_ids = [res_ids]
8- if res_ids:
9+ if res_ids and res_ids[0]:
10 # store the old values into a dictionary
11 old_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
12 # process the original function, workflow trigger...
13 res = fct_src(cr, uid_orig, model.model, method, *args, **kw)
14 if method == 'copy':
15 res_ids = [res]
16- if res_ids:
17+ if res_ids and res_ids[0]:
18 # check the new values and store them into a dictionary
19 new_values = self.get_data(cr, uid_orig, pool, res_ids, model, method)
20- # compare the old and new values and create audittrail log if needed
21- self.process_data(cr, uid_orig, pool, res_ids, model, method, old_values, new_values, field_list)
22+ if res_ids and res_ids[0]:
23+ # compare the old and new values and create audittrail log if needed
24+ self.process_data(cr, uid_orig, pool, res_ids, model, method, old_values, new_values, field_list)
25 return res
26
27 def get_data(self, cr, uid, pool, res_ids, model, method):