# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from contextlib import suppress import odoo import logging _logger = logging.getLogger(__name__) def get_installed_modules(cursor): cursor.execute(''' SELECT name FROM ir_module_module WHERE state IN ('installed', 'to upgrade', 'to remove'); ''') return [result[0] for result in cursor.fetchall()] def get_neutralization_queries(modules): # neutralization for each module for module in modules: filename = f'{module}/data/neutralize.sql' with suppress(FileNotFoundError): with odoo.tools.misc.file_open(filename) as file: yield file.read().strip() def neutralize_database(cursor): installed_modules = get_installed_modules(cursor) queries = get_neutralization_queries(installed_modules) for query in queries: cursor.execute(query) _logger.info("Neutralization finished")