TIP: You can type at any time to perform a new search.
Database cleanup
database_cleanup · OCA/server-tools
🛠 Migration considerations
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `UPDATE ir_attachment SET res_model = NULL WHERE id in %s` - re-check the table/column names still match after upgrading. migration-raw-sql-write
Found by automated static analysis: patterns worth a look before/after upgrading this module to a newer Odoo version.
- Repository
- OCA/server-tools · module folder · Try on Runboat
- Module version
- Category
- Tools
- Folder size
- 1.99 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/server-tools
- Last tracking update
- 2026-08-11 17:30:51
- Authors
- Odoo Community Association (OCA), Therp BV
- Maintainers
- Odoo Community Association (OCA), Therp BV
- Committers
- Stefan Rijnhart, Quoc - Pham Ngoc, Weblate, Ruchir Shukla, OCA-git-bot, Wolfgang Pichler, oca-ci, adrip-s73
- Odoo dependencies
-
odoo/odoo:- base
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
Clean your Odoo database from remnants of modules, models, columns and tables left by uninstalled modules (prior to 7.0) or a homebrew database upgrade to a new major version of Odoo. Caution! This module is potentially harmful and can *easily* destroy the integrity of your data. Do not use if you are not entirely comfortable with the technical details of the Odoo data model of *all* the modules that have ever been installed on your database, and do not purge any module, model, column or table if you do not know exactly what you are doing.
Code Analysis ⓘ
Views touched (18)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
cleanup_create_indexes_line_view_tree |
cleanup.create_indexes.line | list | Inherits tree_purge_line | |
cleanup_create_indexes_wizard_view_form |
cleanup.create_indexes.wizard | form | Inherits form_purge_wizard | |
form_purge_wizard |
cleanup.purge.wizard | form | New | |
purge_column_line_tree |
cleanup.purge.line.column | list | Inherits tree_purge_line | |
purge_columns_view |
cleanup.purge.wizard.column | form | Inherits form_purge_wizard | |
purge_data_line_tree |
cleanup.purge.line.data | list | Inherits tree_purge_line | |
purge_data_view |
cleanup.purge.wizard.data | form | Inherits form_purge_wizard | |
purge_field_line_tree |
cleanup.purge.line.field | list | Inherits tree_purge_line | |
purge_fields_view |
cleanup.purge.wizard.field | form | Inherits form_purge_wizard | |
purge_menu_line_tree |
cleanup.purge.line.menu | list | Inherits tree_purge_line | |
purge_menus_view |
cleanup.purge.wizard.menu | form | Inherits form_purge_wizard | |
purge_model_line_tree |
cleanup.purge.line.model | list | Inherits tree_purge_line | |
purge_models_view |
cleanup.purge.wizard.model | form | Inherits form_purge_wizard | |
purge_module_line_tree |
cleanup.purge.line.module | list | Inherits tree_purge_line | |
purge_modules_view |
cleanup.purge.wizard.module | form | Inherits form_purge_wizard | |
purge_table_line_tree |
cleanup.purge.line.table | list | Inherits tree_purge_line | |
purge_tables_view |
cleanup.purge.wizard.table | form | Inherits form_purge_wizard | |
tree_purge_line |
cleanup.purge.line | list | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (21)
New fields (3)
-
field_idMany2one → ir.model.fieldsrequired=True args: 'ir.model.fields' -
purgedBooleanargs: 'Created' -
wizard_idMany2one → cleanup.create_indexes.wizardargs: 'cleanup.create_indexes.wizard'
-
purge(self)
New fields (1)
-
purge_line_idsOne2many → cleanup.create_indexes.lineargs: 'cleanup.create_indexes.line', 'wizard_id'
-
find(self)
New fields (3)
-
nameCharreadonly=True -
purgedBooleanreadonly=True -
wizard_idMany2one → cleanup.purge.wizardargs: 'cleanup.purge.wizard'
-
create(self, values)@api.model_create_multi -
purge(self)
New fields (2)
-
model_idMany2one → ir.modelondelete='CASCADE'required=True args: 'ir.model', 'Model' -
wizard_idMany2one → cleanup.purge.wizard.columnreadonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
-
purge(self)Unlink columns upon manual confirmation.
New fields (2)
-
data_idMany2one → ir.model.dataargs: 'ir.model.data', 'Data entry' -
wizard_idMany2one → cleanup.purge.wizard.datareadonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
-
purge(self)Unlink data entries upon manual confirmation.
New fields (4)
-
field_idMany2one → ir.model.fieldscomodel_name='ir.model.fields'string='Field' -
model_idMany2one → ir.modelcomodel_name='ir.model'related='field_id.model_id'store=Truestring='Model' -
model_nameCharrelated='model_id.model'store=Truestring='Model Technical Name' -
wizard_idMany2one → cleanup.purge.wizard.fieldreadonly=True args: 'cleanup.purge.wizard.field', 'Purge Wizard'
-
purge(self)Unlink fields upon manual confirmation.
New fields (2)
-
menu_idMany2one → ir.ui.menuargs: 'ir.ui.menu', 'Menu entry' -
wizard_idMany2one → cleanup.purge.wizard.menureadonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
-
purge(self)Unlink menu entries upon manual confirmation.
New fields (1)
-
wizard_idMany2one → cleanup.purge.wizard.modelreadonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
-
purge(self)Unlink models upon manual confirmation.
New fields (1)
-
wizard_idMany2one → cleanup.purge.wizard.modulereadonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
-
purge(self)Uninstall modules upon manual confirmation, then reload the database.
New fields (2)
-
table_typeSelectionselection=_TABLE_TYPE_SELECTION -
wizard_idMany2one → cleanup.purge.wizard.tablereadonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
-
purge(self)Unlink tables upon manual confirmation.
New fields (1)
-
purge_line_idsOne2many → cleanup.purge.lineargs: 'cleanup.purge.line', 'wizard_id'
-
create(self, values)@api.model_create_multi -
default_get(self, fields_list)@api.model -
find(self) -
get_wizard_action(self)@api.model -
purge_all(self) -
select_lines(self)
New fields (1)
-
purge_line_idsOne2many → cleanup.purge.line.columnargs: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
-
find(self)@api.modelSearch for columns that are not in the corresponding model. Group models by table to prevent false positives for columns that are only in some of the models sharing the same table. Example of this is 'sale_id' not being a field of stock.picking.in -
get_orphaned_columns(self, model_pools)@api.modelFrom openobject-server/openerp/osv/orm.py Iterate on the database columns to identify columns of fields which have been removed
New fields (1)
-
purge_line_idsOne2many → cleanup.purge.line.dataargs: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
-
find(self)@api.modelCollect all rows from ir_model_data that refer to a nonexisting model, or to a nonexisting row in the model's table.
New fields (1)
-
purge_line_idsOne2many → cleanup.purge.line.fieldargs: 'cleanup.purge.line.field', 'wizard_id', 'Fields to purge'
-
find(self)@api.modelSearch for fields not technically mapped to a model.
New fields (1)
-
purge_line_idsOne2many → cleanup.purge.line.menuargs: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
-
find(self)@api.modelSearch for models that cannot be instantiated.
New fields (1)
-
purge_line_idsOne2many → cleanup.purge.line.modelargs: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
-
find(self)@api.modelSearch for models that cannot be instantiated.
New fields (1)
-
purge_line_idsOne2many → cleanup.purge.line.moduleargs: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
-
find(self)@api.model
New fields (1)
-
purge_line_idsOne2many → cleanup.purge.line.tableargs: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
-
find(self)@api.modelSearch for tables and views that cannot be instantiated.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…