Database cleanup

database_cleanup
REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/19.0/database_cleanup
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStefan Rijnhart, Ruchir Shukla, Weblate, OCA-git-bot, Wolfgang Pichler, oca-ci, adrip-s73
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_field_line_tree cleanup.purge.line.field field Inherits tree_purge_line
purge_fields_view cleanup.purge.wizard.field data Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu button Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model button Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module button Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table field Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line list New
Models touched (21)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)

New fields (3)
  • name Char
    readonly=True
  • purged Boolean
    readonly=True
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • purge(self)

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink data entries upon manual confirmation.

New fields (4)
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' string='Field'
  • model_id Many2one → ir.model
    comodel_name='ir.model' related='field_id.model_id' store=True string='Model'
  • model_name Char
    related='model_id.model' store=True string='Model Technical Name'
  • wizard_id Many2one → cleanup.purge.wizard.field
    readonly=True args: 'cleanup.purge.wizard.field', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink fields upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Uninstall modules upon manual confirmation, then reload the database.

New fields (2)
  • table_type Selection
    selection=_TABLE_TYPE_SELECTION
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (6)
  • 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_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.field
    args: 'cleanup.purge.line.field', 'wizard_id', 'Fields to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for fields not technically mapped to a model.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search 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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/18.0/database_cleanup
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStefan Rijnhart, Weblate, OCA-git-bot, oca-ci, Nguyen Minh Chien
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_field_line_tree cleanup.purge.line.field field Inherits tree_purge_line
purge_fields_view cleanup.purge.wizard.field data Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu button Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model button Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module button Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table field Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line list New
Models touched (21)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)

New fields (3)
  • name Char
    readonly=True
  • purged Boolean
    readonly=True
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • purge(self)

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink data entries upon manual confirmation.

New fields (4)
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' string='Field'
  • model_id Many2one → ir.model
    comodel_name='ir.model' related='field_id.model_id' store=True string='Model'
  • model_name Char
    related='model_id.model' store=True string='Model Technical Name'
  • wizard_id Many2one → cleanup.purge.wizard.field
    readonly=True args: 'cleanup.purge.wizard.field', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink fields upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Uninstall modules upon manual confirmation, then reload the database.

New fields (2)
  • table_type Selection
    selection=_TABLE_TYPE_SELECTION
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (6)
  • 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_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.field
    args: 'cleanup.purge.line.field', 'wizard_id', 'Fields to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for fields not technically mapped to a model.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search 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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/17.0/database_cleanup
VERSION
VERSION 1.2.3
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStefan Rijnhart, Pedro M. Baeza, Weblate, OCA-git-bot, Andrea Stirpe, oca-ci, Alessandro Uffreduzzi, augusto-weiss, Benoît Fontaine
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
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 (20)
XML IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_field_line_tree cleanup.purge.line.field field Inherits tree_purge_line
purge_fields_view cleanup.purge.wizard.field data Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu data Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model data Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module data Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_property_line_tree cleanup.purge.line.property field Inherits tree_purge_line
purge_property_view cleanup.purge.wizard.property data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table field Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line tree New
Models touched (23)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)

New fields (3)
  • name Char
    readonly=True
  • purged Boolean
    readonly=True
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • purge(self)

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink data entries upon manual confirmation.

New fields (4)
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' string='Field'
  • model_id Many2one → ir.model
    comodel_name='ir.model' related='field_id.model_id' store=True string='Model'
  • model_name Char
    related='model_id.model' store=True string='Model Technical Name'
  • wizard_id Many2one → cleanup.purge.wizard.field
    readonly=True args: 'cleanup.purge.wizard.field', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink fields upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Uninstall modules upon manual confirmation, then reload the database.

New fields (3)
  • property_id Many2one → ir.property
    args: 'ir.property'
  • reason Selection
    args: [(REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default'), (REASON_DEFAULT_FALSE, 'Empty default property'), (REASON_UNKNOWN_MODEL, 'Unknown model')]
  • wizard_id Many2one → cleanup.purge.wizard.property
    readonly=True args: 'cleanup.purge.wizard.property', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Delete properties

New fields (2)
  • table_type Selection
    selection=_TABLE_TYPE_SELECTION
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (6)
  • 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_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.field
    args: 'cleanup.purge.line.field', 'wizard_id', 'Fields to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for fields not technically mapped to a model.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.property
    args: 'cleanup.purge.line.property', 'wizard_id', 'Properties to purge'
Public methods (1)
  • find(self)
    @api.model
    Search property records which are duplicated or the same as the default

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search 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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/16.0/database_cleanup
VERSION
VERSION 1.2.2
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStefan Rijnhart, Pedro M. Baeza, Weblate, OCA-git-bot, Iván Todorovich, Andrea Stirpe, Miika Nissi, oca-ci, Alessandro Uffreduzzi, Mark Schuit
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:53
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_field_line_tree cleanup.purge.line.field field Inherits tree_purge_line
purge_fields_view cleanup.purge.wizard.field data Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu data Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model data Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module data Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_property_line_tree cleanup.purge.line.property field Inherits tree_purge_line
purge_property_view cleanup.purge.wizard.property data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table field Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line tree New
Models touched (23)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)

New fields (3)
  • name Char
    readonly=True
  • purged Boolean
    readonly=True
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model_create_multi
  • purge(self)

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink data entries upon manual confirmation.

New fields (4)
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' string='Field'
  • model_id Many2one → ir.model
    comodel_name='ir.model' related='field_id.model_id' store=True string='Model'
  • model_name Char
    related='model_id.model' store=True string='Model Technical Name'
  • wizard_id Many2one → cleanup.purge.wizard.field
    readonly=True args: 'cleanup.purge.wizard.field', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink fields upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Uninstall modules upon manual confirmation, then reload the database.

New fields (3)
  • property_id Many2one → ir.property
    args: 'ir.property'
  • reason Selection
    args: [(REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default'), (REASON_DEFAULT_FALSE, 'Empty default property'), (REASON_UNKNOWN_MODEL, 'Unknown model')]
  • wizard_id Many2one → cleanup.purge.wizard.property
    readonly=True args: 'cleanup.purge.wizard.property', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Delete properties

New fields (2)
  • table_type Selection
    selection=_TABLE_TYPE_SELECTION
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (7)
  • create(self, values)
    @api.model_create_multi
  • default_get(self, fields_list)
    @api.model
  • find(self)
  • get_wizard_action(self)
    @api.model
  • name_get(self)
  • purge_all(self)
  • select_lines(self)

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.field
    args: 'cleanup.purge.line.field', 'wizard_id', 'Fields to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for fields not technically mapped to a model.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.property
    args: 'cleanup.purge.line.property', 'wizard_id', 'Properties to purge'
Public methods (1)
  • find(self)
    @api.model
    Search property records which are duplicated or the same as the default

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search 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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/15.0/database_cleanup
VERSION
VERSION 1.2.2
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStefan Rijnhart, Pedro M. Baeza, Weblate, OCA-git-bot, Hans Henrik Gabelgaard, oca-ci, Maksym Yankin, Alessandro Uffreduzzi, andrea
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:38
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_field_line_tree cleanup.purge.line.field field Inherits tree_purge_line
purge_fields_view cleanup.purge.wizard.field data Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu data Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model data Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module data Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_property_line_tree cleanup.purge.line.property field Inherits tree_purge_line
purge_property_view cleanup.purge.wizard.property data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table field Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line tree New
Models touched (23)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)

New fields (3)
  • name Char
    readonly=True
  • purged Boolean
    readonly=True
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model
  • purge(self)

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink data entries upon manual confirmation.

New fields (4)
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' string='Field'
  • model_id Many2one → ir.model
    comodel_name='ir.model' related='field_id.model_id' store=True string='Model'
  • model_name Char
    related='model_id.model' store=True string='Model Technical Name'
  • wizard_id Many2one → cleanup.purge.wizard.field
    readonly=True args: 'cleanup.purge.wizard.field', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink fields upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Uninstall modules upon manual confirmation, then reload the database.

New fields (3)
  • property_id Many2one → ir.property
    args: 'ir.property'
  • reason Selection
    args: [(REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default'), (REASON_DEFAULT_FALSE, 'Empty default property'), (REASON_UNKNOWN_MODEL, 'Unknown model')]
  • wizard_id Many2one → cleanup.purge.wizard.property
    readonly=True args: 'cleanup.purge.wizard.property', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Delete properties

New fields (2)
  • table_type Selection
    selection=_TABLE_TYPE_SELECTION
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (7)
  • create(self, values)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • find(self)
  • get_wizard_action(self)
    @api.model
  • name_get(self)
  • purge_all(self)
  • select_lines(self)

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.field
    args: 'cleanup.purge.line.field', 'wizard_id', 'Fields to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for fields not technically mapped to a model.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.property
    args: 'cleanup.purge.line.property', 'wizard_id', 'Properties to purge'
Public methods (1)
  • find(self)
    @api.model
    Search property records which are duplicated or the same as the default

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search 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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/14.0/database_cleanup
VERSION
VERSION 1.1.2
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStefan Rijnhart, Pedro M. Baeza, Enric Tobella, OCA Transbot, Weblate, OCA-git-bot, Tom Blauwendraat, hparfr, oca-ci, Alessandro Uffreduzzi
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu data Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model data Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module data Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_property_line_tree cleanup.purge.line.property field Inherits tree_purge_line
purge_property_view cleanup.purge.wizard.property data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table field Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line tree New
Models touched (21)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)

New fields (3)
  • name Char
    readonly=True args: 'Name'
  • purged Boolean
    readonly=True args: 'Purged'
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model
  • purge(self)

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink data entries upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Uninstall modules upon manual confirmation, then reload the database.

New fields (3)
  • property_id Many2one → ir.property
    args: 'ir.property'
  • reason Selection
    args: [(REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default'), (REASON_DEFAULT_FALSE, 'Empty default property'), (REASON_UNKNOWN_MODEL, 'Unknown model')]
  • wizard_id Many2one → cleanup.purge.wizard.property
    readonly=True args: 'cleanup.purge.wizard.property', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Delete properties

New fields (2)
  • table_type Selection
    selection=_TABLE_TYPE_SELECTION string='Table Type'
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (7)
  • create(self, values)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • find(self)
  • get_wizard_action(self)
    @api.model
  • name_get(self)
  • purge_all(self)
  • select_lines(self)

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.property
    args: 'cleanup.purge.line.property', 'wizard_id', 'Properties to purge'
Public methods (1)
  • find(self)
    @api.model
    Search property records which are duplicated or the same as the default

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search 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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/13.0/database_cleanup
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStefan Rijnhart, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Rad0van
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:17
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu data Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model data Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module data Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_property_line_tree cleanup.purge.line.property field Inherits tree_purge_line
purge_property_view cleanup.purge.wizard.property data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table data Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line tree New
Models touched (21)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)

New fields (3)
  • name Char
    readonly=True args: 'Name'
  • purged Boolean
    readonly=True args: 'Purged'
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model
  • purge(self)

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink data entries upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Uninstall modules upon manual confirmation, then reload the database.

New fields (3)
  • property_id Many2one → ir.property
    args: 'ir.property'
  • reason Selection
    args: [(REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default'), (REASON_DEFAULT_FALSE, 'Empty default property'), (REASON_UNKNOWN_MODEL, 'Unknown model')]
  • wizard_id Many2one → cleanup.purge.wizard.property
    readonly=True args: 'cleanup.purge.wizard.property', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Delete properties

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (7)
  • create(self, values)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • find(self)
  • get_wizard_action(self)
    @api.model
  • name_get(self)
  • purge_all(self)
  • select_lines(self)

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.property
    args: 'cleanup.purge.line.property', 'wizard_id', 'Properties to purge'
Public methods (1)
  • find(self)
    @api.model
    Search property records which are duplicated or the same as the default

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for tables that cannot be instantiated. Ignore views for now.

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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/12.0/database_cleanup
VERSION
VERSION 1.2.3
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSMartin Trigaux, Holger Brunn, Pedro M. Baeza, Sylvain LE GAL, mreficent, Enric Tobella, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Tom Blauwendraat, oca-ci, Simon Maillard, Jonathan Zong
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_field_line_tree cleanup.purge.line.field field Inherits tree_purge_line
purge_fields_view cleanup.purge.wizard.field data Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu data Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model data Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module data Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_property_line_tree cleanup.purge.line.property field Inherits tree_purge_line
purge_property_view cleanup.purge.wizard.property data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table field Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line tree New
Models touched (23)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)
    @api.multi

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)
    @api.multi

New fields (3)
  • name Char
    readonly=True args: 'Name'
  • purged Boolean
    readonly=True args: 'Purged'
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model
  • purge(self)
    @api.multi

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink data entries upon manual confirmation.

New fields (4)
  • field_id Many2one → ir.model.fields
    comodel_name='ir.model.fields' string='Field'
  • model_id Many2one → ir.model
    comodel_name='ir.model' related='field_id.model_id' store=True string='Model'
  • model_name Char
    related='model_id.model' store=True string='Model Technical Name'
  • wizard_id Many2one → cleanup.purge.wizard.field
    readonly=True args: 'cleanup.purge.wizard.field', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink fields upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Uninstall modules upon manual confirmation, then reload the database.

New fields (3)
  • property_id Many2one → ir.property
    args: 'ir.property'
  • reason Selection
    args: [(REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default'), (REASON_DEFAULT_FALSE, 'Empty default property'), (REASON_UNKNOWN_MODEL, 'Unknown model')]
  • wizard_id Many2one → cleanup.purge.wizard.property
    readonly=True args: 'cleanup.purge.wizard.property', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Delete properties

New fields (2)
  • table_type Selection
    selection=_TABLE_TYPE_SELECTION string='Table Type'
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (7)
  • create(self, values)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • find(self)
    @api.multi
  • get_wizard_action(self)
    @api.model
  • name_get(self)
    @api.multi
  • purge_all(self)
    @api.multi
  • select_lines(self)
    @api.multi

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.field
    args: 'cleanup.purge.line.field', 'wizard_id', 'Fields to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for fields not technically mapped to a model.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.property
    args: 'cleanup.purge.line.property', 'wizard_id', 'Properties to purge'
Public methods (1)
  • find(self)
    @api.model
    Search property records which are duplicated or the same as the default

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search 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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/11.0/database_cleanup
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSHolger Brunn, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate, OCA-git-bot, Tom Blauwendraat, Simone Orsi, Fanha Giang, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/server-tools
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu data Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model data Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module data Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_property_line_tree cleanup.purge.line.property field Inherits tree_purge_line
purge_property_view cleanup.purge.wizard.property data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table data Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line tree New
Models touched (21)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)
    @api.multi

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)
    @api.multi

New fields (3)
  • name Char
    readonly=True args: 'Name'
  • purged Boolean
    readonly=True args: 'Purged'
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model
  • purge(self)
    @api.multi

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink data entries upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Uninstall modules upon manual confirmation, then reload the database.

New fields (3)
  • property_id Many2one → ir.property
    args: 'ir.property'
  • reason Selection
    args: [(REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default'), (REASON_DEFAULT_FALSE, 'Empty default property'), (REASON_UNKNOWN_MODEL, 'Unknown model')]
  • wizard_id Many2one → cleanup.purge.wizard.property
    readonly=True args: 'cleanup.purge.wizard.property', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Delete properties

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (7)
  • create(self, values)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • find(self)
    @api.multi
  • get_wizard_action(self)
    @api.model
  • name_get(self)
    @api.multi
  • purge_all(self)
    @api.multi
  • select_lines(self)
    @api.multi

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.property
    args: 'cleanup.purge.line.property', 'wizard_id', 'Properties to purge'
Public methods (1)
  • find(self)
    @api.model
    Search property records which are duplicated or the same as the default

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for tables that cannot be instantiated. Ignore views for now.

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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/10.0/database_cleanup
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSHolger Brunn, Pedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, Emanuel Cino, oca-travis, Weblate
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu data Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model data Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module data Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_property_line_tree cleanup.purge.line.property field Inherits tree_purge_line
purge_property_view cleanup.purge.wizard.property data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table data Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line tree New
Models touched (22)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)
    @api.multi

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)
    @api.multi

New fields (3)
  • name Char
    readonly=True args: 'Name'
  • purged Boolean
    readonly=True args: 'Purged'
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model
  • purge(self)
    @api.multi

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink data entries upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink menu entries upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Uninstall modules upon manual confirmation, then reload the database.

New fields (3)
  • property_id Many2one → ir.property
    args: 'ir.property'
  • reason Selection
    args: [(REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default'), (REASON_DEFAULT_FALSE, 'Empty default property'), (REASON_UNKNOWN_MODEL, 'Unknown model')]
  • wizard_id Many2one → cleanup.purge.wizard.property
    readonly=True args: 'cleanup.purge.wizard.property', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Delete properties

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (7)
  • create(self, values)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • find(self)
    @api.multi
  • get_wizard_action(self)
    @api.model
  • name_get(self)
    @api.multi
  • purge_all(self)
    @api.multi
  • select_lines(self)
    @api.multi

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.property
    args: 'cleanup.purge.line.property', 'wizard_id', 'Properties to purge'
Public methods (1)
  • find(self)
    @api.model
    Search property records which are duplicated or the same as the default

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for tables that cannot be instantiated. Ignore views for now.

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.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/9.0/database_cleanup
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStefan Rijnhart, Holger Brunn, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, Dave Lasley, Moises Lopez - https://www.vauxoo.com/, oca-travis, Weblate, oliverstore-ro
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:22
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
cleanup_create_indexes_line_view_tree cleanup.create_indexes.line button Inherits tree_purge_line
cleanup_create_indexes_wizard_view_form cleanup.create_indexes.wizard button Inherits form_purge_wizard
form_purge_wizard cleanup.purge.wizard form New
purge_column_line_tree cleanup.purge.line.column field Inherits tree_purge_line
purge_columns_view cleanup.purge.wizard.column field Inherits form_purge_wizard
purge_data_line_tree cleanup.purge.line.data field Inherits tree_purge_line
purge_data_view cleanup.purge.wizard.data field Inherits form_purge_wizard
purge_menu_line_tree cleanup.purge.line.menu data Inherits tree_purge_line
purge_menus_view cleanup.purge.wizard.menu data Inherits form_purge_wizard
purge_model_line_tree cleanup.purge.line.model data Inherits tree_purge_line
purge_models_view cleanup.purge.wizard.model data Inherits form_purge_wizard
purge_module_line_tree cleanup.purge.line.module data Inherits tree_purge_line
purge_modules_view cleanup.purge.wizard.module data Inherits form_purge_wizard
purge_property_line_tree cleanup.purge.line.property field Inherits tree_purge_line
purge_property_view cleanup.purge.wizard.property data Inherits form_purge_wizard
purge_table_line_tree cleanup.purge.line.table data Inherits tree_purge_line
purge_tables_view cleanup.purge.wizard.table data Inherits form_purge_wizard
tree_purge_line cleanup.purge.line tree New
Models touched (21)

New fields (3)
  • field_id Many2one → ir.model.fields
    required=True args: 'ir.model.fields'
  • purged Boolean
    args: 'Created'
  • wizard_id Many2one → cleanup.create_indexes.wizard
    args: 'cleanup.create_indexes.wizard'
Public methods (1)
  • purge(self)
    @api.multi

New fields (1)
  • purge_line_ids One2many → cleanup.create_indexes.line
    args: 'cleanup.create_indexes.line', 'wizard_id'
Public methods (1)
  • find(self)
    @api.multi

New fields (3)
  • name Char
    readonly=True args: 'Name'
  • purged Boolean
    readonly=True args: 'Purged'
  • wizard_id Many2one → cleanup.purge.wizard
    args: 'cleanup.purge.wizard'
Public methods (2)
  • create(self, values)
    @api.model
  • purge(self)
    @api.multi

New fields (2)
  • model_id Many2one → ir.model
    ondelete='CASCADE' required=True args: 'ir.model', 'Model'
  • wizard_id Many2one → cleanup.purge.wizard.column
    readonly=True args: 'cleanup.purge.wizard.column', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink columns upon manual confirmation.

New fields (2)
  • data_id Many2one → ir.model.data
    args: 'ir.model.data', 'Data entry'
  • wizard_id Many2one → cleanup.purge.wizard.data
    readonly=True args: 'cleanup.purge.wizard.data', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink data entries upon manual confirmation.

New fields (2)
  • menu_id Many2one → ir.ui.menu
    args: 'ir.ui.menu', 'Menu entry'
  • wizard_id Many2one → cleanup.purge.wizard.menu
    readonly=True args: 'cleanup.purge.wizard.menu', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.model
    readonly=True args: 'cleanup.purge.wizard.model', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink models upon manual confirmation.

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.module
    readonly=True args: 'cleanup.purge.wizard.module', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Uninstall modules upon manual confirmation, then reload the database.

New fields (3)
  • property_id Many2one → ir.property
    args: 'ir.property'
  • reason Selection
    args: [(REASON_DUPLICATE, 'Duplicated property'), (REASON_DEFAULT, 'Same value as default')]
  • wizard_id Many2one → cleanup.purge.wizard.property
    readonly=True args: 'cleanup.purge.wizard.property', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Delete properties

New fields (1)
  • wizard_id Many2one → cleanup.purge.wizard.table
    readonly=True args: 'cleanup.purge.wizard.table', 'Purge Wizard'
Public methods (1)
  • purge(self)
    @api.multi
    Unlink tables upon manual confirmation.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line
    args: 'cleanup.purge.line', 'wizard_id'
Public methods (7)
  • create(self, values)
    @api.model
  • default_get(self, fields_list)
    @api.model
  • find(self)
    @api.multi
  • get_wizard_action(self)
    @api.model
  • name_get(self)
    @api.multi
  • purge_all(self)
    @api.multi
  • select_lines(self)
    @api.multi

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.column
    args: 'cleanup.purge.line.column', 'wizard_id', 'Columns to purge'
Public methods (2)
  • find(self)
    @api.model
    Search 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.model
    From 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_ids One2many → cleanup.purge.line.data
    args: 'cleanup.purge.line.data', 'wizard_id', 'Data to purge'
Public methods (1)
  • find(self)
    @api.model
    Collect 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_ids One2many → cleanup.purge.line.menu
    args: 'cleanup.purge.line.menu', 'wizard_id', 'Menus to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.model
    args: 'cleanup.purge.line.model', 'wizard_id', 'Models to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for models that cannot be instantiated.

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.module
    args: 'cleanup.purge.line.module', 'wizard_id', 'Modules to purge'
Public methods (1)
  • find(self)
    @api.model

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.property
    args: 'cleanup.purge.line.property', 'wizard_id', 'Properties to purge'
Public methods (1)
  • find(self)
    @api.model
    Search property records which are duplicated or the same as the default

New fields (1)
  • purge_line_ids One2many → cleanup.purge.line.table
    args: 'cleanup.purge.line.table', 'wizard_id', 'Tables to purge'
Public methods (1)
  • find(self)
    @api.model
    Search for tables that cannot be instantiated. Ignore views for now.

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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/8.0/database_cleanup
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStéphane Bidoul, Yannick Vaucher, Guewen Baconnier, Alexandre Fayolle, Stefan Rijnhart, Holger Brunn, Pedro M. Baeza, GitHub, Anthony Muschang, Stéphane Bidoul (ACSONE), OCA Transbot, Maxime Chambreuil - http://www.savoirfairelinux.com, Stefan Rijnhart (Therp), oca-travis, Weblate, Matjaž Mozetič
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
purge_column_line_tree cleanup.purge.line.column tree New
purge_columns_view Form view for purge columns wizard cleanup.purge.wizard.column form New
purge_data_line_tree cleanup.purge.line.data tree New
purge_data_view Form view for purge data wizard cleanup.purge.wizard.data form New
purge_menu_line_tree cleanup.purge.line.menu tree New
purge_menus_view Form view for purge menus wizard cleanup.purge.wizard.menu form New
purge_model_line_tree cleanup.purge.line.model tree New
purge_models_view Form view for purge models wizard cleanup.purge.wizard.model form New
purge_module_line_tree cleanup.purge.line.module tree New
purge_modules_view Form view for purge modules wizard cleanup.purge.wizard.module form New
purge_table_line_tree cleanup.purge.line.table tree New
purge_tables_view Form view for purge tables wizard cleanup.purge.wizard.table form New
Models touched (17)

New fields (0)

No new fields.

Public methods (2)
  • create(self, values)
    @api.model
  • purge(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Unlink columns upon manual confirmation.

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Unlink data entries upon manual confirmation.

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Unlink models upon manual confirmation.

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Uninstall modules upon manual confirmation, then reload the database.

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Unlink tables upon manual confirmation.

New fields (0)

No new fields.

Public methods (6)
  • create(self, values)
    @api.model
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, ids, context=None)
  • get_wizard_action(self, cr, uid, context=None)
  • purge_all(self, cr, uid, ids, context=None)
  • select_lines(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (3)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)
    Search 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, cr, uid, model_pools, context=None)
    From openobject-server/openerp/osv/orm.py Iterate on the database columns to identify columns of fields which have been removed

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)
    Collect all rows from ir_model_data that refer to a nonexisting model, or to a nonexisting row in the model's table.

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)
    Search for models that cannot be instantiated.

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)
    Search for models that cannot be instantiated.

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)
    Search for tables that cannot be instantiated. Ignore views for now.

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.

REPOSITORY
REPOSITORYOCA/server-tools
GIT
GIThttps://github.com/OCA/server-tools.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/server-tools/tree/7.0/database_cleanup
VERSION
VERSION 0.1
CATEGORY
CATEGORYTools
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSAlexandre Fayolle, Pedro M. Baeza
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Clean your OpenERP 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 OpenERP.

After installation of this module, go to the Settings menu -> Technical ->
Database cleanup. Go through the modules, models, columns and tables
entries under this menu (in that order) and find out if there is orphaned data
in your database. You can either delete entries by line, or sweep all entries
in one big step (if you are *really* confident).

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 OpenERP 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 (5)
XML IDNameModelTypeStatus
purge_columns_view Form view for purge columns wizard cleanup.purge.wizard.column form New
purge_data_view Form view for purge data wizard cleanup.purge.wizard.data form New
purge_models_view Form view for purge models wizard cleanup.purge.wizard.model form New
purge_modules_view Form view for purge modules wizard cleanup.purge.wizard.module form New
purge_tables_view Form view for purge tables wizard cleanup.purge.wizard.table form New
Models touched (13)

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Unlink columns upon manual confirmation.

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Unlink data entries upon manual confirmation.

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Unlink models upon manual confirmation.

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Uninstall modules upon manual confirmation, then reload the database.

New fields (0)

No new fields.

Public methods (1)
  • purge(self, cr, uid, ids, context=None)
    Unlink tables upon manual confirmation.

New fields (0)

No new fields.

Public methods (3)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, ids, context=None)
  • purge_all(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (3)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)
    Search 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, cr, uid, model_pools, context=None)
    From openobject-server/openerp/osv/orm.py Iterate on the database columns to identify columns of fields which have been removed

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)
    Collect all rows from ir_model_data that refer to a nonexisting model, or to a nonexisting row in the model's table.

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)
    Search for models that cannot be instantiated.

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)

New fields (0)

No new fields.

Public methods (2)
  • default_get(self, cr, uid, fields, context=None)
  • find(self, cr, uid, context=None)
    Search for tables that cannot be instantiated. Ignore views for now.

New fields (0)

No new fields.

Public methods (0)

No public methods.