Skip to content

Commit

Permalink
[MIG] website: mig 15 to 16 (#375)
Browse files Browse the repository at this point in the history
* [MIG] website: migrate 15 to 16

* [FIX] website: fix migrate

* [OU-ADD] website: BS4 to BS5 migration

* [FIX] website: Load the noupdate_changes

* [FIX] website: fix by comment

* Update openupgrade_scripts/scripts/website/16.0.1.0/pre-migration.py

* Update openupgrade_scripts/scripts/website/16.0.1.0/pre-migration.py

---------

Co-authored-by: nguyenvietlam0640 <[email protected]>
Co-authored-by: duongnguyen <[email protected]>
Co-authored-by: Roy Le <[email protected]>
  • Loading branch information
4 people authored Jul 20, 2023
1 parent 45a2859 commit 389047e
Show file tree
Hide file tree
Showing 5 changed files with 231 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ jobs:
sudo npm install -g less less-plugin-clean-css
pip install -q -r odoo/requirements.txt
pip install --ignore-installed \
git+https://github.com/OCA/openupgradelib.git@master
git+https://github.com/duong77476/openupgradelib.git@master_imp_boostrap4_to_5_transformation
# this is for v15 l10n_eg_edi_eta which crashes without it
pip install asn1crypto
- name: Test data
Expand Down
2 changes: 1 addition & 1 deletion docsource/modules150-160.rst
Original file line number Diff line number Diff line change
Expand Up @@ -800,7 +800,7 @@ Module coverage 15.0 -> 16.0
+-------------------------------------------------+----------------------+-------------------------------------------------+
| web_unsplash | Nothing to do | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
| website | | |
| website | Done | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
| website_blog | Nothing to do | |
+-------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from openupgradelib import openupgrade


@openupgrade.migrate()
def migrate(env, version):
openupgrade.load_data(env.cr, "website", "16.0.1.0/noupdate_changes.xml")
106 changes: 106 additions & 0 deletions openupgrade_scripts/scripts/website/16.0.1.0/pre-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
from itertools import chain

from openupgradelib import openupgrade
from openupgradelib.openupgrade_160 import convert_string_bootstrap_4to5

_xmlids_renames = [
(
"website.group_website_publisher",
"website.group_website_restricted_editor",
),
(
"website_sale.menu_reporting",
"website.menu_reporting",
),
]

# delete xml xpath for odoo add it again
_xmlids_delete = [
"website.website_configurator",
"website.website_menu",
]


def delete_constraint_website_visitor_partner_uniq(env):
openupgrade.delete_sql_constraint_safely(
env,
"website",
"website_visitor",
"partner_uniq",
)


def _fill_partner_id_if_null(env):
openupgrade.logged_query(
env.cr,
"""
UPDATE website_visitor v
SET partner_id = p.id
FROM res_partner p
WHERE v.partner_id IS NULL
AND length(v.access_token) != 32
AND p.id = CAST(v.access_token AS integer);
""",
)


def _fill_language_ids_if_null(env):
openupgrade.logged_query(
env.cr,
"""
INSERT INTO website_lang_rel (website_id, lang_id)
SELECT w.id, w.default_lang_id
FROM website w
WHERE NOT EXISTS (
SELECT 1
FROM website_lang_rel wlr
WHERE wlr.website_id = w.id
);
""",
)


def _fill_homepage_url(env):
openupgrade.logged_query(
env.cr,
"""
ALTER TABLE website
ADD COLUMN IF NOT EXISTS homepage_url CHARACTER VARYING
""",
)
openupgrade.logged_query(
env.cr,
"""
UPDATE website
SET homepage_url = website_page.url
FROM website_page
WHERE website_page.id = website.homepage_id
""",
)


def boostrap_5_migration(env):
"""Convert customized website views to Bootstrap 5."""
# Find views to convert
env.cr.execute(
"""
SELECT iuv.id FROM ir_ui_view iuv JOIN website w on w.id = iuv.website_id
WHERE iuv.type = 'qweb' AND iuv.website_id IS NOT NULL
"""
)
view_ids = list(chain.from_iterable(env.cr.fetchall()))
all_view_need_bs5_migration = env["ir.ui.view"].browse(view_ids)
for view in all_view_need_bs5_migration:
new_arch = convert_string_bootstrap_4to5(view.arch_db)
view.arch_db = new_arch


@openupgrade.migrate()
def migrate(env, version):
_fill_partner_id_if_null(env)
_fill_language_ids_if_null(env)
openupgrade.rename_xmlids(env.cr, _xmlids_renames)
openupgrade.delete_records_safely_by_xml_id(env, _xmlids_delete)
delete_constraint_website_visitor_partner_uniq(env)
boostrap_5_migration(env)
_fill_homepage_url(env)
117 changes: 117 additions & 0 deletions openupgrade_scripts/scripts/website/16.0.1.0/upgrade_analysis_work.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
---Models in module 'website'---
---Fields in module 'website'---
website / theme.website.menu / mega_menu_classes (char) : NEW
website / theme.website.menu / mega_menu_content (html) : NEW
website / theme.website.menu / use_main_menu_as_parent (boolean): NEW hasdefault: default
website / theme.website.page / footer_visible (boolean) : NEW hasdefault: default
website / theme.website.page / header_color (char) : NEW
website / theme.website.page / header_overlay (boolean) : NEW
website / theme.website.page / header_visible (boolean) : NEW hasdefault: default
website / theme.website.page / is_published (boolean) : NEW

# NOTHING TO DO

website / website / country_group_ids (many2many) : DEL relation: res.country.group
website / website / google_management_client_id (char): DEL
website / website / google_management_client_secret (char): DEL
website / website / homepage_id (many2one) : DEL relation: website.page
website / website / homepage_url (char) : NEW

# NOTHING TO DO

website / website / language_ids (many2many) : now required

# DONE: Fill language_ids if null

website / website / plausible_shared_key (char) : NEW
website / website / plausible_site (char) : NEW
website / website.menu / group_ids (many2many) : DEL relation: res.groups
website / website.page / cache_key_expr (char) : DEL
website / website.page / cache_time (integer) : DEL
website / website.visitor / _order : _order is now 'id DESC' ('last_connection_datetime DESC')
website / website.visitor / active (boolean) : DEL
website / website.visitor / name (char) : not stored anymore
website / website.visitor / name (char) : now related

# NOTHING TO DO

website / website.visitor / partner_id (many2one) : now a function

# DONE: Fill partner id if null

---XML records in module 'website'---
DEL ir.actions.act_url: website.start_configurator_act_url
NEW ir.actions.client: website.action_open_website_configurator
NEW ir.actions.client: website.website_configurator
NEW ir.actions.client: website.website_preview
NEW ir.actions.server: website.ir_actions_server_website_analytics
DEL ir.actions.server: website.ir_actions_server_website_google_analytics
NEW ir.asset: website.s_countdown_000_xml
NEW ir.asset: website.s_dynamic_snippet_000_xml
NEW ir.asset: website.s_dynamic_snippet_carousel_000_xml
NEW ir.asset: website.s_image_gallery_000_xml
NEW ir.asset: website.s_map_000_js
NEW ir.asset: website.s_process_steps_001_scss
NEW ir.asset: website.s_searchbar_000_xml
NEW ir.asset: website.s_social_media_000_scss
NEW ir.asset: website.s_website_form_xml
NEW ir.model.access: website.access_website_ir_ui_view_restricted_editor
DEL ir.model.access: website.access_website_ir_ui_view_publisher

# NOTHING TO DO

NEW ir.model.constraint: website.constraint_website_domain_unique
DEL ir.model.constraint: website.constraint_website_visitor_partner_uniq

# DONE: safely delete pre-migration

DEL ir.rule: website.website_menu (noupdate)

# DONE: safely delete in pre-migration

NEW ir.ui.menu: website.custom_menu_edit_menu
NEW ir.ui.menu: website.menu_ace_editor
NEW ir.ui.menu: website.menu_content
NEW ir.ui.menu: website.menu_current_page
NEW ir.ui.menu: website.menu_edit_menu
NEW ir.ui.menu: website.menu_optimize_seo
NEW ir.ui.menu: website.menu_page_properties

# NOTHING TO DO

NEW ir.ui.menu: website.menu_reporting [renamed from website_sale module]

# DONE: rename in pre-migration

NEW ir.ui.menu: website.menu_site
NEW ir.ui.menu: website.menu_website_analytics
NEW ir.ui.menu: website.menu_website_preview
DEL ir.ui.menu: website.menu_dashboard
DEL ir.ui.menu: website.menu_visitor_sub_menu
DEL ir.ui.menu: website.menu_website_google_analytics
NEW ir.ui.view: website.404_plausible
NEW ir.ui.view: website.iframefallback
NEW ir.ui.view: website.neutralize_ribbon
NEW ir.ui.view: website.res_config_settings_view_form_inherit_auth_signup
NEW ir.ui.view: website.s_process_steps_options
NEW ir.ui.view: website.s_social_media
NEW ir.ui.view: website.s_social_media_options
NEW ir.ui.view: website.website_page_properties_view_form
NEW ir.ui.view: website.website_pages_kanban_view
DEL ir.ui.view: website.compiled_assets_wysiwyg
DEL ir.ui.view: website.index_management
DEL ir.ui.view: website.list_website_pages
DEL ir.ui.view: website.one_page_line
DEL ir.ui.view: website.publish_short
DEL ir.ui.view: website.s_share_options
DEL ir.ui.view: website.snippet_options_header_brand
DEL ir.ui.view: website.user_navbar
DEL ir.ui.view: website.website_configurator
DEL ir.ui.view: website.website_publisher

# NOTHING TO DO

NEW res.groups: website.group_website_restricted_editor
DEL res.groups: website.group_website_publisher

# DONE: rename group in pre-migration

0 comments on commit 389047e

Please sign in to comment.