I have found something very similar in v6.1RC1, using certified modules.
If you install base_contact (that changes the behaviour of res.partner.address
very deeply, adding some fields like 'location_id' and changing the definition
of several ones), and you install the crm module (which inherits in crm.lead
from res.partner.address), you will not be allowed to create crm.leads.
After the installing of both modules, at any attempt to call create an
crm.lead (from UI or loading an xml or csv data file), it will raise an
SQL error on the SQL insert statement due to the field 'location_id' not
found on crm_lead table ('location_id' is a field inherited by a
modified res.partner.address). This makes impossible to use crm and
base_contact together (both, official and certified modules!)
In my opinion, this is a high importance fault. It is difficult to image
a case where a crm user will not request the base_contact features.
Additionally, it seems to be a conceptual fault in the osv framework, so
most probably it will cause problems on other parts of real systems,
where official and private modules for sure are combined.
--
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:
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
_______________________________________________
Mailing list: https://launchpad.net/~openerp-india
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-india
More help : https://help.launchpad.net/ListHelp