Browse Source
[REF] module_auto_update: Step 3, backwards compatibility
[REF] module_auto_update: Step 3, backwards compatibility
The previous implementation of this addon proved being extremely buggy: - It supplied out of the box a enabled cron to update Odoo that didn't restart the server, which possibly meant that upgrades broke things. - It overloaded standard Odoo upgrade methods that made i.e. installing an addon sometimes forced to upgrade all other addons in the database. - The checksum system wasn't smart enough, and some files that didn't need a module upgrade triggered the upgrade. - It was based on a dirhash library that was untested. - Some updates were not detected properly. - Storing a column into `ir.module.module` sometimes forbids uninstalling the addon. Thanks to Stéphane Bidoul (ACSONE), now we have new methods to perform the same work in a safer and more stable way. All I'm doing here is: - Cron is disabled by default. - Installed checksums are no longer saved at first install. - Old installations should keep most functionality intact thanks to the migration script. - Drop some duplicated tests. - Allow module uninstallation by pre-removing the fields from ir.mode.model. - When uninstalling the addon, the deprecated features will get removed for next installs always. Besides that, fixes for the new implementation too: - When uninstalling the addon, we remove the stored checksum data, so further installations work as if the addon was installed from scratch.pull/1198/head
Jairo Llopis
7 years ago
committed by
Stéphane Bidoul (ACSONE)
No known key found for this signature in database
GPG Key ID: BCAB2555446B5B92
10 changed files with 139 additions and 87 deletions
-
21module_auto_update/README.rst
-
2module_auto_update/__init__.py
-
4module_auto_update/__openerp__.py
-
2module_auto_update/data/cron_data_deprecated.xml
-
12module_auto_update/hooks.py
-
23module_auto_update/migrations/9.0.2.0.0/pre-migrate.py
-
13module_auto_update/models/module_deprecated.py
-
52module_auto_update/tests/test_module_deprecated.py
-
3module_auto_update/tests/test_module_upgrade_deprecated.py
-
46module_auto_update/wizards/module_upgrade_deprecated.py
@ -0,0 +1,23 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2018 Tecnativa - Jairo Llopis |
|||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). |
|||
import logging |
|||
from psycopg2 import IntegrityError |
|||
from openerp.addons.module_auto_update.models.module_deprecated import \ |
|||
PARAM_DEPRECATED |
|||
|
|||
_logger = logging.getLogger(__name__) |
|||
|
|||
|
|||
def migrate(cr, version): |
|||
"""Autoenable deprecated behavior.""" |
|||
try: |
|||
cr.execute( |
|||
"INSERT INTO ir_config_parameter (key, value) VALUES (%s, '1')", |
|||
(PARAM_DEPRECATED,) |
|||
) |
|||
_logger.warn("Deprecated features have been autoenabled, see " |
|||
"addon's README to know how to upgrade to the new " |
|||
"supported autoupdate mechanism.") |
|||
except IntegrityError: |
|||
_logger.info("Deprecated features setting exists, not autoenabling") |
Write
Preview
Loading…
Cancel
Save
Reference in new issue