Skip to content
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

[MIG][16.0]website: mig 15 to 16 #375

Merged
merged 7 commits into from
Jul 20, 2023
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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")
108 changes: 108 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,108 @@
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 = (
SELECT 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
"""
)
Comment on lines +85 to +90
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@duyquyen96 sao lại chỉ sửa mỗi qweb? form view vẫn có thể dùng class cũ và vẫn cần convert mà?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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