Commit Graph

310 Commits (1fdc26e0816fa985ec247105d6db1ebb693b82fc)

Author SHA1 Message Date
oca-travis be511349e8 [UPD] Update module_auto_update.pot 2021-12-27 16:49:36 +02:00
OCA-git-bot 221313a14d [UPD] README.rst 2021-12-27 16:49:36 +02:00
Stéphane Bidoul (ACSONE) 9c0fe371c7 module_auto_update: cosmetics 2021-12-27 16:49:36 +02:00
Stéphane Bidoul (ACSONE) 4fe1c0a110 [MIG] module_auto_update from 11 to 12
Use tagged to mark post install tests as previous mechanism
seems to be broken.
2021-12-27 16:49:36 +02:00
Simone Orsi f4588878da Global pylint cleanup 2021-12-27 16:49:36 +02:00
OCA Git Bot 04dce0df10 [UPD] README.rst 2021-12-27 16:49:36 +02:00
OCA Git Bot 7a0a496164 [UPD] README.rst 2021-12-27 16:49:36 +02:00
oca-travis 9395c665a2 [UPD] Update module_auto_update.pot 2021-12-27 16:49:36 +02:00
Stéphane Bidoul (ACSONE) 4cc73f43db module_auto_update: 11.0.2.0.4 2021-12-27 16:49:36 +02:00
Stéphane Bidoul (ACSONE) e13e20bbd7 [UPD] README.rst 2021-12-27 16:49:36 +02:00
Stéphane Bidoul (ACSONE) ba9479dd35 module_auto_update: readme fragments 2021-12-27 16:49:36 +02:00
Stéphane Bidoul (ACSONE) d010cc579e module_auto_update: sbidoul as maintainer
Plus Stable development status
2021-12-27 16:49:36 +02:00
Denis Roussel c25aede879 [10.0][FIX] module_auto_update: Don't set 'to upgrade' on void recordset modules 2021-12-27 16:49:36 +02:00
Jairo Llopis 2c034991c1 [FIX] module_auto_update: Ignore `__pycache__` in hash test
Python >= 3.2 implements [PEP 3147](https://www.python.org/dev/peps/pep-3147/), so in a precompiled environment, the patched test could fail with this or similar:

    FAIL: test_basic (odoo.addons.module_auto_update.tests.test_addon_hash.TestAddonHash)
    Traceback (most recent call last):
    `   File "/opt/odoo/auto/addons/module_auto_update/tests/test_addon_hash.py", line 42, in test_basic
    `     'static/src/some.js',
    ` AssertionError: Lists differ: ['REA[237 chars]o', 'models/__pycache__/stuff.cpython-35.opt-1[23 chars].js'] != ['REA[237 chars]o', 'static/src/some.js']
    `
    ` First differing element 14:
    ` 'models/__pycache__/stuff.cpython-35.opt-1.pyc'
    ` 'static/src/some.js'
    `
    ` First list contains 1 additional elements.
    ` First extra element 15:
    ` 'static/src/some.js'
    `
    `   ['README.rst',
    `    'data/f1.xml',
    `    'data/f2.xml',
    `    'i18n/en.po',
    `    'i18n/en_US.po',
    `    'i18n/fr.po',
    `    'i18n/fr_BE.po',
    `    'i18n/test.pot',
    `    'i18n_extra/en.po',
    `    'i18n_extra/fr.po',
    `    'i18n_extra/nl_NL.po',
    `    'models/stuff.py',
    `    'models/stuff.pyc',
    `    'models/stuff.pyo',
    ` -  'models/__pycache__/stuff.cpython-35.opt-1.pyc',
    `    'static/src/some.js']

With this patch, we fix all those failing tests in integration environments.
2021-12-27 16:49:36 +02:00
Stéphane Bidoul (ACSONE) 483d52b080 module_auto_update: bump version 2021-12-27 16:49:36 +02:00
Stéphane Bidoul (ACSONE) 2980351947 module_auto_update: check a post condition 2021-12-27 16:49:36 +02:00
Benjamin Willig 07d7f01f9f [CHG] updated version number 2021-12-27 16:49:36 +02:00
Jairo Llopis 386633d339 [FIX] module_auto_update: Rollback cursor if param exists
Without this patch, when upgrading after you have stored the deprecated features parameter, the cursor became broken and no more migrations could happen. You got this error:

    Traceback (most recent call last):
    File "/usr/local/bin/odoo", line 6, in <module>
        exec(compile(open(__file__).read(), __file__, 'exec'))
    File "/opt/odoo/custom/src/odoo/odoo.py", line 160, in <module>
        main()
    File "/opt/odoo/custom/src/odoo/odoo.py", line 157, in main
        openerp.cli.main()
    File "/opt/odoo/custom/src/odoo/openerp/cli/command.py", line 64, in main
        o.run(args)
    File "/opt/odoo/custom/src/odoo/openerp/cli/shell.py", line 65, in run
        self.shell(openerp.tools.config['db_name'])
    File "/opt/odoo/custom/src/odoo/openerp/cli/shell.py", line 52, in shell
        registry = openerp.modules.registry.RegistryManager.get(dbname)
    File "/opt/odoo/custom/src/odoo/openerp/modules/registry.py", line 355, in get
        update_module)
    File "/opt/odoo/custom/src/odoo/openerp/modules/registry.py", line 386, in new
        openerp.modules.load_modules(registry._db, force_demo, status, update_module)
    File "/opt/odoo/custom/src/odoo/openerp/modules/loading.py", line 335, in load_modules
        force, status, report, loaded_modules, update_module)
    File "/opt/odoo/custom/src/odoo/openerp/modules/loading.py", line 239, in load_marked_modules
        loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
    File "/opt/odoo/custom/src/odoo/openerp/modules/loading.py", line 136, in load_module_graph
        registry.setup_models(cr, partial=True)
    File "/opt/odoo/custom/src/odoo/openerp/modules/registry.py", line 186, in setup_models
        cr.execute('select model, transient from ir_model where state=%s', ('manual',))
    File "/opt/odoo/custom/src/odoo/openerp/sql_db.py", line 154, in wrapper
        return f(self, *args, **kwargs)
    File "/opt/odoo/custom/src/odoo/openerp/sql_db.py", line 233, in execute
        res = self._obj.execute(query, params)
    psycopg2.InternalError: current transaction is aborted, commands ignored until end of transaction block

Now you can safely migrate, be that parameter pre-created or not.
2021-12-27 16:49:36 +02:00
Laurent Mignon (ACSONE) 0c1395a3d8 [FIX] Forward port module_auto_update refactoring from 9.0 2021-12-27 16:49:36 +02:00
Jairo Llopis d93d9c90bc [FIX] module_auto_update: Add .pyo sample file (#1205)
Without this patch, if your tests are run under a `PYTHONOPTIMIZE=2` precompiled environment, they'd fail with this error because a new `.pyo` file would be created.:

    FAIL: test_basic (openerp.addons.module_auto_update.tests.test_addon_hash.TestAddonHash)
    Traceback (most recent call last):
    `   File "/opt/odoo/auto/addons/module_auto_update/tests/test_addon_hash.py", line 41, in test_basic
    `     'static/src/some.js',
    ` AssertionError: Lists differ: ['README.rst', 'data/f1.xml', ... != ['README.rst', 'data/f1.xml', ...
    `
    ` First differing element 13:
    ` models/stuff.pyo
    ` static/src/some.js
    `
    ` First list contains 1 additional elements.
    ` First extra element 14:
    ` static/src/some.js
    `
    `   ['README.rst',
    `    'data/f1.xml',
    `    'data/f2.xml',
    `    'i18n/en.po',
    `    'i18n/en_US.po',
    `    'i18n/fr.po',
    `    'i18n/fr_BE.po',
    `    'i18n/test.pot',
    `    'i18n_extra/en.po',
    `    'i18n_extra/fr.po',
    `    'i18n_extra/nl_NL.po',
    `    'models/stuff.py',
    `    'models/stuff.pyc',
    ` -  'models/stuff.pyo',
    `    'static/src/some.js']
    Ran 3 tests in 0.005s
    FAILED

With this patch, the `.pyo` file is included, so tests will pass anywhere.
2021-12-27 16:49:36 +02:00
Jairo Llopis 3f81cc8906 [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.
2021-12-27 16:49:36 +02:00
Stéphane Bidoul (ACSONE) a1f71e9ad6 [REF] module_auto_update: Step 2, add new API
This code comes from the module_checksum_upgrade proposal
at https://github.com/OCA/server-tools/pull/1176.

* [ADD] module_checksum_upgrade

It provides the core mechanism of module_auto_update without
the cron nor any change to the standard upgrade mechanism.
Instead it provides an API on which module_auto_update can build,
as well as a method which can be called from a script to run
the upgrade of modules for which the checksum has changed.

* [IMP] refactor module_auto_update

Make it depend on module_checksum_upgrade which provides
the core mechanisms of managing the checksums. module_auto_update
makes it automatic.

* [IMP] module_checksum_upgrade: better exclusion mechanism

Ignore files based on exclude patterns.
Ignore uninstalled languages.
Better default for patterns to ignore (*.pyc,*.pyo,*.pot,static/*)

For better control on the hashing mechanism implement our own:
it's quite easy, and the checksumdir module used previously had
no test.

* [MIG] module_auto_update: adapt to new checksum mechanism

* [IMP] module_checksum_upgrade: raise in case of
 incomplete upgrade

* [IMP] module_checksum_upgrade: improve default exclusion
 pattern

* [IMP] module_checksum_upgrade: control translations
 overwrite

* [IMP] module_checksum_upgrade: one more test

* [IMP] module_checksum_upgrade: credits [ci skip]
2021-12-27 16:49:36 +02:00
Jairo Llopis 015c18004d [REF] module_auto_update: Step 1, move all deprecated stuff to deprecated files
- Files are clearly suffixed with `_deprecated` so we know those features have no support nor migrations.
- Views are removed, since updating from UI was too buggy to support it anymore.
2021-12-27 16:49:36 +02:00
OCA Transbot 20f6a9dfb4 OCA Transbot updated translations from Transifex 2021-12-27 16:49:36 +02:00
Jairo Llopis 4f351b283b [MIG] module_auto_update: Migrate to v11 2021-12-27 16:49:36 +02:00
Jairo Llopis a90b06492b [FIX][module_auto_update] Always store changes in lower graphs
The same problem that was fixed for the `base` addon in #948 happened with random addons that do not depend on `module_auto_update` (a.k.a. any addon) that Odoo decided to load before that one in the graph.

Now we always check for all addons if their state has changed, and make sure to trigger the udpate mechanism that stores the right value in `installed_checksum_dir` field.

If you installed and uninstalled the addon right away, you'd get a ProgrammingError saying that some columns exist no more. Checks are done now using `search_read`, which lets us limit the fields being fetched, and the environment is cleared to make sure nothing fails.

Also we now guess if this own addon has been uninstalled and skip further logic if so, given it would hit broken triggers otherwise as it did before.
2021-12-27 16:49:36 +02:00
Jairo Llopis ea9ae22d49 [FIX][module_auto_update] Record base addon checksum (#948) 2021-12-27 16:49:36 +02:00
Dave Lasley 3e868c0448 [FIX] module_auto_update: Don't compute upgrade on uninstall
* `button_uninstall` calls `get_module_list`, which subsequently forces module upgrades. Add a context validation to prevent that
* Add test for button_immediate_uninstall
* Mock commit for immediate uninstall
* Fix immediate uninstall test
* Switch nesting
* Bump module version
2021-12-27 16:49:36 +02:00
Jairo Llopis 2052967605 [REF][module_auto_update] Forward port v9 improvements
* Recompute dir hashes only when needed - By removing the recomputation from `update_list` we get faster CLI module upgrades and it only performs the autoupdate when using the autoupdate wizard or cron.
* Pass tests if addon is in readonly directory
* Set dependencies to upgrade

[FIX][module_auto_update] Pass tests if addon is in readonly directory

[FIX][module_auto_update] Set dependencies to upgrade
2021-12-27 16:49:36 +02:00
OCA Transbot 620eb86f92 OCA Transbot updated translations from Transifex 2021-12-27 16:49:36 +02:00
Brenton Hughes 890d8766e6 [ADD] module_auto_update: Create module (#882)
* [IMP] module_auto_update: Create new module
* Add checksum_dir and checksum_installed fields to ir.module.module
  * Add checksum_dir to compute current checksum of module directory
    in addons path
  * Add checksum_installed to store checksum of module directory
    when module was last installed or upgraded
* Use checksumdir Python library to compute module directory sha1
  hashes, ignoring pyc and pyo extensions
* Extend update_list method to compare modules' checksum_dir and
  checksum_installed, then change state of modules with differing
  checksums to 'to upgrade'
* Replace Apps/Updates menu item with menu item of same name, which
  updates apps list and displays tree view of ir.module.module
  records with state 'to upgrade'
* Extend create and write methods to store computed checksum_dir as
  checksum_installed during module installation and upgrade, and
  set checksum_installed to False on uninstall
* Use context to stop checksum_installed from being updated during
  upgrade/uninstall cancellation
* Add cron job to periodically check for module upgrades by
  comparing checksums, then perform any available upgrades
* Extend upgrade_module method (called by cron and 'Apply Scheduled
  Upgrades' menu item) to call update_list
* Add post_init_hook to store checksum_installed of existing
  modules
* Add test coverage

* [FIX] module_auto_update: Fix test broken by changes
* Use dummy module to test update_list method instead of
  module_auto_update
2021-12-27 16:49:36 +02:00
OCA-git-bot 351e4d88fd [ADD] setup.py 2021-12-20 07:53:42 +00:00
OCA-git-bot 7af8e27e59 [UPD] README.rst 2021-12-20 07:53:41 +00:00
OCA-git-bot 8e8a3ccf29 [UPD] addons table in README.md 2021-12-20 07:53:41 +00:00
oca-ci 857f7467e6 [UPD] Update base_cron_exclusion.pot 2021-12-20 07:51:43 +00:00
OCA-git-bot fb29f3bad3 Merge PR #2225 into 15.0
Signed-off-by LoisRForgeFlow
2021-12-20 07:50:00 +00:00
Ivàn Todorovich 588c799749 [MIG] base_view_inheritance_extension: Migration to 15.0
* Removed `list_add` and `list_remove`, they've been deprecated and
implemented in Odoo core since several versions ago.

* Removed `move`, as it has also already been implemented in core several
versions ago.

* Replaced `python_dict` by `update`, that performs an operation similar
to :meth:`dict.update`, but on the ast.Dict.
2021-12-13 17:16:38 -03:00
Ivàn Todorovich 76836d2e24 [IMP] base_view_inheritance_extension: pre-commit execution 2021-12-13 11:58:55 -03:00
OCA-git-bot 042a6baef4 base_view_inheritance_extension 14.0.1.1.0 2021-12-13 11:58:45 -03:00
OCA-git-bot ca8b5a7f1a [UPD] README.rst 2021-12-13 11:58:45 -03:00
Ivàn Todorovich 628cd9f6a6 [UPD] base_view_inheritance_extension: readme - deprecate list_add and list_remove 2021-12-13 11:58:45 -03:00
Ivàn Todorovich a362d72130 [IMP] base_view_inheritance_extension: real python_dict 2021-12-13 11:58:45 -03:00
OCA-git-bot 574bb61334 base_view_inheritance_extension 14.0.1.0.1 2021-12-13 11:58:45 -03:00
OCA-git-bot 11b443e8cc [UPD] README.rst 2021-12-13 11:58:45 -03:00
oca-travis 46099c73f2 [UPD] Update base_view_inheritance_extension.pot 2021-12-13 11:58:45 -03:00
Julien Coux 5f00f4b05c Fix apply inheritance specs on views (pre_locate) 2021-12-13 11:58:45 -03:00
Alexis de Lattre 8bc0f3e523 [MIG] base_view_inheritance_extension to v14 2021-12-13 11:58:45 -03:00
OCA-git-bot e84cd3a725 base_view_inheritance_extension 13.0.1.0.1 2021-12-13 11:58:45 -03:00
Carlos Lopez 1c1a9c4a8e FIX: add missing params on function apply_inheritance_specs 2021-12-13 11:58:45 -03:00
OCA Transbot b9ab5dfe92 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: server-tools-13.0/server-tools-13.0-base_view_inheritance_extension
Translate-URL: https://translation.odoo-community.org/projects/server-tools-13-0/server-tools-13-0-base_view_inheritance_extension/
2021-12-13 11:58:45 -03:00