A QWebException carries no [view_id … parent_id …] block — it names the template. The tool only read the inheritance context, so it answered « no parent view named » on the one failure that hit everything. Measured at bump 17: a frozen copy of website.submenu still called submenu.clean_url(), renamed _clean_url() in that version. Every page renders the menu, so 34 of 37 public URLs returned 500, and nothing pointed at the view. Resetting that one copy brought all 37 back. Only keys that actually have a COW copy are proposed: naming one without would send a reset against a module view, which does nothing. --- FR --- [FIX] migration : nommer le gabarit quand l'échec vient du rendu Une QWebException ne porte pas de bloc [view_id … parent_id …] : elle nomme le gabarit. L'outil ne lisait que le contexte d'héritage, et répondait donc « aucune vue parente nommée » sur la seule panne qui touchait tout. Mesuré au palier 17 : une copie figée de website.submenu appelait encore submenu.clean_url(), renommée _clean_url() par la version. Toute page affiche le menu, donc 34 URL publiques sur 37 rendaient 500, sans que rien ne désigne la vue. Réinitialiser cette seule copie les a toutes ramenées. Seules les clés ayant vraiment une copie COW sont proposées : en nommer une sans copie enverrait réinitialiser une vue module, donc ne rien faire. Assisted-by: Claude Opus 5 |
||
|---|---|---|
| .. | ||
| check_cow_views.py | ||
| check_stale_scss.py | ||
| check_stale_scss_tui.py | ||
| cow_drift.py | ||
| cow_drift_tui.py | ||
| fix_migration_odoo130_to_odoo140.sql | ||
| fix_migration_odoo140_to_odoo150.py | ||
| neutralize_cow_views.py | ||
| README.base.md | ||
| README.fr.md | ||
| README.md | ||
| reset_stale_cow_tui.py | ||
| reset_stale_cow_views.py | ||
| smoke_public_url.py | ||
| 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