Skip to content
Draft
Show file tree
Hide file tree
Changes from all 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 docsource/modules190-200.rst
Original file line number Diff line number Diff line change
Expand Up @@ -714,7 +714,7 @@ Module coverage 19.0 -> 20.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |new| marketing_card_event | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mass_mailing | | |
| mass_mailing |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mass_mailing_crm | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<record id="mailing_contact_view_form_split_name" model="ir.ui.view">
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="attributes">
<attribute name="readonly">1</attribute>
<attribute name="invisible">not name</attribute>
</xpath>
<xpath expr="//field[@name='name']" position="after">
<!-- simulate the placeholder on the readonly field -->
<span class="opacity-50" invisible="name">e.g. "John Smith"</span>
</xpath>
<xpath expr="//group/label[@for='email']" position="before">
<field name="first_name" placeholder="e.g. &quot;John&quot;"/>
</xpath>
<xpath expr="//group/field[@name='country_id']" position="before">
<field name="last_name" placeholder="e.g. &quot;Smith&quot;"/>
</xpath>
</field>
</record>
</odoo>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Copyright 2026 Don Kendall
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from openupgradelib import openupgrade


@openupgrade.migrate()
def migrate(env, version):
openupgrade.load_data(env, "mass_mailing", "20.0.2.7/noupdate_changes.xml")
17 changes: 17 additions & 0 deletions openupgrade_scripts/scripts/mass_mailing/20.0.2.7/pre-migration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2026 Don Kendall
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from openupgradelib import openupgrade

# pylint: disable=odoo-addons-relative-import
from odoo.addons.openupgrade_scripts.helpers import release_xmlid


@openupgrade.migrate()
def migrate(env, version):
# 19.0 shipped the list merge action as an ir.actions.act_window opening
# the merge wizard; 20.0 ships the same external id as an
# ir.actions.server.
release_xmlid(
env.cr, "mass_mailing.mailing_list_merge_action", "ir.actions.act_window"
)
225 changes: 225 additions & 0 deletions openupgrade_scripts/scripts/mass_mailing/20.0.2.7/upgrade_analysis.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
---Models in module 'mass_mailing'---
obsolete model mailing.list.merge [transient]
---Fields in module 'mass_mailing'---
mass_mailing / ir.ui.view / technical_usage (False) : NEW selection_keys: ['mail_post_source', 'mass_mailing'], mode: modify
mass_mailing / mailing.contact / last_clicked_datetime (datetime): NEW
mass_mailing / mailing.contact / last_opened_datetime (datetime): NEW
mass_mailing / mailing.contact / last_replied_datetime (datetime): NEW
mass_mailing / mailing.contact / partner_id (many2one) : NEW relation: res.partner
mass_mailing / mailing.contact / website_message_ids (one2many): DEL relation: mail.message
mass_mailing / mailing.filter / active (boolean) : NEW hasdefault: default
mass_mailing / mailing.filter / color (integer) : NEW hasdefault: default
mass_mailing / mailing.list / color (integer) : NEW hasdefault: default
mass_mailing / mailing.mailing / _order : _order is now 'state ASC, calendar_date DESC, write_date DESC' ('calendar_date DESC')
mass_mailing / mailing.mailing / ab_testing_version_name (char): NEW
mass_mailing / mailing.mailing / favorite (boolean) : DEL
mass_mailing / mailing.mailing / favorite_date (datetime) : DEL
mass_mailing / mailing.mailing / is_template (boolean) : NEW
mass_mailing / mailing.mailing / mailing_filter_id (many2one) : DEL relation: mailing.filter
mass_mailing / mailing.mailing / mailing_filter_ids (many2many): NEW relation: mailing.filter, hasdefault: compute
mass_mailing / mailing.mailing / website_message_ids (one2many): DEL relation: mail.message
mass_mailing / res.partner / mailing_contact_ids (one2many): NEW relation: mailing.contact
---XML records in module 'mass_mailing'---
NEW ir.access: mass_mailing.access_ir_mail_server
NEW ir.access: mass_mailing.access_ir_model
NEW ir.access: mass_mailing.access_link_tracker_mailing
NEW ir.access: mass_mailing.access_mail_blacklist_mass_mailing_user
NEW ir.access: mass_mailing.access_mail_blacklist_remove_mass_mailing_user
NEW ir.access: mass_mailing.access_mailing_contact_import_mailing_user
NEW ir.access: mass_mailing.access_mailing_contact_mm_user
NEW ir.access: mass_mailing.access_mailing_contact_to_list
NEW ir.access: mass_mailing.access_mailing_filter_mailing_user
NEW ir.access: mass_mailing.access_mailing_list_mm_user
NEW ir.access: mass_mailing.access_mailing_mailing_mm_user
NEW ir.access: mass_mailing.access_mailing_mailing_system
NEW ir.access: mass_mailing.access_mailing_mailing_test
NEW ir.access: mass_mailing.access_mailing_schedule_date
NEW ir.access: mass_mailing.access_mailing_subscription_mm_user
NEW ir.access: mass_mailing.access_mailing_subscription_optout_mm_user
NEW ir.access: mass_mailing.access_mailing_trace_mm_user
NEW ir.access: mass_mailing.access_mailing_trace_report_mm_user
NEW ir.access: mass_mailing.access_utm_campaign_mass_mailing_user
NEW ir.access: mass_mailing.access_utm_medium
NEW ir.access: mass_mailing.access_utm_source
NEW ir.access: mass_mailing.access_utm_stage
NEW ir.access: mass_mailing.access_utm_tag_mass_mailing_campaign
NEW ir.access: mass_mailing.ir_ui_view_mass_mailing_user_edit_access
NEW ir.access: mass_mailing.ir_ui_view_mass_mailing_user_read_access
NEW ir.access: mass_mailing.ir_ui_view_rule_system
NEW ir.access: mass_mailing.properties_base_definition_rule_mailing_user
NEW ir.actions.act_window: mass_mailing.action_mailing_filter_quick_create
NEW ir.actions.act_window: mass_mailing.action_mailing_list_quick_create
ir.actions.act_window: mass_mailing.action_view_mass_mailings_from_campaign (deleted domain)
ir.actions.act_window: mass_mailing.action_view_utm_campaigns (deleted domain)
ir.actions.act_window: mass_mailing.mailing_mailing_action_mail (deleted domain)
NEW ir.actions.act_window: mass_mailing.mailing_mailing_action_templates
ir.actions.act_window: mass_mailing.mailing_subscription_action_report_optout (deleted domain)
ir.actions.act_window: mass_mailing.mailing_trace_report_action_mail (deleted domain)
NEW ir.actions.act_window: mass_mailing.res_partner_to_list_action
DEL ir.actions.act_window: mass_mailing.mailing_list_merge_action
NEW ir.actions.client: mass_mailing.res_partner_to_list_results_action
NEW ir.actions.server: mass_mailing.mailing_list_merge_action
DEL ir.asset: mass_mailing.s_alert_001_scss
DEL ir.asset: mass_mailing.s_badge_000_scss
DEL ir.asset: mass_mailing.s_blockquote_000_scss
DEL ir.asset: mass_mailing.s_company_team_000_scss
DEL ir.asset: mass_mailing.s_cta_badge_000_scss
DEL ir.asset: mass_mailing.s_features_grid_000_scss
DEL ir.asset: mass_mailing.s_hr_000_scss
DEL ir.asset: mass_mailing.s_masonry_block_001_scss
DEL ir.asset: mass_mailing.s_rating_000_scss
DEL ir.asset: mass_mailing.s_rating_001_scss
NEW ir.attachment: mass_mailing.set_catalog_square_md_1
NEW ir.attachment: mass_mailing.set_catalog_square_md_2
NEW ir.attachment: mass_mailing.set_catalog_square_md_3
NEW ir.attachment: mass_mailing.set_catalog_square_md_4
ir.cron: mass_mailing.ir_cron_mass_mailing_ab_testing (noupdate switched)
ir.cron: mass_mailing.ir_cron_mass_mailing_queue (noupdate switched)
DEL ir.model.access: mass_mailing.access_ir_mail_server
DEL ir.model.access: mass_mailing.access_ir_model
DEL ir.model.access: mass_mailing.access_link_tracker_mailing
DEL ir.model.access: mass_mailing.access_mail_blacklist_mass_mailing_user
DEL ir.model.access: mass_mailing.access_mail_blacklist_remove_mass_mailing_user
DEL ir.model.access: mass_mailing.access_mailing_contact_import_mailing_user
DEL ir.model.access: mass_mailing.access_mailing_contact_mm_user
DEL ir.model.access: mass_mailing.access_mailing_contact_to_list
DEL ir.model.access: mass_mailing.access_mailing_filter_mailing_user
DEL ir.model.access: mass_mailing.access_mailing_list_merge
DEL ir.model.access: mass_mailing.access_mailing_list_mm_user
DEL ir.model.access: mass_mailing.access_mailing_mailing_mm_user
DEL ir.model.access: mass_mailing.access_mailing_mailing_system
DEL ir.model.access: mass_mailing.access_mailing_mailing_test
DEL ir.model.access: mass_mailing.access_mailing_schedule_date
DEL ir.model.access: mass_mailing.access_mailing_subscription_mm_user
DEL ir.model.access: mass_mailing.access_mailing_subscription_optout_mm_user
DEL ir.model.access: mass_mailing.access_mailing_trace_mm_user
DEL ir.model.access: mass_mailing.access_mailing_trace_report_mm_user
DEL ir.model.access: mass_mailing.access_properties_base_definition_mailing_user
DEL ir.model.access: mass_mailing.access_utm_campaign_mass_mailing_user
DEL ir.model.access: mass_mailing.access_utm_medium
DEL ir.model.access: mass_mailing.access_utm_source
DEL ir.model.access: mass_mailing.access_utm_stage
DEL ir.model.access: mass_mailing.access_utm_tag_mass_mailing_campaign
ir.model.constraint: mass_mailing.constraint_mailing_mailing_email_from (changed definition: is now 'False' ('CHECK(email_from IS NOT NULL OR mailing_type != 'mail')'))
ir.model.constraint: mass_mailing.constraint_mailing_mailing_percentage_valid (changed definition: is now 'False' ('CHECK(ab_testing_pc >= 0 AND ab_testing_pc <= 100)'))
ir.model.constraint: mass_mailing.constraint_mailing_subscription_unique_contact_list (changed definition: is now 'False' ('unique (contact_id, list_id)'))
ir.model.constraint: mass_mailing.constraint_mailing_trace_check_res_id_is_set (changed definition: is now 'False' ('CHECK(res_id IS NOT NULL AND res_id !=0 )'))
DEL ir.rule: mass_mailing.properties_base_definition_rule_mailing_user
NEW ir.ui.menu: mass_mailing.mass_mailing_template_menu
NEW ir.ui.menu: mass_mailing.menu_email_mass_mailing_dynamic_lists
DEL ir.ui.menu: mass_mailing.mailing_filter_menu_action
NEW ir.ui.view: mass_mailing.link_tracker_click_view_list_simplified
ir.ui.view: mass_mailing.mailing_contact_view_form_split_name (noupdate switched)
NEW ir.ui.view: mass_mailing.mailing_contact_view_list_from_filter
ir.ui.view: mass_mailing.mailing_contact_view_tree_split_name (noupdate switched)
NEW ir.ui.view: mass_mailing.mailing_filter_view_form_simplified
NEW ir.ui.view: mass_mailing.mailing_filter_view_kanban
NEW ir.ui.view: mass_mailing.mailing_mailing_view_kanban_templates
NEW ir.ui.view: mass_mailing.mailing_mailing_view_list_template
NEW ir.ui.view: mass_mailing.mailing_mailing_view_search_templates
ir.ui.view: mass_mailing.mass_mailing_mail_layout (noupdate switched)
NEW ir.ui.view: mass_mailing.res_partner_view_form
NEW ir.ui.view: mass_mailing.res_partner_view_list
NEW ir.ui.view: mass_mailing.s_mail_company_logo
NEW ir.ui.view: mass_mailing.s_social_media
NEW ir.ui.view: mass_mailing.s_social_media_template
NEW ir.ui.view: mass_mailing.view_mail_mass_mailing_test_send_test_form
DEL ir.ui.view: mass_mailing.mailing_list_merge_view_form
DEL ir.ui.view: mass_mailing.s_alert
DEL ir.ui.view: mass_mailing.s_attributes_horizontal
DEL ir.ui.view: mass_mailing.s_author
DEL ir.ui.view: mass_mailing.s_badge
DEL ir.ui.view: mass_mailing.s_blockquote
DEL ir.ui.view: mass_mailing.s_blog_post_card
DEL ir.ui.view: mass_mailing.s_blog_title
DEL ir.ui.view: mass_mailing.s_button
DEL ir.ui.view: mass_mailing.s_call_to_action
DEL ir.ui.view: mass_mailing.s_centered_cta_badge
DEL ir.ui.view: mass_mailing.s_color_blocks_2
DEL ir.ui.view: mass_mailing.s_company_team
DEL ir.ui.view: mass_mailing.s_company_team_shapes
DEL ir.ui.view: mass_mailing.s_comparisons
DEL ir.ui.view: mass_mailing.s_content_card_1
DEL ir.ui.view: mass_mailing.s_content_card_2
DEL ir.ui.view: mass_mailing.s_content_card_3
DEL ir.ui.view: mass_mailing.s_content_card_4
DEL ir.ui.view: mass_mailing.s_content_card_5
DEL ir.ui.view: mass_mailing.s_content_card_6
DEL ir.ui.view: mass_mailing.s_content_card_7
DEL ir.ui.view: mass_mailing.s_coupon_code
DEL ir.ui.view: mass_mailing.s_cover
DEL ir.ui.view: mass_mailing.s_cta_badge
DEL ir.ui.view: mass_mailing.s_customer_quote
DEL ir.ui.view: mass_mailing.s_event
DEL ir.ui.view: mass_mailing.s_features_column
DEL ir.ui.view: mass_mailing.s_features_grid
DEL ir.ui.view: mass_mailing.s_features_showcase
DEL ir.ui.view: mass_mailing.s_hr
DEL ir.ui.view: mass_mailing.s_hr_title
DEL ir.ui.view: mass_mailing.s_icon
DEL ir.ui.view: mass_mailing.s_image
DEL ir.ui.view: mass_mailing.s_image_text
DEL ir.ui.view: mass_mailing.s_inline_text
DEL ir.ui.view: mass_mailing.s_link_list
DEL ir.ui.view: mass_mailing.s_mail_block_footer_one_liner
DEL ir.ui.view: mass_mailing.s_mail_block_footer_social_and_logo
DEL ir.ui.view: mass_mailing.s_mail_block_footer_social_left
DEL ir.ui.view: mass_mailing.s_mail_block_header_logo
DEL ir.ui.view: mass_mailing.s_mail_block_header_logo_and_button
DEL ir.ui.view: mass_mailing.s_mail_block_header_logo_and_inline_menu
DEL ir.ui.view: mass_mailing.s_mail_block_header_logo_col
DEL ir.ui.view: mass_mailing.s_mail_block_header_menu
DEL ir.ui.view: mass_mailing.s_mail_block_header_name_and_button
DEL ir.ui.view: mass_mailing.s_mail_block_header_name_and_inline_menu
DEL ir.ui.view: mass_mailing.s_mail_block_header_social
DEL ir.ui.view: mass_mailing.s_mail_block_header_text_social
DEL ir.ui.view: mass_mailing.s_mail_block_header_view
DEL ir.ui.view: mass_mailing.s_mailing_list_advertisement
DEL ir.ui.view: mass_mailing.s_masonry_block
DEL ir.ui.view: mass_mailing.s_masonry_block_alternation_image_text_template
DEL ir.ui.view: mass_mailing.s_masonry_block_alternation_text_image_template
DEL ir.ui.view: mass_mailing.s_masonry_block_alternation_text_image_text_template
DEL ir.ui.view: mass_mailing.s_masonry_block_alternation_text_template
DEL ir.ui.view: mass_mailing.s_masonry_block_default_template
DEL ir.ui.view: mass_mailing.s_masonry_block_image_texts_image_template
DEL ir.ui.view: mass_mailing.s_masonry_block_images_template
DEL ir.ui.view: mass_mailing.s_masonry_block_mosaic_template
DEL ir.ui.view: mass_mailing.s_masonry_block_reversed_template
DEL ir.ui.view: mass_mailing.s_masonry_block_texts_image_texts_template
DEL ir.ui.view: mass_mailing.s_media_list
DEL ir.ui.view: mass_mailing.s_membership_advertisement
DEL ir.ui.view: mass_mailing.s_numbers
DEL ir.ui.view: mass_mailing.s_picture
DEL ir.ui.view: mass_mailing.s_pricelist_boxed
DEL ir.ui.view: mass_mailing.s_pricelist_boxed_item
DEL ir.ui.view: mass_mailing.s_product_list
DEL ir.ui.view: mass_mailing.s_rating
DEL ir.ui.view: mass_mailing.s_references
DEL ir.ui.view: mass_mailing.s_reviews_wall
DEL ir.ui.view: mass_mailing.s_schedule
DEL ir.ui.view: mass_mailing.s_section_mobile
DEL ir.ui.view: mass_mailing.s_showcase
DEL ir.ui.view: mass_mailing.s_snippet_group
DEL ir.ui.view: mass_mailing.s_special_offer_cta
DEL ir.ui.view: mass_mailing.s_subtitle
DEL ir.ui.view: mass_mailing.s_text_block
DEL ir.ui.view: mass_mailing.s_text_card
DEL ir.ui.view: mass_mailing.s_text_center_cta
DEL ir.ui.view: mass_mailing.s_text_contact
DEL ir.ui.view: mass_mailing.s_text_cta_card
DEL ir.ui.view: mass_mailing.s_text_describing_benefits
DEL ir.ui.view: mass_mailing.s_text_highlight
DEL ir.ui.view: mass_mailing.s_text_image
DEL ir.ui.view: mass_mailing.s_text_left_cta
DEL ir.ui.view: mass_mailing.s_text_need_help
DEL ir.ui.view: mass_mailing.s_text_product_description
DEL ir.ui.view: mass_mailing.s_text_product_showcase
DEL ir.ui.view: mass_mailing.s_text_signature
DEL ir.ui.view: mass_mailing.s_three_columns
DEL ir.ui.view: mass_mailing.s_title
DEL ir.ui.view: mass_mailing.s_title_with_side_text
DEL ir.ui.view: mass_mailing.s_video
mailing.contact: mass_mailing.mass_mail_contact_0 (noupdate switched)
mailing.list: mass_mailing.mailing_list_data (noupdate switched)
mailing.subscription: mass_mailing.mailing_list_data_sub_contact_0 (noupdate switched)
NEW portal.entry: mass_mailing.portal_entry_newsletters
Loading