← Back to team overview

openerp-india team mailing list archive

[Bug 799378] Re: models inheriting by prototype (_inherit with different _name) do not get updated when parent model is modified

 

Can you please retest as module loading has been rewritten around revno
3505

** Changed in: openobject-server
       Status: Triaged => Incomplete

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

Title:
  models inheriting by prototype (_inherit with different _name) do not
  get updated when parent model is modified

Status in OpenERP Server:
  Incomplete

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