Elle éprouvait 45 modèles sur 125 portant une règle globale, contre quatre utilisateurs internes — et les quatre étaient administrateurs. Un modèle que seuls les administrateurs peuvent lire passait donc au vert : c'est exactement la forme du bug DMS qui a motivé cet outil, vue d'un autre angle. Elle ne peut pas créer un témoin ordinaire — ce serait une écriture. Elle peut dire qu'elle n'en avait pas, annoncer sa couverture au lieu du seul nombre éprouvé, et déclarer qu'un masquage codé en Python lui échappe puisqu'elle part d'ir_rule. Un vert qui prouve moins qu'il n'en a l'air est pire qu'un rouge. --- EN --- It tested 45 models out of the 125 carrying a global rule, against four internal users — and all four were administrators. A model only admins can read therefore passed green: exactly the shape of the DMS bug that motivated this tool, seen from another angle. It cannot create an ordinary witness — that would be a write. It can say it had none, announce its coverage rather than only the number checked, and declare that masking coded in Python escapes it since it starts from ir_rule. A green that proves less than it looks is worse than a red. 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_duplicate_index.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 | ||
| restore_config_defaults.py | ||
| smoke_internal_ui.py | ||
| smoke_public_url.py | ||
| snapshot_cow_views.py | ||
| uninstall_module_list_odoo120_to_odoo130.txt | ||
| 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