Migration clean sample page - odoo-ps/psbe-process GitHub Wiki
This is a sample page, it's just representative.
Use only what it's needed for your migrations script (each upgrade is different).
import logging
# Add dependencies only if needed
from odoo.upgrade import util
from odoo import api, SUPERUSER_ID
_logger = logging.getLogger(__name__)
def migrate(cr, version):
env = api.Environment(cr, SUPERUSER_ID, {}) # Declare only if needed
_logger.info("###################################################################################")
_logger.info("Begin migration script")
_logger.info("---------- Rename xmlid on records ----------")
util.rename_xmlid(cr, "module_name.xmlid", "my_module.representative_name")
_logger.info("---------- Remove records ----------")
util.remove_view(cr, "module_name.view_xmlid")
util.remove_view(cr, view_id=view_id)
util.remove_menus(cr, menus_id)
util.remove_record(cr, "module_name.record_xmlid")
_logger.info("---------- Rename / Remove models ----------")
util.rename_model(cr, "old_model_name", "new_model_name")
util.remove_model(cr, "model_name")
_logger.info("---------- Rename / Remove fields ----------")
util.rename_field(cr, "model_name", "old_field_name", "new_field_name")
util.remove_field(cr, "model_name", "field_name")
_logger.info("---------- Update data ----------")
cr.execute("[UPDATE][DELETE][INSERT] SQL query")
_logger.info("---------- Force update of a record ----------")
util.update_record_from_xml(cr, "module_name.record_xmlid")
_logger.info("---------- Recompute fields ----------")
util.recompute_fields(cr, "model_name", ["field_name_1", "field_name_2", ...], logger=_logger)
_logger.info("End migration script")
_logger.info("###################################################################################")
For repetitive operations use loops:
_logger.info("---------- Rename fields ----------")
fields_to_rename = [
("model_1", "old_field_1", "new_field_1"),
("model_2", "old_field_2", "new_field_2"),
("model_3", "old_field_3", "new_field_3"),
...
]
for model_name, old_name, new_name in fields_to_rename:
util.rename_field(cr, model_name, old_name, new_name)