From 0241bc115b70e58a8637fd10d6f90259fc3e7d49 Mon Sep 17 00:00:00 2001 From: Giovanni Francesco Capalbo Date: Wed, 26 Jul 2017 10:14:46 +0200 Subject: [PATCH 1/4] Add website_sale migration --- .../migrations/10.0.1.0/post-migration.py | 27 +++++++++++++++++++ .../migrations/10.0.1.0/pre-migration.py | 12 +++++++++ odoo/openupgrade/doc/source/modules90-100.rst | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 addons/website_sale/migrations/10.0.1.0/post-migration.py create mode 100644 addons/website_sale/migrations/10.0.1.0/pre-migration.py diff --git a/addons/website_sale/migrations/10.0.1.0/post-migration.py b/addons/website_sale/migrations/10.0.1.0/post-migration.py new file mode 100644 index 000000000000..2c0be5576f31 --- /dev/null +++ b/addons/website_sale/migrations/10.0.1.0/post-migration.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# © 2017 Therp BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(env, version): + cr = env.cr + pl_model = env['product.pricelist'] + sql = """select pricelist_id, website_id, selectable from + website_pricelist_openupgrade_10""" + cr.execute(sql) + pricelists = [] + for pricelist_id, website_id, selectable in cr.fetchall(): + pl_model.search([('id', '=', pricelist_id)]).write({ + 'website_id': website_id, + 'selectable': selectable + }) + pricelists.append(pricelist_id) + # all remaining pricelists will be assigned to default + for pricelist in pl_model.search([('id', 'not in', pricelists)]): + pricelist.write({'website_id': pricelist._default_website().id}) + # now that all pricelists have a their corresponding website_id + # and selectable drop support table + sql = "drop table website_pricelist_openupgrade_10" + cr.execute(sql) diff --git a/addons/website_sale/migrations/10.0.1.0/pre-migration.py b/addons/website_sale/migrations/10.0.1.0/pre-migration.py new file mode 100644 index 000000000000..3ef6bcd15dd1 --- /dev/null +++ b/addons/website_sale/migrations/10.0.1.0/pre-migration.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# © 2017 Therp BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from openupgradelib import openupgrade + + +@openupgrade.migrate(use_env=False) +def migrate(cr, version): + # keeping info in website pricelist table that would be dropped + sql = """create table website_pricelist_openupgrade_10 as select * from + website_pricelist""" + cr.execute(sql) diff --git a/odoo/openupgrade/doc/source/modules90-100.rst b/odoo/openupgrade/doc/source/modules90-100.rst index ea6c19ce2427..cd1fd266e8f0 100644 --- a/odoo/openupgrade/doc/source/modules90-100.rst +++ b/odoo/openupgrade/doc/source/modules90-100.rst @@ -573,7 +573,7 @@ missing in the new release are marked with |del|. +-----------------------------------+-----------------------------------+ |website_rating_project_issue | | +-----------------------------------+-----------------------------------+ -|website_sale | | +|website_sale | Done | +-----------------------------------+-----------------------------------+ |website_sale_delivery | | +-----------------------------------+-----------------------------------+ From 7ae4728040924e9a9a272f9e30d0bf63c65e72e8 Mon Sep 17 00:00:00 2001 From: Giovanni Francesco Capalbo Date: Thu, 27 Jul 2017 12:45:58 +0200 Subject: [PATCH 2/4] use a query to update from legacy column, keep the ORM loop for non legacy column pricelists and assign default website to them --- .../10.0.1.0/openupgrade_analysis_work.txt | 6 +++-- .../migrations/10.0.1.0/post-migration.py | 26 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/addons/website_sale/migrations/10.0.1.0/openupgrade_analysis_work.txt b/addons/website_sale/migrations/10.0.1.0/openupgrade_analysis_work.txt index 76bd779a31aa..685143f39519 100644 --- a/addons/website_sale/migrations/10.0.1.0/openupgrade_analysis_work.txt +++ b/addons/website_sale/migrations/10.0.1.0/openupgrade_analysis_work.txt @@ -11,7 +11,9 @@ website_sale / product.image / product_tmpl_id (many2one) : NEW re website_sale / product.pricelist / selectable (boolean) : NEW +# Imported values from old website_pricelist.selectable model website_sale / product.pricelist / website_id (many2one) : NEW relation: website +# imported values from old website_pricelist_ids # TODO: Add the default website website_sale / product.template / availability (selection) : NEW selection_keys: ['empty', 'in_stock', 'warning'] @@ -20,10 +22,10 @@ website_sale / product.template / product_image_ids (one2many) : NEW re # NOTHING TO DO website_sale / res.country.group / website_pricelist_ids (many2many): DEL relation: website_pricelist -# NOTHING TO DO +# country is now taken out of this model and is managed on the pricelist itself, nothing to do website_sale / website / website_pricelist_ids (one2many): DEL relation: website_pricelist -# NOTHING TO DO +# now is website_id on the pricelist. ---XML records in module 'website_sale'--- NEW crm.team: sales_team.salesteam_website_sales diff --git a/addons/website_sale/migrations/10.0.1.0/post-migration.py b/addons/website_sale/migrations/10.0.1.0/post-migration.py index 2c0be5576f31..939b18f9807c 100644 --- a/addons/website_sale/migrations/10.0.1.0/post-migration.py +++ b/addons/website_sale/migrations/10.0.1.0/post-migration.py @@ -8,20 +8,18 @@ def migrate(env, version): cr = env.cr pl_model = env['product.pricelist'] - sql = """select pricelist_id, website_id, selectable from - website_pricelist_openupgrade_10""" + sql = """ + UPDATE product_pricelist pp + SET website_id = wp.id, + selectable = wp.selectable + FROM website_pricelist_openupgrade_10 wp + WHERE wp.pricelist_id = pp.id + """ cr.execute(sql) - pricelists = [] - for pricelist_id, website_id, selectable in cr.fetchall(): - pl_model.search([('id', '=', pricelist_id)]).write({ - 'website_id': website_id, - 'selectable': selectable - }) - pricelists.append(pricelist_id) # all remaining pricelists will be assigned to default - for pricelist in pl_model.search([('id', 'not in', pricelists)]): - pricelist.write({'website_id': pricelist._default_website().id}) - # now that all pricelists have a their corresponding website_id - # and selectable drop support table - sql = "drop table website_pricelist_openupgrade_10" + sql = """select pricelist_id from + website_pricelist_openupgrade_10""" cr.execute(sql) + pricelist_ids = cr.fetchall() + for pricelist in pl_model.search([('id', 'not in', pricelist_ids)]): + pricelist.write({'website_id': pricelist._default_website().id}) From 26faa71ab591e2070b21fa5654449fee33e18b79 Mon Sep 17 00:00:00 2001 From: Giovanni Francesco Capalbo Date: Thu, 27 Jul 2017 18:19:34 +0200 Subject: [PATCH 3/4] loggedquery --- addons/website_sale/migrations/10.0.1.0/post-migration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website_sale/migrations/10.0.1.0/post-migration.py b/addons/website_sale/migrations/10.0.1.0/post-migration.py index 939b18f9807c..028d98e98aed 100644 --- a/addons/website_sale/migrations/10.0.1.0/post-migration.py +++ b/addons/website_sale/migrations/10.0.1.0/post-migration.py @@ -15,7 +15,7 @@ def migrate(env, version): FROM website_pricelist_openupgrade_10 wp WHERE wp.pricelist_id = pp.id """ - cr.execute(sql) + openupgrade.logged_query(cr, sql) # all remaining pricelists will be assigned to default sql = """select pricelist_id from website_pricelist_openupgrade_10""" From d5a2cd6c865c033ede3ff67eb8116a468b1fe339 Mon Sep 17 00:00:00 2001 From: Giovanni Francesco Capalbo Date: Fri, 28 Jul 2017 10:03:26 +0200 Subject: [PATCH 4/4] Query correction --- addons/website_sale/migrations/10.0.1.0/post-migration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website_sale/migrations/10.0.1.0/post-migration.py b/addons/website_sale/migrations/10.0.1.0/post-migration.py index 028d98e98aed..658be928edab 100644 --- a/addons/website_sale/migrations/10.0.1.0/post-migration.py +++ b/addons/website_sale/migrations/10.0.1.0/post-migration.py @@ -10,7 +10,7 @@ def migrate(env, version): pl_model = env['product.pricelist'] sql = """ UPDATE product_pricelist pp - SET website_id = wp.id, + SET website_id = wp.website_id, selectable = wp.selectable FROM website_pricelist_openupgrade_10 wp WHERE wp.pricelist_id = pp.id