← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 799378] Re: Error reading fields of an object inherited by prototyping

 

Hello,

I believe I have ve encountered a variant of this issue. I was trying to
add a field to res.partner.address (by creating a module and using
_inherit = 'res.partner.address').

The new field was correctly created in the database, but when trying to
add it to inherited views that did not work (the error was "Can't find
field in the following view parts composing the view...").

When declaring my module as dependent of "crm", the problem went away.

Best regards,

-sbi

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to OpenERP Project Group.
https://bugs.launchpad.net/bugs/799378

Title:
  Error reading fields of an object inherited by prototyping

Status in OpenERP Server:
  Triaged

Bug description:
  openobject-server/6.0 revno 3445

  Steps:

  1 - Install 'crm' module
  2 - Make a module that adds a field to 'res.partner.address' (for instance, you can use 'base_partner_surname' http://apps.openerp.com/addon/1526 or 'l10n_it_base' http://apps.openerp.com/addon/4528) and install it
  3 - Try to create a new lead

  you get:

  [2011-06-19 14:16:01,056][test] ERROR:db.cursor:Programming error: column crm_lead.last_name does not exist
  LINE 1: SELECT crm_lead.date_closed,crm_lead.last_name,date_trunc('s...
                                      ^
  , in query SELECT crm_lead.date_closed,crm_lead.last_name,date_trunc('second', crm_lead.create_date) as create_date,crm_lead.probability,crm_lead.type_id,crm_lead.partner_address_id,crm_lead.date_action_last,crm_lead.day_close,crm_lead.street,crm_lead.day_open,crm_lead.contact_name,crm_lead.partner_id,crm_lead.date_action_next,crm_lead.city,crm_lead.first_name,crm_lead.user_id,crm_lead.zip,crm_lead.title,crm_lead.partner_name,crm_lead.planned_revenue,crm_lead.country_id,crm_lead.company_id,crm_lead.id,crm_lead.priority,crm_lead.state,crm_lead.email_cc,crm_lead.type,crm_lead.email,crm_lead.function,crm_lead.fax,crm_lead.optin,crm_lead.description,crm_lead.street2,crm_lead.ref2,crm_lead.section_id,crm_lead.title_action,crm_lead.phone,date_trunc('second', crm_lead.write_date) as write_date,crm_lead.active,crm_lead.date_action,crm_lead.categ_id,crm_lead.name,crm_lead.stage_id,crm_lead.date_open,crm_lead.date_deadline,crm_lead.optout,crm_lead.mobile,crm_lead.ref,crm_lead.birthdate,crm_lead.channel_id,crm_lead.state_id,crm_lead.email_from,crm_lead.referred,crm_lead.id FROM "crm_lead" WHERE crm_lead.id IN %s ORDER BY priority,date_action,id desc
  [2011-06-19 14:16:01,057][test] ERROR:web-services:Uncaught exception
  Traceback (most recent call last):
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/osv.py", line 122, in wrapper
      return f(self, dbname, *args, **kwargs)
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/osv.py", line 176, in execute
      res = self.execute_cr(cr, uid, obj, method, *args, **kw)
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/osv.py", line 167, in execute_cr
      return getattr(object, method)(cr, uid, *args, **kw)
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/orm.py", line 3694, in create
      self.pool.get(object)._store_set_values(cr, user, ids, fields2, context)
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/orm.py", line 3788, in _store_set_values
      result = self._columns[val[0]].get(cr, self, ids, val, 1, context=context)
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/fields.py", line 800, in get
      res = self._fnct(obj, cr, user, ids, name, self._arg, context)
    File "/home/elbati/workspace/openerp/openerp6/server/bin/addons/crm/crm_lead.py", line 69, in _compute_day
      if lead.date_closed:
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/orm.py", line 292, in __getattr__
      return self[name]
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/orm.py", line 194, in __getitem__
      fields_to_fetch = filter(lambda x: x[1]._classic_write, self._table._columns.items())
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/orm.py", line 2942, in read
      result = self._read_flat(cr, user, select, fields, context, load)
    File "/home/elbati/workspace/openerp/openerp6/server/bin/osv/orm.py", line 3001, in _read_flat
      cr.execute(query, (tuple(sub_ids),))
    File "/home/elbati/workspace/openerp/openerp6/server/bin/sql_db.py", line 78, in wrapper
      return f(self, *args, **kwargs)
    File "/home/elbati/workspace/openerp/openerp6/server/bin/sql_db.py", line 131, in execute
      res = self._obj.execute(query, params)
  ProgrammingError: column crm_lead.last_name does not exist
  LINE 1: SELECT crm_lead.date_closed,crm_lead.last_name,date_trunc('s...
                                      ^

  
  This is because 'crm.lead' inherits 'res.partner.address' by prototyping, but the new module (base_partner_surname) has been installed after 'crm', so, when 'crm' was installed, 'last_name' didn't exist.

  Investigating, I noticed that at line 194
  http://bazaar.launchpad.net/~openerp/openobject-server/6.0/view/3445/bin/osv/orm.py#L190
  'self._table._columns' contains 'last_name' while that column, as mentioned above, is not present within the database.

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


References