← Back to team overview

openerp-india team mailing list archive

[Bug 1260245] [NEW] [V.6.1] project_planning Report fails with key error in orm.py convert_fields

 

Public bug reported:

Hi Guys,

I encounter KeyErrors when trying to generate reports for the
projects_planning.

This happens everytime if i create a new database, make several planning
lines in the projects module and have more than one employee in the
planning.

My debugging attempts are the following ( and I quite do not understand
why the code behaves the way if does):


#orm.py line 3545: added some debuging prints

              					print 'VAL:'
              					print val
                for f in val:
                  				print 'RES:'
                   				print res

                    res2 = self._columns[f].get(cr, self, ids, f, user, context=context, values=res)
                    for record in res:
                       				print 'current record in res:'
                        			print record
                        if res2:
                            			print 'RES2 of f='+f+':'
                            			print res2
                            			print 'Record[f]:'

                            record[f] = res2[record['id']]

                            			print record[f]
                            			print 'NEXT'
                        else:
                            record[f] = []
                            			print 'EMPTY'


OUTPUT ON CONSOLE:


VAL:
['groups_id', 'search_view_id', 'display_menu_tip', 'views', 'view_id', 'view_ids']

RES:
[
	{
		'menu_id': 1,
	 	'context_tz': None, 
		'context_department_id': None, 
		'context_lang': u'en_US', 'name': u'Administrator',
		'context_section_id': None,
		'context_project_id': None,
		'company_id': 1,
		'menu_tips': False,
		'date': '2013-12-12 07:45:20.702872',
		'signature': u'Administrator',
		'active': True,
		'login': u'admin',
		'password': u'somepassword',
		'id': 1,
		'user_email': None,
		'action_id': 106
	}

]


....
....
....
....does some work successfully
....
....
....

VAL: ['groups_id']

current record in res:
{'menu_id': 1, 'context_tz': None, 'context_department_id': None, 'context_lang': u'en_US', 'name': u'Administrator', 'context_section_id': None, 'context_project_id': None, 'company_id': 1, 'menu_tips': False, 'date': '2013-12-12 07:45:20.702872', 'signature': u'Administrator', 'active': True, 'login': u'admin', 'password': u'somepasword', 'id': 1, 'user_email': None, 'action_id': 106}

RES2 of f=groups_id:
{1: [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]}

Record[f]:
[1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]

NEXT

current record in res:
{'sum_amount_real': [], 'sum_amount': 12.0, 'account_id': (5, u'I0132 ERP System'), 'id': 12}

RES2 of f=sum_amount_tasks:
{12: 12.0}

Record[f]:
12.0

NEXT

current record in res:
{'sum_amount_real': [], 'sum_amount': 0.0, 'account_id': (5, u'I0132 ERP System'), 'id': 13}

RES2 of f=sum_amount_tasks:

{12: 12.0}

Record[f]:

2013-12-12 08:47:15,089 2045 ERROR ? openerp.osv.osv: Uncaught exception
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 129, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 195, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 183, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 3424, in read
    result = self._read_flat(cr, user, select, fields, context, load)
  File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 3559, in _read_flat
    record[f] = res2[record['id']]
KeyError: 13


I think this is the table that is worked on here:


select * from report_account_analytic_planning_stat ;
 id | user_id | manager_id | account_id | sum_amount | planning_id
----+---------+------------+------------+------------+-------------
 17 |       4 |          4 |            |          0 |          15
 16 |       3 |          4 |            |          0 |          15
 19 |       4 |          4 |            |          0 |          16
 18 |       3 |          4 |            |          0 |          16
 15 |       4 |          4 |            |          0 |          14
 14 |       3 |          4 |            |          0 |          14
 13 |       4 |          4 |          5 |          0 |          13
 12 |       3 |          4 |          5 |         12 |          13


res2 does not switch the id to id=13 to process the second line of project_planning stat.

** Affects: openobject-addons
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of OpenERP
Indian Team, which is subscribed to OpenERP Addons.
https://bugs.launchpad.net/bugs/1260245

Title:
  [V.6.1] project_planning Report fails with key error in orm.py
  convert_fields

Status in OpenERP Addons (modules):
  New

Bug description:
  Hi Guys,

  I encounter KeyErrors when trying to generate reports for the
  projects_planning.

  This happens everytime if i create a new database, make several
  planning lines in the projects module and have more than one employee
  in the planning.

  My debugging attempts are the following ( and I quite do not
  understand why the code behaves the way if does):

  
  #orm.py line 3545: added some debuging prints

                					print 'VAL:'
                					print val
                  for f in val:
                    				print 'RES:'
                     				print res

                      res2 = self._columns[f].get(cr, self, ids, f, user, context=context, values=res)
                      for record in res:
                         				print 'current record in res:'
                          			print record
                          if res2:
                              			print 'RES2 of f='+f+':'
                              			print res2
                              			print 'Record[f]:'

                              record[f] = res2[record['id']]

                              			print record[f]
                              			print 'NEXT'
                          else:
                              record[f] = []
                              			print 'EMPTY'


  
  OUTPUT ON CONSOLE:

  
  VAL:
  ['groups_id', 'search_view_id', 'display_menu_tip', 'views', 'view_id', 'view_ids']

  RES:
  [
  	{
  		'menu_id': 1,
  	 	'context_tz': None, 
  		'context_department_id': None, 
  		'context_lang': u'en_US', 'name': u'Administrator',
  		'context_section_id': None,
  		'context_project_id': None,
  		'company_id': 1,
  		'menu_tips': False,
  		'date': '2013-12-12 07:45:20.702872',
  		'signature': u'Administrator',
  		'active': True,
  		'login': u'admin',
  		'password': u'somepassword',
  		'id': 1,
  		'user_email': None,
  		'action_id': 106
  	}

  ]


  ....
  ....
  ....
  ....does some work successfully
  ....
  ....
  ....

  VAL: ['groups_id']

  current record in res:
  {'menu_id': 1, 'context_tz': None, 'context_department_id': None, 'context_lang': u'en_US', 'name': u'Administrator', 'context_section_id': None, 'context_project_id': None, 'company_id': 1, 'menu_tips': False, 'date': '2013-12-12 07:45:20.702872', 'signature': u'Administrator', 'active': True, 'login': u'admin', 'password': u'somepasword', 'id': 1, 'user_email': None, 'action_id': 106}

  RES2 of f=groups_id:
  {1: [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]}

  Record[f]:
  [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]

  NEXT

  current record in res:
  {'sum_amount_real': [], 'sum_amount': 12.0, 'account_id': (5, u'I0132 ERP System'), 'id': 12}

  RES2 of f=sum_amount_tasks:
  {12: 12.0}

  Record[f]:
  12.0

  NEXT

  current record in res:
  {'sum_amount_real': [], 'sum_amount': 0.0, 'account_id': (5, u'I0132 ERP System'), 'id': 13}

  RES2 of f=sum_amount_tasks:

  {12: 12.0}

  Record[f]:

  2013-12-12 08:47:15,089 2045 ERROR ? openerp.osv.osv: Uncaught exception
  Traceback (most recent call last):
    File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 129, in wrapper
      return f(self, dbname, *args, **kwargs)
    File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 195, in execute
      res = self.execute_cr(cr, uid, obj, method, *args, **kw)
    File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 183, in execute_cr
      return getattr(object, method)(cr, uid, *args, **kw)
    File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 3424, in read
      result = self._read_flat(cr, user, select, fields, context, load)
    File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 3559, in _read_flat
      record[f] = res2[record['id']]
  KeyError: 13

  
  I think this is the table that is worked on here:

  
  select * from report_account_analytic_planning_stat ;
   id | user_id | manager_id | account_id | sum_amount | planning_id
  ----+---------+------------+------------+------------+-------------
   17 |       4 |          4 |            |          0 |          15
   16 |       3 |          4 |            |          0 |          15
   19 |       4 |          4 |            |          0 |          16
   18 |       3 |          4 |            |          0 |          16
   15 |       4 |          4 |            |          0 |          14
   14 |       3 |          4 |            |          0 |          14
   13 |       4 |          4 |          5 |          0 |          13
   12 |       3 |          4 |          5 |         12 |          13

  
  res2 does not switch the id to id=13 to process the second line of project_planning stat.

To manage notifications about this bug go to:
https://bugs.launchpad.net/openobject-addons/+bug/1260245/+subscriptions


Follow ups

References