`check_cow_views` cherche la rupture qui ARRÊTE la migration : la forme que l'arch doit avoir change. Deux autres la laissent finir sans un mot. Un ancrage manquant : une vue héritière fait un xpath sur `//t[@t-set=…]` que le module a gagné en chemin ; la copie, page d'utilisateur, n'est jamais réécrite. Un t-call pendant : le gabarit appelé n'existe plus dans la cible. Mesuré sur une 12 → 18 réelle : /contact rendait 500 depuis le palier 14 → 15, quatre paliers de silence, et le test de fumée le voyait sans savoir le nommer. Le premier se répare depuis la vue module, en gardant la page telle que son auteur l'a écrite. Le second se retire, et l'humain décide. --- EN --- `check_cow_views` looks for the break that STOPS the migration: the shape the arch must have changes. Two others let it finish without a word. A missing anchor: a child view xpaths on `//t[@t-set=…]` that the module gained along the way; the copy, a user page, is never rewritten. A dangling t-call: the template called no longer exists in the target. Measured on a real 12 → 18: /contact returned 500 since the 14 → 15 step, four steps of silence, and the smoke test saw it without naming it. The first is repaired from the module view, keeping the page as its author wrote it. The second is removed, and the human decides. Assisted-by: Claude Opus 5 |
||
|---|---|---|
| .. | ||
| check_cow_views.py | ||
| check_hidden_models.py | ||
| check_stale_scss.py | ||
| check_stale_scss_tui.py | ||
| cow_drift.py | ||
| cow_drift_tui.py | ||
| database_cleanup.py | ||
| dms_access_repair.py | ||
| fix_cow_render.py | ||
| fix_migration_odoo120_to_odoo130.sql | ||
| fix_migration_odoo130_to_odoo140.sql | ||
| fix_migration_odoo140_to_odoo150.py | ||
| fix_migration_odoo170_to_odoo180.sql | ||
| fix_view_type.py | ||
| neutralize_cow_views.py | ||
| README.base.md | ||
| README.fr.md | ||
| README.md | ||
| reset_stale_cow_tui.py | ||
| reset_stale_cow_views.py | ||
| smoke_internal_ui.py | ||
| smoke_public_url.py | ||
| snapshot_cow_views.py | ||
| uninstall_module_list_odoo140_to_odoo150.txt | ||
| uninstall_module_list_odoo170_to_odoo180.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