4f5b2dc55042861812d6f54a6de209392b95394f
This commit adds a sanity check to the part of the ORM that uninstalls module data, as a recap, here's how module uninstallation works: - We fetch all data (ir.model.data) that corresponds to the module being uninstalled (`WHERE module='my_module'`) - We divide this data according to its type (ir.model, ir.model.field, constraints, etc.) - We fetch the corresponding records to each type, we delete them in a certain order (e.g. ir.model.field before ir.model) and then finally we delete the ir.model.data as a last step The data is deleted in batch for maximum performance, if one of the data cannot be deleted however, we perform a binary search until we find the culprit(s) and we store these culprits in a list of undeletable_ids. At the end of the process, we delete all ir.model.data **except** for the ones that are undeletable, however, it is possible that because of the multiple-step procedure, an undeletable ir.model.data could have become deletable. Imagine that an ir.model.field cannot be deleted, its module data id is added to the list of undeletable_ids, however if later on its ir.model is deleted successfully, the ir.model.field is dropped because its table is dropped, in this case the ir.model.data becomes deletable, but since we simply ignore it at the end of the process, we potentially end up with orphaned xmlids. This can be problematic when we reinstall the module and uninstall it again, as the system does not expect an orphaned xmlid, will completely crash and prevent the 2nd uninstallation of the module. This is the case with CRM and its crm.lead.scoring.frequency.field.field_id field, its ir.model.field cannot be deleted because the name field (and display_name) of the same model depend on it, so it is left as is, then further down the process the entire model is deleted and as a result so is all of its remaining fields, however the ir.module.data for the field that could not be deleted remains. opw-2575592 closes odoo/odoo#73668 X-original-commit: 75697934b34df882ec03595b876a8a6dadcef4c5 Signed-off-by: Adrian Torres (adt) <adt@odoo.com> Co-authored-by: Raphael Collet <rco@odoo.com>
…
…
…
…
…
…
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, ...
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.
To learn the software, we recommend the Odoo eLearning, or Scale-up, the business game. Developers can start with the developer tutorials
Languages
Python
49.6%
JavaScript
47.8%
SCSS
2%
CSS
0.3%
HTML
0.2%