-
-
Notifications
You must be signed in to change notification settings - Fork 695
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #4427 from royle-viindoo/v17_mig_openupgrade_frame…
…work_base [MIG] openupgrade_framework, base v17
- Loading branch information
Showing
27 changed files
with
1,242 additions
and
4 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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,205 @@ | ||
===================== | ||
Openupgrade Framework | ||
===================== | ||
|
||
.. | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! This file is generated by oca-gen-addon-readme !! | ||
!! changes will be overwritten. !! | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! source digest: sha256:06d77ecf97625ec075fa31dde7f8f41bcf849fa13af0598f8c1de397348f2dfd | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
.. |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/licence-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/17.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-17-0/OpenUpgrade-17-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=17.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-block:: 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-block:: python | ||
# flake8: noqa | ||
# pylint: skip-file | ||
* When you want to change the code. add the following tags: | ||
|
||
For an addition: | ||
|
||
.. code-block:: python | ||
# <OpenUpgrade:ADD> | ||
some code... | ||
# </OpenUpgrade> | ||
For a change: | ||
|
||
.. code-block:: python | ||
# <OpenUpgrade:CHANGE> | ||
some code... | ||
# </OpenUpgrade> | ||
For a removal: | ||
|
||
.. code-block:: 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:%2017.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 | ||
|
||
Contributors | ||
~~~~~~~~~~~~ | ||
|
||
* Stefan Rijnhart <[email protected]> | ||
* 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 | ||
|
||
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__: | ||
|
||
|maintainer-legalsylvain| |maintainer-StefanRijnhart| | ||
|
||
This module is part of the `OCA/OpenUpgrade <https://github.com/OCA/OpenUpgrade/tree/17.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 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,16 @@ | ||
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: | ||
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") |
This file contains 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 integrate 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": "17.0.1.0.0", | ||
"license": "AGPL-3", | ||
"depends": ["base"], | ||
"images": ["static/description/banner.jpg"], | ||
"external_dependencies": {"python": ["openupgradelib"]}, | ||
"installable": True, | ||
} |
This file contains 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 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, api, models, modules |
This file contains 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 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 |
2 changes: 2 additions & 0 deletions
2
openupgrade_framework/odoo_patch/odoo/addons/base/models/__init__.py
This file contains 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,2 @@ | ||
from . import ir_model | ||
from . import ir_ui_view |
89 changes: 89 additions & 0 deletions
89
openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_model.py
This file contains 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,89 @@ | ||
# 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, | ||
IrModelData, | ||
IrModelFields, | ||
IrModelRelation, | ||
IrModelSelection, | ||
) | ||
|
||
|
||
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, | ||
"Unknown", | ||
False, | ||
False, | ||
"Not dropping the table or view of model %s", | ||
model.model, | ||
) | ||
|
||
|
||
IrModel._drop_table = _drop_table | ||
|
||
|
||
def _drop_column(self): | ||
"""Never drop columns""" | ||
for field in self: | ||
if field.name in models.MAGIC_COLUMNS: | ||
continue | ||
openupgrade.message( | ||
self.env.cr, | ||
"Unknown", | ||
False, | ||
False, | ||
"Not dropping the column of field %s of model %s", | ||
field.name, | ||
field.model, | ||
) | ||
continue | ||
|
||
|
||
IrModelFields._drop_column = _drop_column | ||
|
||
|
||
@api.model | ||
def _module_data_uninstall(self, modules_to_remove): | ||
"""To pass context, that the patch in __getitem__ of api.Environment uses""" | ||
patched_self = self.with_context(**{"missing_model": True}) | ||
return IrModelData._module_data_uninstall._original_method( | ||
patched_self, modules_to_remove | ||
) | ||
|
||
|
||
_module_data_uninstall._original_method = IrModelData._module_data_uninstall | ||
IrModelData._module_data_uninstall = _module_data_uninstall | ||
|
||
|
||
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 | ||
|
||
|
||
def _process_ondelete(self): | ||
"""Don't break on missing models when deleting their selection fields""" | ||
to_process = self.browse([]) | ||
for selection in self: | ||
try: | ||
self.env[selection.field_id.model] # pylint: disable=pointless-statement | ||
to_process += selection | ||
except KeyError: | ||
continue | ||
return IrModelSelection._process_ondelete._original_method(to_process) | ||
|
||
|
||
_process_ondelete._original_method = IrModelSelection._process_ondelete | ||
IrModelSelection._process_ondelete = _process_ondelete |
Oops, something went wrong.