diff --git a/webservice_server_env/__init__.py b/webservice_server_env/__init__.py index 0650744f..071962a3 100644 --- a/webservice_server_env/__init__.py +++ b/webservice_server_env/__init__.py @@ -1 +1,2 @@ from . import models +from .hooks import uninstall_hook diff --git a/webservice_server_env/__manifest__.py b/webservice_server_env/__manifest__.py index 1078732f..b328ed8e 100644 --- a/webservice_server_env/__manifest__.py +++ b/webservice_server_env/__manifest__.py @@ -14,5 +14,6 @@ "author": "Creu Blanca, Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/web-api", "depends": ["web", "webservice", "server_environment"], + "uninstall_hook": "uninstall_hook", "auto_install": True, } diff --git a/webservice_server_env/hooks.py b/webservice_server_env/hooks.py new file mode 100644 index 00000000..4eeb39d5 --- /dev/null +++ b/webservice_server_env/hooks.py @@ -0,0 +1,34 @@ +# Copyright 2025 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.addons.server_environment.uninstall import restore_env_managed_columns + + +def uninstall_hook(env): + """Restore database columns dropped by server.env.mixin. + + When the module is uninstalled, the columns managed by the server + environment mixin must be restored and repopulated with current values, + so the database remains usable. + """ + restore_env_managed_columns( + env, + "webservice.backend", + [ + "protocol", + "url", + "auth_type", + "username", + "password", + "api_key", + "api_key_header", + "content_type", + "oauth2_flow", + "oauth2_scope", + "oauth2_clientid", + "oauth2_client_secret", + "oauth2_authorization_url", + "oauth2_token_url", + "oauth2_audience", + ], + )