A version bump rewrites website views without announcing any of it, so "the site looks wrong" after a migration is currently unanswerable. snapshot_cow_views.py records every website_id view (key, mode, inherit_id, active, arch and its md5) and diffs two snapshots. Rows come back as JSON straight from Postgres because an arch holds newlines and pipes; the column list is intersected with information_schema, since ir_ui_view does not expose the same columns from 12.0 to 18.0. Snapshots hold customer template content, so they go under private/ and stay out of git. todo_upgrade.py takes one before and one after each OpenUpgrade run, then prints the diff. Both are non-blocking: forensic material must never stop an upgrade. Measured on the real 12.0 -> 13.0 jump, the diff shows what no log reported: 71 -> 68 copies, 16 deleted and 13 created. portal.frontend_layout is not converted but DELETED (id 2670) and RECREATED (id 3397), with its children re-parented from one to the other. The four theme_technolibre copies, muk_web_branding, project_agile and erplibre_website_snippets_basic_html are dropped outright, and website_crm.contactus_thanks is renamed to website_form.contactus_thanks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| check_cow_views.py | ||
| fix_migration_odoo140_to_odoo150.py | ||
| README.base.md | ||
| README.fr.md | ||
| README.md | ||
| snapshot_cow_views.py | ||
| uninstall_module_list_odoo140_to_odoo150.txt | ||
Migration
Run this script when doing database migration. Example :
source ./.venv.odoo15.0_python3.8.20/bin/activate && cat ./script/odoo/migration/fix_migration_odoo140_to_odoo150.py | ./odoo15.0/odoo/odoo-bin shell -d DATABASE
Check uninstall_module_list_odoo140_to_odoo150.txt
Module lists to uninstall
Before a version bump, the migration uninstalls the modules listed in
uninstall_module_list_odoo<from>_to_odoo<to>.txt. Two locations are read, the
private one first, and the results are merged (duplicates dropped):
private/odoo/migration/<database>/uninstall_module_list_odooXX0_to_odooYY0.txt— specific to ONE database, not versioned. Which modules must be dropped depends on the data, so this is where nearly every entry belongs.script/odoo/migration/uninstall_module_list_odooXX0_to_odooYY0.txt— shared defaults, versioned, valid for every database.
Syntax: one module per line, with a justification after #. Commas and several
names per line are accepted; blank lines and full-line comments are ignored.
A module without a stated reason is flagged at runtime: removing a module is a
decision someone must be able to review later.
queue_job # blocks 12->13, trigger queue_job_notify
mgmtsystem_hazard # not ported to 13.0
web_syncer # dropped upstream