Files
odoo_source/odoo/modules/neutralize.py
T
Michele 724df8a570 [IMP] core: new neutralize flag on database restore and database duplicate dialog
Before this PR:
The only way to neutralize the database is running cli command neutralize

After this PR:
There is a new checkbox "neutralize database" in Duplicate database and Restore database dialog that neutralize the database after duplication/restore.
I also moved the neutralization code to the external module so it can be called also outside the cli .

closes odoo/odoo#122185

X-original-commit: 616740e9d09b3d0376be43ed1489e390f6f5823e
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
2023-05-24 11:53:38 +02:00

31 lines
969 B
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
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 = odoo.modules.get_module_resource(module, 'data/neutralize.sql')
if filename:
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")