From 915dbd73d27c57e8b752581703a0aaebe4bff076 Mon Sep 17 00:00:00 2001 From: Eric Antones Date: Tue, 7 Jul 2026 12:15:45 +0200 Subject: [PATCH] [OU-FIX] web_tour: drop obsolete per-user security rules web_tour.tour lost its user_id field in 18.0, but a pre-existing per-user record rule ("own tours", domain [('user_id','=',user.id)]) survives the migration and now references a nonexistent field. Since tours are loaded at every web login, evaluating that stale rule blocks ALL logins right after a 17->18 migration. Remove such rules in the module's end-migration, after its own data has been reloaded. Reported upstream as issue 5365 on the OCA OpenUpgrade tracker, which proposes exactly this cleanup; submitted here on the fork so the 17->18 hop can ride it before it lands upstream. --- .../web_tour/18.0.1.0/end-migration.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/openupgrade_scripts/scripts/web_tour/18.0.1.0/end-migration.py b/openupgrade_scripts/scripts/web_tour/18.0.1.0/end-migration.py index e2f42aa290ce..238e28840ae8 100644 --- a/openupgrade_scripts/scripts/web_tour/18.0.1.0/end-migration.py +++ b/openupgrade_scripts/scripts/web_tour/18.0.1.0/end-migration.py @@ -4,7 +4,8 @@ @openupgrade.migrate() def migrate(env, version=None): """ - Set consumed tours from legacy table after migration + Set consumed tours from legacy table after migration and remove + obsolete security rules """ openupgrade.logged_query( env.cr, @@ -19,3 +20,19 @@ def migrate(env, version=None): ON CONFLICT DO NOTHING """, ) + # web_tour.tour lost its user_id field in 18.0: any pre-existing + # per-user record rule (e.g. "own tours", domain [('user_id','=', + # user.id)]) now references a nonexistent field. Tours are loaded at + # every web login, so the stale rule blocks ALL logins right after + # the migration. Drop such rules here, where the module's own data + # is already reloaded. + openupgrade.logged_query( + env.cr, + """ + DELETE FROM ir_rule + WHERE model_id = ( + SELECT id FROM ir_model WHERE model = 'web_tour.tour' + ) + AND domain_force LIKE '%user_id%' + """, + )