19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:31:39 +01:00
parent 5df8c07b59
commit daa394e8b0
2114 changed files with 564841 additions and 299642 deletions

View file

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import ir_qweb
from . import mailing_models
from . import mailing_models_utm
from . import mailing_models_cornercase

View file

@ -0,0 +1,11 @@
# -*- coding: utf-8 -*-
from odoo import models
class IrQweb(models.AbstractModel):
_inherit = "ir.qweb"
def _get_bundles_to_pregenarate(self):
js_assets, css_assets = super()._get_bundles_to_pregenarate()
assets = {'mass_mailing.assets_iframe_style'}
return (js_assets | assets, css_assets | assets)

View file

@ -4,11 +4,11 @@
from odoo import api, fields, models
class MailingCustomer(models.Model):
class MailingTestCustomer(models.Model):
""" A model inheriting from mail.thread with a partner field, to test
mass mailing flows involving checking partner email. """
_description = 'Mailing with partner'
_name = 'mailing.test.customer'
_description = 'Mailing with partner'
_inherit = ['mail.thread']
name = fields.Char()
@ -20,25 +20,15 @@ class MailingCustomer(models.Model):
for mailing in self.filtered(lambda rec: not rec.email_from and rec.customer_id):
mailing.email_from = mailing.customer_id.email
def _message_get_default_recipients(self):
""" Default recipient checks for 'partner_id', here the field is named
'customer_id'. """
default_recipients = super()._message_get_default_recipients()
for record in self:
if record.customer_id:
default_recipients[record.id] = {
'email_cc': False,
'email_to': False,
'partner_ids': record.customer_id.ids,
}
return default_recipients
def _mail_get_partner_fields(self, introspect_fields=False):
return ['customer_id']
class MailingSimple(models.Model):
class MailingTestSimple(models.Model):
""" Model only inheriting from mail.thread to test base mailing features and
performances. """
_description = 'Simple Mailing'
_name = 'mailing.test.simple'
_description = 'Simple Mailing'
_inherit = ['mail.thread']
_primary_email = 'email_from'
@ -46,21 +36,22 @@ class MailingSimple(models.Model):
email_from = fields.Char()
class MailingUTM(models.Model):
class MailingTestUtm(models.Model):
""" Model inheriting from mail.thread and utm.mixin for checking utm of mailing
is caught and set on reply """
_description = 'Mailing: UTM enabled to test UTM sync with mailing'
_name = 'mailing.test.utm'
_description = 'Mailing: UTM enabled to test UTM sync with mailing'
_inherit = ['mail.thread', 'utm.mixin']
name = fields.Char()
class MailingBLacklist(models.Model):
class MailingTestBlacklist(models.Model):
""" Model using blacklist mechanism for mass mailing features. """
_description = 'Mailing Blacklist Enabled'
_name = 'mailing.test.blacklist'
_description = 'Mailing Blacklist Enabled'
_inherit = ['mail.thread.blacklist']
_order = 'name ASC, id DESC'
_primary_email = 'email_from'
name = fields.Char()
@ -68,25 +59,15 @@ class MailingBLacklist(models.Model):
customer_id = fields.Many2one('res.partner', 'Customer', tracking=True)
user_id = fields.Many2one('res.users', 'Responsible', tracking=True)
def _message_get_default_recipients(self):
""" Default recipient checks for 'partner_id', here the field is named
'customer_id'. """
default_recipients = super()._message_get_default_recipients()
for record in self:
if record.customer_id:
default_recipients[record.id] = {
'email_cc': False,
'email_to': False,
'partner_ids': record.customer_id.ids,
}
return default_recipients
def _mail_get_partner_fields(self, introspect_fields=False):
return ['customer_id']
class MailingOptOut(models.Model):
class MailingTestOptout(models.Model):
""" Model using blacklist mechanism and a hijacked opt-out mechanism for
mass mailing features. """
_description = 'Mailing Blacklist / Optout Enabled'
_name = 'mailing.test.optout'
_description = 'Mailing Blacklist / Optout Enabled'
_inherit = ['mail.thread.blacklist']
_primary_email = 'email_from'
@ -96,6 +77,9 @@ class MailingOptOut(models.Model):
customer_id = fields.Many2one('res.partner', 'Customer', tracking=True)
user_id = fields.Many2one('res.users', 'Responsible', tracking=True)
def _mail_get_partner_fields(self, introspect_fields=False):
return ['customer_id']
def _mailing_get_opt_out_list(self, mailing):
res_ids = mailing._get_recipients()
opt_out_contacts = set(self.search([
@ -104,22 +88,10 @@ class MailingOptOut(models.Model):
]).mapped('email_normalized'))
return opt_out_contacts
def _message_get_default_recipients(self):
""" Default recipient checks for 'partner_id', here the field is named
'customer_id'. """
default_recipients = super()._message_get_default_recipients()
for record in self:
if record.customer_id:
default_recipients[record.id] = {
'email_cc': False,
'email_to': False,
'partner_ids': record.customer_id.ids,
}
return default_recipients
class MailingTestPartner(models.Model):
_description = 'Mailing Model with partner_id'
_name = 'mailing.test.partner'
_description = 'Mailing Model with partner_id'
_inherit = ['mail.thread.blacklist']
_primary_email = 'email_from'
@ -139,7 +111,7 @@ class MailingPerformance(models.Model):
email_from = fields.Char()
class MailingPerformanceBL(models.Model):
class MailingPerformanceBlacklist(models.Model):
""" Model using blacklist mechanism for mass mailing performance. """
_name = 'mailing.performance.blacklist'
_description = 'Mailing: blacklist performance'

View file

@ -6,8 +6,8 @@ from odoo import api, fields, models
class MailingTestPartnerUnstored(models.Model):
""" Check mailing with unstored fields """
_description = 'Mailing Model without stored partner_id'
_name = 'mailing.test.partner.unstored'
_description = 'Mailing Model without stored partner_id'
_inherit = ['mail.thread.blacklist']
_primary_email = 'email_from'

View file

@ -5,8 +5,8 @@ from odoo import fields, models
class UtmTestSourceMixin(models.Model):
""" Test utm.source.mixin """
_name = 'utm.test.source.mixin'
_description = "UTM Source Mixin Test Model"
_name = "utm.test.source.mixin"
_order = "id DESC"
_rec_name = "title"
_inherit = [
@ -20,8 +20,8 @@ class UtmTestSourceMixin(models.Model):
class UtmTestSourceMixinOther(models.Model):
""" Test utm.source.mixin, similar to the other one, allowing also to test
cross model uniqueness check """
_name = 'utm.test.source.mixin.other'
_description = "UTM Source Mixin Test Model (another)"
_name = "utm.test.source.mixin.other"
_order = "id DESC"
_rec_name = "title"
_inherit = [