-
-
Notifications
You must be signed in to change notification settings - Fork 699
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d9f6169
commit 805a748
Showing
3 changed files
with
708 additions
and
0 deletions.
There are no files selected for viewing
81 changes: 81 additions & 0 deletions
81
openupgrade_scripts/scripts/mail/17.0.1.15/post-migration.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,81 @@ | ||
# Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo) | ||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). | ||
|
||
from openupgradelib import openupgrade | ||
|
||
_deleted_xml_records = [ | ||
"mail.ir_rule_mail_channel_member_group_system", | ||
"mail.ir_rule_mail_channel_member_group_user", | ||
"mail.mail_channel_admin", | ||
"mail.mail_channel_rule", | ||
"mail.channel_all_employees", | ||
"mail.channel_member_general_channel_for_admin", | ||
] | ||
|
||
|
||
def _fill_res_company_alias_domain_id(env): | ||
icp = env["ir.config_parameter"] | ||
|
||
domain = icp.get_param("mail.catchall.domain") | ||
if domain: | ||
alias_domain = env["mail.alias.domain"].create( | ||
{ | ||
"bounce_alias": icp.get_param("mail.bounce.alias") or "bounce", | ||
"catchall_alias": icp.get_param("mail.catchall.alias") or "catchall", | ||
"default_from": icp.get_param("mail.default.from") or "notifications", | ||
"name": domain, | ||
} | ||
) | ||
companies = env["res.company"].with_context(active_test=False).search([]) | ||
companies.write({"alias_domain_id": alias_domain.id}) | ||
|
||
|
||
def _mail_alias_fill_alias_full_name(env): | ||
# Because we fill same alias domain for every company so only need one here | ||
company = env["res.company"].search([], limit=1) | ||
if company.alias_domain_id: | ||
openupgrade.logged_query( | ||
env.cr, | ||
f""" | ||
UPDATE mail_alias | ||
SET alias_domain_id = {company.alias_domain_id.id}, | ||
alias_full_name = CASE | ||
WHEN alias_name IS NOT NULL | ||
THEN alias_name || '@' || '{company.alias_domain_id.name}' | ||
ELSE NULL | ||
END | ||
""", | ||
) | ||
else: | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
UPDATE mail_alias | ||
SET alias_full_name = CASE | ||
WHEN alias_name IS NOT NULL THEN alias_name | ||
ELSE NULL | ||
END | ||
""", | ||
) | ||
|
||
|
||
def _mail_template_convert_report_template_m2o_to_m2m(env): | ||
openupgrade.m2o_to_x2m( | ||
env.cr, | ||
env["mail.template"], | ||
"mail_template", | ||
"report_template_ids", | ||
"report_template", | ||
) | ||
|
||
|
||
@openupgrade.migrate() | ||
def migrate(env, version): | ||
openupgrade.load_data(env, "mail", "17.0.1.15/noupdate_changes.xml") | ||
openupgrade.delete_records_safely_by_xml_id( | ||
env, | ||
_deleted_xml_records, | ||
) | ||
_fill_res_company_alias_domain_id(env) | ||
_mail_alias_fill_alias_full_name(env) | ||
_mail_template_convert_report_template_m2o_to_m2m(env) |
139 changes: 139 additions & 0 deletions
139
openupgrade_scripts/scripts/mail/17.0.1.15/pre-migration.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,139 @@ | ||
# Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo) | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). | ||
from openupgradelib import openupgrade | ||
|
||
_models_renames = [ | ||
("mail.channel", "discuss.channel"), | ||
("mail.channel.member", "discuss.channel.member"), | ||
("mail.channel.rtc.session", "discuss.channel.rtc.session"), | ||
] | ||
_tables_renames = [ | ||
("mail_channel", "discuss_channel"), | ||
("mail_channel_member", "discuss_channel_member"), | ||
("mail_channel_rtc_session", "discuss_channel_rtc_session"), | ||
] | ||
_fields_renames = [ | ||
( | ||
"discuss.channel", | ||
"discuss_channel", | ||
"field", | ||
"field_id", | ||
), | ||
] | ||
|
||
|
||
def _discuss_channel_fill_allow_public_upload(env): | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
ALTER TABLE discuss_channel | ||
ADD COLUMN IF NOT EXISTS allow_public_upload BOOLEAN; | ||
""", | ||
) | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
UPDATE discuss_channel | ||
SET allow_public_upload = True | ||
WHERE channel_type = 'livechat' | ||
""", | ||
) | ||
|
||
|
||
def _mail_alias_fill_multiple_values(env): | ||
""" | ||
We will fill value for alias_full_name in post because alias_domain has not been | ||
present yet | ||
""" | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
ALTER TABLE mail_alias | ||
ADD COLUMN IF NOT EXISTS alias_full_name VARCHAR, | ||
ADD COLUMN IF NOT EXISTS alias_incoming_local BOOLEAN, | ||
ADD COLUMN IF NOT EXISTS alias_status VARCHAR; | ||
""", | ||
) | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
UPDATE mail_alias | ||
SET alias_incoming_local = True | ||
""", | ||
) | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
UPDATE mail_alias | ||
SET alias_status = 'not_tested' | ||
""", | ||
) | ||
|
||
|
||
def _mail_gateway_allowed_fill_email_if_null(env): | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
UPDATE mail_gateway_allowed | ||
SET email = 'missing_mail_gateway_allowed_email@example.odoo.com' | ||
WHERE email IS NULL OR TRIM(email) = ''; | ||
""", | ||
) | ||
|
||
|
||
def _mail_tracking_value_update_monetary_tracking_values(env): | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
UPDATE mail_tracking_value | ||
SET old_value_float = old_value_monetary, | ||
new_value_float = new_value_monetary | ||
WHERE old_value_monetary IS NOT NULL | ||
OR new_value_monetary IS NOT NULL; | ||
""", | ||
) | ||
|
||
|
||
def _company_update_email_colors(env): | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
ALTER TABLE res_company | ||
ADD COLUMN IF NOT EXISTS email_primary_color VARCHAR, | ||
ADD COLUMN IF NOT EXISTS email_secondary_color VARCHAR; | ||
""", | ||
) | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
UPDATE res_company | ||
SET email_primary_color = CASE | ||
WHEN primary_color IS NOT NULL then primary_color | ||
ELSE '#000000' | ||
END, | ||
email_secondary_color = CASE | ||
WHEN secondary_color IS NOT NULL then secondary_color | ||
ELSE '#875A7B' | ||
END | ||
""", | ||
) | ||
|
||
|
||
@openupgrade.migrate() | ||
def migrate(env, version): | ||
openupgrade.rename_models(env.cr, _models_renames) | ||
openupgrade.rename_tables(env.cr, _tables_renames) | ||
openupgrade.rename_fields(env, _fields_renames) | ||
_discuss_channel_fill_allow_public_upload(env) | ||
_mail_alias_fill_multiple_values(env) | ||
_mail_gateway_allowed_fill_email_if_null(env) | ||
_mail_tracking_value_update_monetary_tracking_values(env) | ||
_company_update_email_colors(env) | ||
# create column to avoid model mail.alias is loaded before model res.company | ||
openupgrade.logged_query( | ||
env.cr, | ||
""" | ||
ALTER TABLE res_company | ||
ADD COLUMN IF NOT EXISTS alias_domain_id INTEGER; | ||
""", | ||
) |
Oops, something went wrong.