Martin Trigaux 91882dd972 [FIX] base: delete linked record only if last external id
In case a record is no longer referenced in the updated module, its external id
is deleted.
If the linked record still exists, it is deleted as well.

This last clause was incorrect as the record may still be referenced in other
modules.

If a field is declared in module A

class FooA(models.Model):
    _name = 'foo'
    bar = fields.Char()

and overriden in module B

class FooB(models.Model:
    _inherit = 'foo'
    bar = fields.Char(translate=True)

In case the field is no longer inherited in module B (code change, moved to
another module,...), the ir.model.field record for bar was deleted.

Two external ids are linked to field bar:
A.field_foo__bar
B.field_foo__bar

The ir.model.field record should be dropped only if both ir.model.data entries
are no longer loaded.
Otherwise, only the ir.model.data entry should be deleted (i.e. B.field_foo__bar
in the above example).

Fixes odoo/odoo#29820

closes odoo/odoo#30018
2019-01-08 15:21:27 +00:00
…
…
…
…
…
…
…

Build Status Tech Doc Help Nightly Builds

Odoo

Odoo is a suite of web based open source business apps.

The main Odoo Apps include an Open Source CRM, Website Builder, eCommerce, Warehouse Management, Project Management, Billing & Accounting, Point of Sale, Human Resources, Marketing, Manufacturing, Purchase Management, ...

Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get a full-featured Open Source ERP when you install several Apps.

Getting started with Odoo

For a standard installation please follow the Setup instructions from the documentation.

Then follow the developer tutorials

S
Description
No description provided
Readme LGPL-3.0
3.4 GiB
Languages
Python 49.6%
JavaScript 47.8%
SCSS 2%
CSS 0.3%
HTML 0.2%