Repository navigation
[20.0][MIG] openupgrade_framework #6046
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
hbrunn
wants to merge
70
commits into
OCA:20.0
Choose a base branch
from
hbrunn:20.0-mig-openupgrade_framework
base: 20.0
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+1,318
−0
Open
Changes from all commits
Commits
Show all changes
70 commits
Select commit
Hold shift + click to select a range
a3b4bab
[INIT] Full refactor of the OpenUpgrade project
legalsylvain 979a031
[DEL] openupgrade_records -> server-tools/14.0
StefanRijnhart e6618ab
[RFR] OpenUpgrade framework patches
StefanRijnhart 56e072f
[UPD] README.rst
OCA-git-bot 3ff6271
[ADD] icon.png
OCA-git-bot 7ea4374
[FIX] _logger.warn -> _logger.warning
MiquelRForgeFlow 4a26d43
[FIX] doc: base must be included in --load parameter
MiquelRForgeFlow 6c13a6a
[UPD] README.rst
OCA-git-bot 7f9a67a
[FIX] base: Don't fail uninstalling when missing models
MiquelRForgeFlow 029dcd1
[FIX] openupgrade_framework: _drop_column was in wrong class
MiquelRForgeFlow 63c68fa
[DOC] add banner file, to make this module more visible on the app st…
legalsylvain d657fbc
[UPD] README.rst
OCA-git-bot dab9fb5
[FIX] Don't break on missing model in selection _process_ondelete
StefanRijnhart 1e69c87
[REF] Add maintainers
legalsylvain b2a9590
[UPD] README.rst
OCA-git-bot 73106ec
[IMP] openupgrade_framework: avoid AttributeError in view validation
MiquelRForgeFlow 9c525c0
[MIG][15.0] openupgrade_framework
legalsylvain 94a6f41
[REF] adapt framework, due to renaming handle_view_error into _raise_…
legalsylvain 190e77e
fixup! [WIP][15.0] base module
legalsylvain 1ff2997
fixup! fixup! [WIP][15.0] base module
legalsylvain 20f33bf
Update method _postprocess_view of ir_ui_view by removing the input a…
jcdrubay 7092c7b
[MIG] remove the odoo_patch on function _postprocess_view which becam…
jcdrubay 202a30a
Adjustements for code style
jcdrubay 51af030
[UPD] README.rst
OCA-git-bot 0c15d32
[OU-FIX] Migration scripts were not run during install
StefanRijnhart ea663ff
[IMP] openupgrade_framework: to not crash, simply not deactivating the
royle-vietnam 35aee25
[IMP] openupgrade_framework: add environ parameter to force demo
MiquelRForgeFlow fbf0aae
[UPD] README.rst
OCA-git-bot dae2d3d
[IMP] base: override to not raise an exception
royle-vietnam 78bf1ef
[FIX] openupgrade_framework: Proper module dependency resolution
pedrobaeza d1a5b49
[FIX] framework: monkeypatch needs to patch original method
MiquelRForgeFlow 12c2a35
[FIX] framework: monkeypatch needs to patch original method (fixup)
MiquelRForgeFlow ef7b593
[MIG] openupgrade_framework v16
hbrunn f961683
[ADD] implement tests of migrations
hbrunn d06814a
[FIX] Add openupgradelib dependencies in manifest files
legalsylvain 791cfe6
[UPD] README.rst
OCA-git-bot 74d98c8
[OU-FIX] don't fail when there's an unknown field in a view
hbrunn 4fc77e6
[IMP] openupgrade_framework: pre-commit auto fixes and enable
royle-vietnam 02a6ab7
[FIX] odoo_patch: don't raise or log exceptions in view validation
royle-vietnam e7ac198
[MIG] openupgrade_framework v17
daiduongnguyen-odoo 1ff6d34
[UPD] README.rst
OCA-git-bot e057cf3
[IMP] openupgrade_framework: pre-commit stuff
chienandalu 0e10f66
[UPD] README.rst
OCA-git-bot 928a287
[OU-ADD] enable tests, add decorator to make them convenient to use
hbrunn ae5412f
[MIG] openupgrade_framework: Migration to 18.0
hbrunn 4cf0174
[OU-ADD] exclude analytic 1.2 migration
hbrunn 3c835b6
[BOT] post-merge updates
OCA-git-bot 801ffde
[IMP] openupgrade_framework: install newly available auto_install addons
hbrunn 53a0fcc
[FIX] openupgrade_framework: manipulate versions to actually run scripts
hbrunn 984f9e5
[FIX] openupgrade_framework: force running pre scripts on installation
hbrunn cbd9cb3
[BOT] post-merge updates
OCA-git-bot fac8cb1
Revert "[FIX] openupgrade_framework: manipulate versions to actually …
pedrobaeza 365744d
[FIX] openupgrade_framework: fix return value for update_list method …
kafai-lam 9791ef8
[BOT] post-merge updates
OCA-git-bot 0424110
[FIX] openupgrade_framework: _process_ondelete skip fields without at…
zurbaran e892a0c
[FIX] openupgrade_framework: Add decorator for method update_list()
quoc-pn 193534f
[BOT] post-merge updates
OCA-git-bot dfe9b56
[MIG] openupgrade_framework to v19
hbrunn 15b8106
[IMP] add tests for openupgrade_framework
hbrunn 1117355
[FIX] don't set install_filename when loading views from openupgrade_…
hbrunn 5fb3144
[FIX]openupgrade_framework: Fix Nonetype Error when install_filenmae …
javierjcf d713b1a
[FIX] openupgrade_framework: set upgrade_path only if it exists
hbrunn 2d9195f
[UPD] README.rst
OCA-git-bot e662bd1
[IMP] openupgrade_framework: minor things
MiquelRForgeFlow 10f253d
[MIG] openupgrade_framework to v20
hbrunn 032dd7c
[IMP] openupgrade_framework: log module a column/table would be dropp…
hbrunn f233761
[IMP] openupgrade_framework: defuse ir.model#_unlink_related_attachments
hbrunn 68c8d39
[FIX] openupgrade_framework: use cr.savepoint in BaseModel.unlink patch
hbrunn 7813281
[IMP] openupgrade_framework: filter for country_ids
hbrunn 229928f
[IMP] openupgrade_framework: disable view validation entirely
hbrunn File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,214 @@ | ||
| .. image:: https://odoo-community.org/readme-banner-image | ||
| :target: https://odoo-community.org/get-involved?utm_source=readme | ||
| :alt: Odoo Community Association | ||
|
|
||
| ===================== | ||
| Openupgrade Framework | ||
| ===================== | ||
|
|
||
| .. | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| !! This file is generated by oca-gen-addon-readme !! | ||
| !! changes will be overwritten. !! | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| !! source digest: sha256:5798eba54677737dfb52eec94d10de67ba298ebfdda05d8173dc4a802c8be38e | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
|
|
||
| .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png | ||
| :target: https://odoo-community.org/page/development-status | ||
| :alt: Beta | ||
| .. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png | ||
| :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html | ||
| :alt: License: AGPL-3 | ||
| .. |badge3| image:: https://img.shields.io/badge/github-OCA%2FOpenUpgrade-lightgray.png?logo=github | ||
| :target: https://github.com/OCA/OpenUpgrade/tree/20.0/openupgrade_framework | ||
| :alt: OCA/OpenUpgrade | ||
| .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png | ||
| :target: https://translation.odoo-community.org/projects/OpenUpgrade-20-0/OpenUpgrade-20-0-openupgrade_framework | ||
| :alt: Translate me on Weblate | ||
| .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png | ||
| :target: https://runboat.odoo-community.org/builds?repo=OCA/OpenUpgrade&target_branch=20.0 | ||
| :alt: Try me on Runboat | ||
|
|
||
| |badge1| |badge2| |badge3| |badge4| |badge5| | ||
|
|
||
| This module is a technical module that contains a number of | ||
| monkeypatches to improve the behaviour of Odoo when migrating your | ||
| database using the OpenUpgrade migration scripts: | ||
|
|
||
| - Prevent dropping columns or tables in the database when fields or | ||
| models are obsoleted in the Odoo data model of the target release. | ||
| After the migration, you can review and delete unused database tables | ||
| and columns using database_cleanup. See | ||
| https://odoo-community.org/shop/product/database-cleanup-918 | ||
| - When data records are deleted during the migration (such as views or | ||
| other system records), this is done in a secure mode. If the deletion | ||
| fails because of some unforeseen dependency, the deletion will be | ||
| cancelled and a message is logged, after which the migration | ||
| continues. | ||
| - Prevent a number of log messages that do not apply when using | ||
| OpenUpgrade. | ||
| - Suppress log messages about failed view validation, which are to be | ||
| expected during a migration. | ||
| - Run migration scripts for modules that are installed as new | ||
| dependencies of upgraded modules (when there are such scripts for | ||
| those particular modules) | ||
| - Production databases generated with demo data, will be transformed to | ||
| non-demo ones. If you want to avoid that, you have to pass through the | ||
| environment variable OPENUPGRADE_USE_DEMO, the value "yes". | ||
|
|
||
| For detailed documentation see: | ||
|
|
||
| - https://github.com/OCA/OpenUpgrade/ | ||
| - https://oca.github.io/OpenUpgrade | ||
|
|
||
| **Table of contents** | ||
|
|
||
| .. contents:: | ||
| :local: | ||
|
|
||
| Installation | ||
| ============ | ||
|
|
||
| This module does not need to be installed on a database. It simply needs | ||
| to be available via your ``addons-path``. | ||
|
|
||
| Configuration | ||
| ============= | ||
|
|
||
| - call your odoo instance with the option | ||
| ``--load=base,web,openupgrade_framework`` | ||
|
|
||
| or | ||
|
|
||
| - add the key to your configuration file: | ||
|
|
||
| .. code:: shell | ||
|
|
||
| [options] | ||
| server_wide_modules = web,openupgrade_framework | ||
|
|
||
| When you load the module in either way of these ways, and you have the | ||
| openupgrade_scripts module in your addons path available, the | ||
| --upgrade-path option of Odoo will be set automatically to the location | ||
| of the OpenUpgrade migration scripts. | ||
|
|
||
| Development | ||
| =========== | ||
|
|
||
| The odoo_patch folder contains python files in a tree that mimicks the | ||
| folder tree of the Odoo project. It contains a number of monkey patches | ||
| to improve the migration of an Odoo database between two major versions. | ||
|
|
||
| So far, we are able to make everything work without overwriting large | ||
| blocks of code, but if larger patches need to be added, please use the | ||
| method described below: | ||
|
|
||
| To see the patches added, you can use ``meld`` tools: | ||
|
|
||
| ``meld PATH_TO_ODOO_FOLDER/odoo/ PATH_TO_OPENUPGRADE_FRAMEWORK_MODULE/odoo_patch`` | ||
|
|
||
| To make more easy the diff analysis : | ||
|
|
||
| - Make sure the python files has the same path as the original one. | ||
| - Keep the same indentation as the original file. (using ``if True:`` if | ||
| required) | ||
| - Add the following two lines at the beginning of your file, to avoid | ||
| flake8 / pylint errors | ||
|
|
||
| .. code:: python | ||
|
|
||
| # flake8: noqa | ||
| # pylint: skip-file | ||
|
|
||
| - When you want to change the code. add the following tags: | ||
|
|
||
| For an addition: | ||
|
|
||
| .. code:: python | ||
|
|
||
| # <OpenUpgrade:ADD> | ||
| some code... | ||
| # </OpenUpgrade> | ||
|
|
||
| For a change: | ||
|
|
||
| .. code:: python | ||
|
|
||
| # <OpenUpgrade:CHANGE> | ||
| some code... | ||
| # </OpenUpgrade> | ||
|
|
||
| For a removal: | ||
|
|
||
| .. code:: python | ||
|
|
||
| # <OpenUpgrade:REMOVE> | ||
| # Comment the code, instead of removing it. | ||
| # </OpenUpgrade> | ||
|
|
||
| Bug Tracker | ||
| =========== | ||
|
|
||
| Bugs are tracked on `GitHub Issues <https://github.com/OCA/OpenUpgrade/issues>`_. | ||
| In case of trouble, please check there if your issue has already been reported. | ||
| If you spotted it first, help us to smash it by providing a detailed and welcomed | ||
| `feedback <https://github.com/OCA/OpenUpgrade/issues/new?body=module:%20openupgrade_framework%0Aversion:%2020.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
|
|
||
| Do not contact contributors directly about support or help with technical issues. | ||
|
|
||
| Credits | ||
| ======= | ||
|
|
||
| Authors | ||
| ------- | ||
|
|
||
| * Therp BV | ||
| * Opener B.V. | ||
| * GRAP | ||
| * Hunki Enterprises BV | ||
|
|
||
| Contributors | ||
| ------------ | ||
|
|
||
| - Stefan Rijnhart <stefan@opener.amsterdam> | ||
| - Sylvain LE GAL <https://twitter.com/legalsylvain> | ||
|
|
||
| Other credits | ||
| ------------- | ||
|
|
||
| Many developers have contributed to the OpenUpgrade framework in its | ||
| previous incarnation. Their original contributions may no longer needed, | ||
| or they are no longer recognizable in their current form but OpenUpgrade | ||
| would not have existed at this point without them. | ||
|
|
||
| Maintainers | ||
| ----------- | ||
|
|
||
| This module is maintained by the OCA. | ||
|
|
||
| .. image:: https://odoo-community.org/logo.png | ||
| :alt: Odoo Community Association | ||
| :target: https://odoo-community.org | ||
|
|
||
| OCA, or the Odoo Community Association, is a nonprofit organization whose | ||
| mission is to support the collaborative development of Odoo features and | ||
| promote its widespread use. | ||
|
|
||
| .. |maintainer-legalsylvain| image:: https://github.com/legalsylvain.png?size=40px | ||
| :target: https://github.com/legalsylvain | ||
| :alt: legalsylvain | ||
| .. |maintainer-StefanRijnhart| image:: https://github.com/StefanRijnhart.png?size=40px | ||
| :target: https://github.com/StefanRijnhart | ||
| :alt: StefanRijnhart | ||
| .. |maintainer-hbrunn| image:: https://github.com/hbrunn.png?size=40px | ||
| :target: https://github.com/hbrunn | ||
| :alt: hbrunn | ||
|
|
||
| Current `maintainers <https://odoo-community.org/page/maintainer-role>`__: | ||
|
|
||
| |maintainer-legalsylvain| |maintainer-StefanRijnhart| |maintainer-hbrunn| | ||
|
|
||
| This module is part of the `OCA/OpenUpgrade <https://github.com/OCA/OpenUpgrade/tree/20.0/openupgrade_framework>`_ project on GitHub. | ||
|
|
||
| You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| import logging | ||
| import os | ||
|
|
||
| from odoo.modules import get_module_path | ||
| from odoo.tools import config | ||
|
|
||
| from . import odoo_patch | ||
|
|
||
| if not config.get("upgrade_path"): | ||
| path = get_module_path("openupgrade_scripts", display_warning=False) | ||
| if path and os.path.isdir(os.path.join(path, "scripts")): | ||
| logging.getLogger(__name__).info( | ||
| "Setting upgrade_path to the scripts directory inside the module " | ||
| "location of openupgrade_scripts" | ||
| ) | ||
| config["upgrade_path"] = os.path.join(path, "scripts") | ||
|
|
||
|
|
||
| def openupgrade_test(cls): | ||
| """ | ||
| Set attributes on a test class necessary for the test framework | ||
| Use as decorator on test classes in openupgrade_scripts/scripts/*/tests/test_*.py | ||
| """ | ||
| tags = getattr(cls, "test_tags", None) or set() | ||
| if "openupgrade" not in tags: | ||
| tags.add("openupgrade") | ||
| if not any(t.endswith("_install") for t in tags): | ||
| tags.add("at_install") | ||
| cls.test_tags = tags | ||
| cls.test_module = cls.__module__.split(".")[2] | ||
| cls.test_class = cls.__name__ | ||
| cls.test_sequence = 0 | ||
| return cls |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # Copyright Odoo Community Association (OCA) | ||
| # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). | ||
| { | ||
| "name": "Openupgrade Framework", | ||
| "summary": "Module to add in the server_wide_modules " | ||
| "option to make upgrades between two major revisions.", | ||
| "author": "Odoo Community Association (OCA), Therp BV, Opener B.V., GRAP, " | ||
| "Hunki Enterprises BV", | ||
| "maintainers": ["legalsylvain", "StefanRijnhart", "hbrunn"], | ||
| "website": "https://github.com/OCA/OpenUpgrade", | ||
| "category": "Migration", | ||
| "version": "20.0.1.0.0", | ||
| "license": "AGPL-3", | ||
| "depends": ["base"], | ||
| "images": ["static/description/banner.jpg"], | ||
| "external_dependencies": {"python": ["openupgradelib"]}, | ||
| "installable": True, | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| from . import odoo |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| from . import addons, modules, orm |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| from . import base |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| from . import models |
3 changes: 3 additions & 0 deletions
3
openupgrade_framework/odoo_patch/odoo/addons/base/models/__init__.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| from . import ir_model | ||
| from . import ir_module | ||
| from . import ir_ui_view |
75 changes: 75 additions & 0 deletions
75
openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_model.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| # Copyright Odoo Community Association (OCA) | ||
| # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). | ||
| from openupgradelib import openupgrade | ||
|
|
||
| from odoo import api, models | ||
|
|
||
| from odoo.addons.base.models.ir_model import ( | ||
| IrModel, | ||
| IrModelFields, | ||
| IrModelRelation, | ||
| ) | ||
|
|
||
|
|
||
| def _drop_table(self): | ||
| """Never drop tables""" | ||
| for model in self: | ||
| if self.env.get(model.model) is not None: | ||
| openupgrade.message( | ||
| self.env.cr, | ||
| self.env.context.get("module", "Unknown"), | ||
| False, | ||
| False, | ||
| "Not dropping the table or view of model %s", | ||
| model.model, | ||
| ) | ||
|
|
||
|
|
||
| IrModel._drop_table = _drop_table | ||
|
|
||
|
|
||
| @api.ondelete(at_uninstall=False) | ||
| def _unlink_related_attachments(self): | ||
| """Never delete attachments (incl. binary field data) of removed models""" | ||
| for model in self: | ||
| openupgrade.message( | ||
| self.env.cr, | ||
| self.env.context.get("module", "Unknown"), | ||
| False, | ||
| False, | ||
| "Not deleting the attachments of model %s", | ||
| model.model, | ||
| ) | ||
|
|
||
|
|
||
| IrModel._unlink_related_attachments = _unlink_related_attachments | ||
|
|
||
|
|
||
| def _drop_column(self): | ||
| """Never drop columns""" | ||
| for field in self: | ||
| if field.name in models.MAGIC_COLUMNS: | ||
| continue | ||
| openupgrade.message( | ||
| self.env.cr, | ||
| self.env.context.get("module", "Unknown"), | ||
| False, | ||
| False, | ||
| "Not dropping the column of field %s of model %s", | ||
| field.name, | ||
| field.model, | ||
| ) | ||
| continue | ||
|
|
||
|
|
||
| IrModelFields._drop_column = _drop_column | ||
|
|
||
|
|
||
| def _module_data_uninstall(self): | ||
| """Don't delete many2many relation tables. Only unlink the | ||
| ir.model.relation record itself. | ||
| """ | ||
| self.unlink() | ||
|
|
||
|
|
||
| IrModelRelation._module_data_uninstall = _module_data_uninstall | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.