[REF] mass_mailing: rename mail.mass_mailing model

PURPOSE

Mass mailing is currently a bit messy. As SMS will be added as a way to notify
people in mass through SMS let us take this opportunity to somehow clean this
application: organization, light code cleaning, model renaming.

SPECIFICATIONS

Rename mail.mass_mailing model to mailing.mailing. Rationale :

  * mailing is now a prefix for mass mailing models;
  * mailing.mailing is easier to read / find / understand;

Note that mail.mass_mailing.campaign is not updated as it is likely to be
removed soon and replaced by simple utm.campaign model.

MIGRATION

mail.mass_mailing model -> mailing.mailing
mail_mass_mailing table -> mailing_mailing

LINKS

Task ID 2037906
Preparing task ID 1997464 (SMS addition in mass mailing)
PR #34938
This commit is contained in:
Thibault Delavallée
2019-07-17 15:50:33 +00:00
parent 2011c24dd7
commit 49d2899fbd
41 changed files with 96 additions and 95 deletions
+4 -4
View File
@@ -25,14 +25,14 @@
'data/mass_mailing_data.xml',
'wizard/mail_compose_message_views.xml',
'wizard/mailing_list_merge_views.xml',
'wizard/test_mailing_views.xml',
'wizard/mass_mailing_schedule_date_views.xml',
'views/mass_mailing_views_menus.xml',
'wizard/mailing_mailing_schedule_date_views.xml',
'wizard/mailing_mailing_test_views.xml',
'views/mailing_mailing_views_menus.xml',
'views/mailing_trace_views.xml',
'views/link_tracker_views.xml',
'views/mailing_contact_views.xml',
'views/mailing_list_views.xml',
'views/mass_mailing_views.xml',
'views/mailing_mailing_views.xml',
'views/res_config_settings_views.xml',
'report/mailing_trace_report_views.xml',
'views/assets.xml',
+5 -5
View File
@@ -14,11 +14,11 @@ class MassMailController(http.Controller):
def _valid_unsubscribe_token(self, mailing_id, res_id, email, token):
if not (mailing_id and res_id and email and token):
return False
mailing = request.env['mail.mass_mailing'].sudo().browse(mailing_id)
mailing = request.env['mailing.mailing'].sudo().browse(mailing_id)
return consteq(mailing._unsubscribe_token(res_id, email), token)
def _log_blacklist_action(self, blacklist_entry, mailing_id, description):
mailing = request.env['mail.mass_mailing'].sudo().browse(mailing_id)
mailing = request.env['mailing.mailing'].sudo().browse(mailing_id)
model_display = mailing.mailing_model_id.display_name
blacklist_entry._message_log(body=description + " ({})".format(model_display))
@@ -29,7 +29,7 @@ class MassMailController(http.Controller):
@http.route(['/mail/mailing/<int:mailing_id>/unsubscribe'], type='http', website=True, auth='public')
def mailing(self, mailing_id, email=None, res_id=None, token="", **post):
mailing = request.env['mail.mass_mailing'].sudo().browse(mailing_id)
mailing = request.env['mailing.mailing'].sudo().browse(mailing_id)
if mailing.exists():
res_id = res_id and int(res_id)
if not self._valid_unsubscribe_token(mailing_id, res_id, email, str(token)):
@@ -82,7 +82,7 @@ class MassMailController(http.Controller):
@http.route('/mail/mailing/unsubscribe', type='json', auth='public')
def unsubscribe(self, mailing_id, opt_in_ids, opt_out_ids, email, res_id, token):
mailing = request.env['mail.mass_mailing'].sudo().browse(mailing_id)
mailing = request.env['mailing.mailing'].sudo().browse(mailing_id)
if mailing.exists():
if not self._valid_unsubscribe_token(mailing_id, res_id, email, token):
return 'unauthorized'
@@ -152,7 +152,7 @@ class MassMailController(http.Controller):
@http.route('/mailing/feedback', type='json', auth='public')
def send_feedback(self, mailing_id, res_id, email, feedback, token):
mailing = request.env['mail.mass_mailing'].sudo().browse(mailing_id)
mailing = request.env['mailing.mailing'].sudo().browse(mailing_id)
if mailing.exists() and email:
if not self._valid_unsubscribe_token(mailing_id, res_id, email, token):
return 'unauthorized'
@@ -19,7 +19,7 @@
<!-- Cron that process the mass mailing queue -->
<record id="ir_cron_mass_mailing_queue" model="ir.cron">
<field name="name">Mass Mailing: Process queue</field>
<field name="model_id" ref="model_mail_mass_mailing"/>
<field name="model_id" ref="model_mailing_mailing"/>
<field name="state">code</field>
<field name="code">model._process_mass_mailing_queue()</field>
<field name="user_id" ref="base.user_root" />
@@ -68,7 +68,7 @@
<field name="tag_ids" eval="[(6,0,[ref('mass_mailing.mass_mail_tag_1')])]"/>
</record>
<record id="mass_mail_1" model="mail.mass_mailing">
<record id="mass_mail_1" model="mailing.mailing">
<field name="name">Newsletter 1</field>
<field name="subject" eval="'%s Newsletter' % (DateTime.today().strftime('%B'))"/>
<field name="state">done</field>
@@ -196,7 +196,7 @@
<field name="attachment_ids" eval="[(4, ref('mass_mail_attach_1'))]"/>
</record>
<!-- Generate link tracker information from it -->
<function model="mail.mass_mailing" name="convert_links" eval="[ref('mass_mailing.mass_mail_1')]"/>
<function model="mailing.mailing" name="convert_links" eval="[ref('mass_mailing.mass_mail_1')]"/>
<record id="mass_mail_1_stat_0" model="mailing.trace">
<field name="mass_mailing_id" eval="ref('mass_mail_1')"/>
+1 -1
View File
@@ -4,8 +4,8 @@
from . import link_tracker
from . import mailing_contact
from . import mailing_list
from . import mass_mailing
from . import mailing_trace
from . import mailing
from . import mail_mail
from . import mail_template
from . import mail_thread
+2 -2
View File
@@ -7,7 +7,7 @@ from odoo import api, fields, models
class LinkTracker(models.Model):
_inherit = "link.tracker"
mass_mailing_id = fields.Many2one('mail.mass_mailing', string='Mass Mailing')
mass_mailing_id = fields.Many2one('mailing.mailing', string='Mass Mailing')
mass_mailing_campaign_id = fields.Many2one('mail.mass_mailing.campaign', string='Mass Mailing Campaign')
@@ -15,7 +15,7 @@ class LinkTrackerClick(models.Model):
_inherit = "link.tracker.click"
mailing_trace_id = fields.Many2one('mailing.trace', string='Mail Statistics')
mass_mailing_id = fields.Many2one('mail.mass_mailing', string='Mass Mailing')
mass_mailing_id = fields.Many2one('mailing.mailing', string='Mass Mailing')
mass_mailing_campaign_id = fields.Many2one('mail.mass_mailing.campaign', string='Mass Mailing Campaign')
def _prepare_click_values_from_route(self, **route_values):
+1 -1
View File
@@ -13,7 +13,7 @@ class MailMail(models.Model):
"""Add the mass mailing campaign data to mail"""
_inherit = ['mail.mail']
mailing_id = fields.Many2one('mail.mass_mailing', string='Mass Mailing')
mailing_id = fields.Many2one('mailing.mailing', string='Mass Mailing')
mailing_trace_ids = fields.One2many('mailing.trace', 'mail_mail_id', string='Statistics')
@api.model
@@ -81,7 +81,7 @@ class MassMailingCampaign(models.Model):
'mailing.tag', 'mail_mass_mailing_tag_rel',
'tag_id', 'campaign_id', string='Tags')
mass_mailing_ids = fields.One2many(
'mail.mass_mailing', 'mass_mailing_campaign_id',
'mailing.mailing', 'mass_mailing_campaign_id',
string='Mass Mailings')
unique_ab_testing = fields.Boolean(string='Allow A/B Testing', default=False,
help='If checked, recipients will be mailed only once for the whole campaign. '
@@ -154,7 +154,7 @@ class MassMailingCampaign(models.Model):
self.browse(row.pop('campaign_id')).update(row)
def _compute_total_mailings(self):
campaign_data = self.env['mail.mass_mailing'].read_group(
campaign_data = self.env['mailing.mailing'].read_group(
[('mass_mailing_campaign_id', 'in', self.ids)],
['mass_mailing_campaign_id'], ['mass_mailing_campaign_id'])
mapped_data = dict([(c['mass_mailing_campaign_id'][0], c['mass_mailing_campaign_id_count']) for c in campaign_data])
@@ -184,7 +184,7 @@ class MassMailingCampaign(models.Model):
class MassMailing(models.Model):
""" MassMailing models a wave of emails for a mass mailign campaign.
A mass mailing is an occurence of sending emails. """
_name = 'mail.mass_mailing'
_name = 'mailing.mailing'
_description = 'Mass Mailing'
# number of periods for tracking mail_mail statistics
_period_number = 6
@@ -313,7 +313,7 @@ class MassMailing(models.Model):
FROM
mailing_trace s
RIGHT JOIN
mail_mass_mailing m
mailing_mailing m
ON (m.id = s.mass_mailing_id)
WHERE
m.id IN %s
@@ -409,7 +409,7 @@ class MassMailing(models.Model):
return {
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'mail.mass_mailing',
'res_model': 'mailing.mailing',
'res_id': mass_mailing_copy.id,
'context': context,
}
@@ -422,14 +422,14 @@ class MassMailing(models.Model):
'name': _('Test Mailing'),
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'mail.mass_mailing.test',
'res_model': 'mailing.mailing.test',
'target': 'new',
'context': ctx,
}
def action_schedule_date(self):
self.ensure_one()
action = self.env.ref('mass_mailing.mass_mailing_schedule_date_action').read()[0]
action = self.env.ref('mass_mailing.mailing_mailing_schedule_date_action').read()[0]
action['context'] = dict(self.env.context, default_mass_mailing_id=self.id)
return action
+1 -1
View File
@@ -29,7 +29,7 @@ class MailingTrace(models.Model):
model = fields.Char(string='Document model')
res_id = fields.Integer(string='Document ID')
# campaign / wave data
mass_mailing_id = fields.Many2one('mail.mass_mailing', string='Mass Mailing', index=True)
mass_mailing_id = fields.Many2one('mailing.mailing', string='Mass Mailing', index=True)
mass_mailing_campaign_id = fields.Many2one(
related='mass_mailing_id.mass_mailing_campaign_id',
string='Mass Mailing Campaign',
@@ -24,7 +24,7 @@ class MailingTraceReport(models.Model):
def init(self):
"""Mass Mail Statistical Report: based on mailing.trace that models the various
statistics collected for each mailing, and mail.mass_mailing model that models the
statistics collected for each mailing, and mailing.mailing model that models the
various mailing performed. """
tools.drop_view_if_exists(self.env.cr, 'mailing_trace_report')
self.env.cr.execute("""
@@ -44,7 +44,7 @@ class MailingTraceReport(models.Model):
mm.email_from
FROM
mailing_trace as ms
left join mail_mass_mailing as mm ON (ms.mass_mailing_id=mm.id)
left join mailing_mailing as mm ON (ms.mass_mailing_id=mm.id)
left join mail_mass_mailing_campaign as mc ON (ms.mass_mailing_campaign_id=mc.id)
left join utm_campaign as utm_campaign ON (mc.campaign_id = utm_campaign.id)
left join utm_source as utm_source ON (mm.source_id = utm_source.id)
@@ -6,8 +6,8 @@ access_mailing_list_mm_user,access.mailing.list.mm.user,model_mailing_list,mass_
access_mailing_stage,access.mailing.stage.mm.user,model_mailing_stage,mass_mailing.group_mass_mailing_user,1,1,1,1
access_mass_mailing_campaign,mail.mass_mailing.campaign,model_mail_mass_mailing_campaign,mass_mailing.group_mass_mailing_user,1,1,1,1
access_mass_mailing_campaign_system,mail.mass_mailing.campaign.system,model_mail_mass_mailing_campaign,base.group_system,1,1,1,1
access_mass_mailing,mail.mass_mailing,model_mail_mass_mailing,mass_mailing.group_mass_mailing_user,1,1,1,1
access_mass_mailing_system,mail.mass_mailing.system,model_mail_mass_mailing,base.group_system,1,1,1,1
access_mailing_mailing_mm_user,access.mailing.mailing.mm.user,model_mailing_mailing,mass_mailing.group_mass_mailing_user,1,1,1,1
access_mailing_mailing_system,access.mailing.mailing.system,model_mailing_mailing,base.group_system,1,1,1,1
access_mailing_trace_user,mailing.trace.user,model_mailing_trace,base.group_user,1,1,1,1
access_mailing_trace_mm_user,access.mailing.trace.mm.user,model_mailing_trace,mass_mailing.group_mass_mailing_user,1,1,1,1
access_mailing_trace_report_mm_user,access.mailing.trace.report.mm.user,model_mailing_trace_report,mass_mailing.group_mass_mailing_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
6 access_mailing_stage access.mailing.stage.mm.user model_mailing_stage mass_mailing.group_mass_mailing_user 1 1 1 1
7 access_mass_mailing_campaign mail.mass_mailing.campaign model_mail_mass_mailing_campaign mass_mailing.group_mass_mailing_user 1 1 1 1
8 access_mass_mailing_campaign_system mail.mass_mailing.campaign.system model_mail_mass_mailing_campaign base.group_system 1 1 1 1
9 access_mass_mailing access_mailing_mailing_mm_user mail.mass_mailing access.mailing.mailing.mm.user model_mail_mass_mailing model_mailing_mailing mass_mailing.group_mass_mailing_user 1 1 1 1
10 access_mass_mailing_system access_mailing_mailing_system mail.mass_mailing.system access.mailing.mailing.system model_mail_mass_mailing model_mailing_mailing base.group_system 1 1 1 1
11 access_mailing_trace_user mailing.trace.user model_mailing_trace base.group_user 1 1 1 1
12 access_mailing_trace_mm_user access.mailing.trace.mm.user model_mailing_trace mass_mailing.group_mass_mailing_user 1 1 1 1
13 access_mailing_trace_report_mm_user access.mailing.trace.report.mm.user model_mailing_trace_report mass_mailing.group_mass_mailing_user 1 1 1 1
@@ -28,7 +28,7 @@ KanbanRecord.include({
KanbanColumn.include({
init: function () {
this._super.apply(this, arguments);
if (this.modelName === 'mail.mass_mailing') {
if (this.modelName === 'mailing.mailing') {
this.draggable = false;
}
},
@@ -14,7 +14,7 @@ QUnit.module('mass_mailing', {}, function () {
QUnit.module('field html', {
beforeEach: function () {
this.data = weTestUtils.wysiwygData({
'mail.mass_mailing': {
'mailing.mailing': {
fields: {
display_name: {
string: "Displayed name",
@@ -68,7 +68,7 @@ QUnit.test('save arch and html', async function (assert) {
var form = await testUtils.createView({
View: FormView,
model: 'mail.mass_mailing',
model: 'mailing.mailing',
data: this.data,
arch: '<form>' +
' <field name="body_html" class="oe_read_only" widget="html"'+
@@ -152,7 +152,7 @@ QUnit.test('save and edit arch wysiwyg', async function (assert) {
var form = await testUtils.createView({
View: FormView,
model: 'mail.mass_mailing',
model: 'mailing.mailing',
data: this.data,
arch: '<form>' +
' <header style="min-height:31px;">' +
@@ -48,7 +48,7 @@ class TestMassMailingShortener(common.TransactionCase):
'name': 'User 3', 'email': 'user3@example.com', 'list_ids': [(4, mailing_list_A.id)]
})
mass_mailing = self.env['mail.mass_mailing'].create({
mass_mailing = self.env['mailing.mailing'].create({
"reply_to_mode": "email",
"reply_to": "Administrator <admin@yourcompany.example.com>",
"mailing_model_id": self.env.ref('mass_mailing.model_mailing_list').id,
@@ -2,8 +2,8 @@
<odoo>
<!-- MAILING !-->
<record model="ir.ui.view" id="view_mail_mass_mailing_search">
<field name="name">mail.mass_mailing.search</field>
<field name="model">mail.mass_mailing</field>
<field name="name">mailing.mailing.search</field>
<field name="model">mailing.mailing</field>
<field name="arch" type="xml">
<search string="Mailings">
<field name="name" string="Mailings"/>
@@ -26,8 +26,8 @@
</record>
<record model="ir.ui.view" id="view_mail_mass_mailing_tree">
<field name="name">mail.mass_mailing.tree</field>
<field name="model">mail.mass_mailing</field>
<field name="name">mailing.mailing.tree</field>
<field name="model">mailing.mailing</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<tree string="Mailings">
@@ -43,8 +43,8 @@
</record>
<record model="ir.ui.view" id="view_mail_mass_mailing_form">
<field name="name">mail.mass_mailing.form</field>
<field name="model">mail.mass_mailing</field>
<field name="name">mailing.mailing.form</field>
<field name="model">mailing.mailing</field>
<field name="arch" type="xml">
<form string="Mailing">
<header style="min-height:31px;">
@@ -230,8 +230,8 @@
</record>
<record model="ir.ui.view" id="view_mail_mass_mailing_kanban">
<field name="name">mail.mass_mailing.kanban</field>
<field name="model">mail.mass_mailing</field>
<field name="name">mailing.mailing.kanban</field>
<field name="model">mailing.mailing</field>
<field name="arch" type="xml">
<kanban default_group_by="state">
<field name='state' readonly="1"/>
@@ -315,8 +315,8 @@
</record>
<record id="view_mail_mass_mailing_graph" model="ir.ui.view">
<field name="name">mail.mass_mailing.graph</field>
<field name="model">mail.mass_mailing</field>
<field name="name">mailing.mailing.graph</field>
<field name="model">mailing.mailing</field>
<field name="arch" type="xml">
<graph string="Mailing" type="bar">
<field name="state" type="row"/>
@@ -326,7 +326,7 @@
<record id="action_view_mass_mailings" model="ir.actions.act_window">
<field name="name">Mailings</field>
<field name="res_model">mail.mass_mailing</field>
<field name="res_model">mailing.mailing</field>
<field name="view_mode">kanban,tree,form,graph</field>
<field name="context">{
'search_default_assigned_to_me': 1,
@@ -344,7 +344,7 @@
<record id="action_view_mass_mailings_from_campaign" model="ir.actions.act_window">
<field name="name">Mailings</field>
<field name="res_model">mail.mass_mailing</field>
<field name="res_model">mailing.mailing</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{
'search_default_assigned_to_me': 1,
@@ -365,7 +365,7 @@
<record id="action_create_mass_mailings_from_campaign" model="ir.actions.act_window">
<field name="name">Mailings</field>
<field name="res_model">mail.mass_mailing</field>
<field name="res_model">mailing.mailing</field>
<field name="view_mode">form,kanban,tree</field>
<field name="context">{
'search_default_assigned_to_me': 1,
@@ -386,7 +386,7 @@
<record id="action_create_ab_mass_mailings_from_campaign" model="ir.actions.act_window">
<field name="name">Mailings</field>
<field name="res_model">mail.mass_mailing</field>
<field name="res_model">mailing.mailing</field>
<field name="view_mode">form,kanban,tree</field>
<field name="context">{
'search_default_assigned_to_me': 1,
+2 -2
View File
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import test_mailing
from . import mail_compose_message
from . import mailing_list_merge
from . import mass_mailing_schedule_date
from . import mailing_mailing_schedule_date
from . import mailing_mailing_test
@@ -9,7 +9,7 @@ class MailComposeMessage(models.TransientModel):
_inherit = 'mail.compose.message'
mass_mailing_campaign_id = fields.Many2one('mail.mass_mailing.campaign', string='Mass Mailing Campaign')
mass_mailing_id = fields.Many2one('mail.mass_mailing', string='Mass Mailing', ondelete='cascade')
mass_mailing_id = fields.Many2one('mailing.mailing', string='Mass Mailing', ondelete='cascade')
mass_mailing_name = fields.Char(string='Mass Mailing Name')
mailing_list_ids = fields.Many2many('mailing.list', string='Mailing List')
@@ -27,7 +27,7 @@ class MailComposeMessage(models.TransientModel):
if not mass_mailing:
reply_to_mode = 'email' if self.no_auto_thread else 'thread'
reply_to = self.reply_to if self.no_auto_thread else False
mass_mailing = self.env['mail.mass_mailing'].create({
mass_mailing = self.env['mailing.mailing'].create({
'mass_mailing_campaign_id': self.mass_mailing_campaign_id.id,
'name': self.mass_mailing_name,
'template_id': self.template_id.id,
@@ -5,12 +5,12 @@ from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class MassMailingScheduleDate(models.TransientModel):
_name = 'mass.mailing.schedule.date'
class MailingMailingScheduleDate(models.TransientModel):
_name = 'mailing.mailing.schedule.date'
_description = 'Mass Mailing Scheduling'
schedule_date = fields.Datetime(string='Schedule in the Future')
mass_mailing_id = fields.Many2one('mail.mass_mailing', required=True)
mass_mailing_id = fields.Many2one('mailing.mailing', required=True)
@api.constrains('schedule_date')
def _check_schedule_date(self):
@@ -1,8 +1,8 @@
<?xml version="1.0"?>
<odoo>
<record id="mass_mailing_schedule_date_view_form" model="ir.ui.view">
<field name="name">mass.mailing.schedule.date.view.form</field>
<field name="model">mass.mailing.schedule.date</field>
<record id="mailing_mailing_schedule_date_view_form" model="ir.ui.view">
<field name="name">mailing.mailing.schedule.date.view.form</field>
<field name="model">mailing.mailing.schedule.date</field>
<field name="arch" type="xml">
<form string="Take Future Schedule Date">
<group>
@@ -18,9 +18,9 @@
</field>
</record>
<record id="mass_mailing_schedule_date_action" model="ir.actions.act_window">
<record id="mailing_mailing_schedule_date_action" model="ir.actions.act_window">
<field name="name">When do you want to send your mailing?</field>
<field name="res_model">mass.mailing.schedule.date</field>
<field name="res_model">mailing.mailing.schedule.date</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">form</field>
<field name="target">new</field>
@@ -5,12 +5,12 @@ from odoo import api, fields, models, tools
class TestMassMailing(models.TransientModel):
_name = 'mail.mass_mailing.test'
_name = 'mailing.mailing.test'
_description = 'Sample Mail Wizard'
email_to = fields.Char(string='Recipients', required=True,
help='Comma-separated list of email addresses.', default=lambda self: self.env['mail.message']._get_default_from())
mass_mailing_id = fields.Many2one('mail.mass_mailing', string='Mailing', required=True, ondelete='cascade')
mass_mailing_id = fields.Many2one('mailing.mailing', string='Mailing', required=True, ondelete='cascade')
def send_mail_test(self):
self.ensure_one()
@@ -2,8 +2,8 @@
<odoo>
<record model="ir.ui.view" id="view_mail_mass_mailing_test_form">
<field name="name">mail.mass_mailing.test.form</field>
<field name="model">mail.mass_mailing.test</field>
<field name="name">mailing.mailing.test.form</field>
<field name="model">mailing.mailing.test</field>
<field name="arch" type="xml">
<form string="Send a Sample Mail">
<p class="text-muted">
@@ -22,7 +22,7 @@
<record id="action_mail_mass_mailing_test" model="ir.actions.act_window">
<field name="name">Mailing Test</field>
<field name="res_model">mail.mass_mailing.test</field>
<field name="res_model">mailing.mailing.test</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
+1 -1
View File
@@ -9,7 +9,7 @@
'description': """UTM and mass mailing on lead / opportunities""",
'depends': ['crm', 'mass_mailing'],
'data': [
'views/mass_mailing_views.xml',
'views/mailing_mailing_views.xml',
],
'demo': [
'data/mass_mailing_demo.xml',
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<odoo>
<data noupdate="1">
<record id="mass_mail_lead_0" model="mail.mass_mailing">
<record id="mass_mail_lead_0" model="mailing.mailing">
<field name="name">Lead Recall</field>
<field name="subject">We want to hear form you !</field>
<field name="state">in_queue</field>
+1 -1
View File
@@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import mass_mailing
from . import mailing_mailing
@@ -7,8 +7,8 @@ from odoo.osv import expression
class MassMailing(models.Model):
_name = 'mail.mass_mailing'
_inherit = 'mail.mass_mailing'
_name = 'mailing.mailing'
_inherit = 'mailing.mailing'
crm_lead_activated = fields.Boolean('Use Leads', compute='_compute_crm_lead_activated')
crm_lead_count = fields.Integer('Lead Count', groups='sales_team.group_sale_salesman', compute='_compute_crm_lead_and_opportunities_count')
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="mail_mass_mailing_view_form" model="ir.ui.view">
<field name="name">mail.mass_mailing.view.form.inherit.crm</field>
<field name="model">mail.mass_mailing</field>
<record id="mailing_mailing_view_form" model="ir.ui.view">
<field name="name">mailing.mailing.view.form.inherit.crm</field>
<field name="model">mailing.mailing</field>
<field name="inherit_id" ref="mass_mailing.view_mail_mass_mailing_form"/>
<field name="arch" type="xml">
<xpath expr="//button[hasclass('o_mass_mailing_button')]" position="before">
+1 -1
View File
@@ -2,4 +2,4 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import event
from . import mass_mailing
from . import mailing_mailing
+1 -1
View File
@@ -15,7 +15,7 @@ class Event(models.Model):
mass_mailing_action = dict(
name='Mass Mail Attendees',
type='ir.actions.act_window',
res_model='mail.mass_mailing',
res_model='mailing.mailing',
view_mode='form',
target='current',
context=dict(
@@ -2,10 +2,11 @@ from odoo import models, api
class MassMailingCampaign(models.Model):
_inherit = "mail.mass_mailing"
_inherit = "mailing.mailing"
@api.onchange('mailing_model_id', 'contact_list_ids')
def _onchange_model_and_list(self):
# TDE FIXME: whuuut ?
result = super(MassMailingCampaign, self)._onchange_model_and_list()
if self.mailing_model_name == 'event.registration' and self.mailing_domain == '[]':
self.mailing_domain = self.env.context.get('default_mailing_domain', '[]')
@@ -11,7 +11,7 @@ class Event(models.Model):
mass_mailing_action = dict(
name='Mass Mail Attendees',
type='ir.actions.act_window',
res_model='mail.mass_mailing',
res_model='mailing.mailing',
view_mode='form',
target='current',
context=dict(
+1 -1
View File
@@ -9,7 +9,7 @@
'description': """UTM and mass mailing on sale orders""",
'depends': ['sale', 'mass_mailing'],
'data': [
'views/mass_mailing_views.xml',
'views/mailing_mailing_views.xml',
],
'demo': [
'data/mass_mailing_demo.xml',
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<odoo>
<data noupdate="0">
<record id="mass_mail_sale_order_0" model="mail.mass_mailing">
<record id="mass_mail_sale_order_0" model="mailing.mailing">
<field name="name">Sale Promotion 1</field>
<field name="subject">Our last promotions, just for you !</field>
<field name="state">in_queue</field>
+1 -1
View File
@@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import mass_mailing
from . import mailing_mailing
@@ -6,8 +6,8 @@ from odoo import api, fields, models
class MassMailing(models.Model):
_name = 'mail.mass_mailing'
_inherit = 'mail.mass_mailing'
_name = 'mailing.mailing'
_inherit = 'mailing.mailing'
sale_quotation_count = fields.Integer('Quotation Count', groups='sales_team.group_sale_salesman', compute='_compute_sale_quotation_count')
sale_invoiced_amount = fields.Integer('Invoiced Amount', groups='sales_team.group_sale_salesman', compute='_compute_sale_invoiced_amount')
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="mail_mass_mailing_view_form" model="ir.ui.view">
<field name="name">mail.mass_mailing.view.form.inherit.sale</field>
<field name="model">mail.mass_mailing</field>
<record id="mailing_mailing_view_form" model="ir.ui.view">
<field name="name">mailing.mailing.view.form.inherit.sale</field>
<field name="model">mailing.mailing</field>
<field name="inherit_id" ref="mass_mailing.view_mail_mass_mailing_form"/>
<field name="arch" type="xml">
<xpath expr="//button[hasclass('o_mass_mailing_button')]" position="before">
@@ -15,7 +15,7 @@ class TestComposer(common.SavepointCase):
)
test_record = self.env['res.partner'].create({'name': 'Mass Mail Partner'})
mass_mail_record = self.env['mail.mass_mailing'].with_user(test_user).create({
mass_mail_record = self.env['mailing.mailing'].with_user(test_user).create({
'name': 'Test',
'subject': 'Test',
'state': 'draft',
+1 -1
View File
@@ -45,7 +45,7 @@ class TestLinkTracker(common.MassMailingCase):
@users('marketing')
def test_add_link_mail_stat(self):
mailing = self.env['mail.mass_mailing'].create({'name': 'Test Mailing', "subject": "Hi!"})
mailing = self.env['mailing.mailing'].create({'name': 'Test Mailing', "subject": "Hi!"})
code = self.link.code
self.assertEqual(self.link.count, 1)
stat = self.env['mailing.trace'].create({'mass_mailing_id': mailing.id})
@@ -7,7 +7,7 @@ class TestAutoBlacklist(common.TransactionCase):
def test_mail_bounced_auto_blacklist(self):
mass_mailing_contacts = self.env['mailing.contact']
mass_mailing = self.env['mail.mass_mailing']
mass_mailing = self.env['mailing.mailing']
mail_blacklist = self.env['mail.blacklist']
mail_statistics = self.env['mailing.trace']
mail_thread = self.env['mail.thread']
@@ -32,7 +32,7 @@ class TestMassMail(MassMailingCase):
@mute_logger('odoo.addons.mail.models.mail_mail', 'odoo.models.unlink')
def test_link_tracker(self):
_url = 'https://www.example.com/foo/bar?baz=qux'
mailing = self.env['mail.mass_mailing'].create({
mailing = self.env['mailing.mailing'].create({
'name': 'TestMailing',
'subject': 'Test',
'medium_id': self.test_medium.id,
@@ -69,7 +69,7 @@ class TestAccessRights(TransactionCase):
def test_01_mass_mail_blacklist(self):
mass_mailing_contacts = self.env['mailing.contact']
mass_mailing = self.env['mail.mass_mailing']
mass_mailing = self.env['mailing.mailing']
mail_blacklist = self.env['mail.blacklist']
# create mailing contact record
@@ -113,7 +113,7 @@ class TestAccessRights(TransactionCase):
mass_mailing_contacts = self.env['mailing.contact']
mass_mailing_lists = self.env['mailing.list']
mass_mailing_optout = self.env['mailing.contact.subscription']
mass_mailing = self.env['mail.mass_mailing']
mass_mailing = self.env['mailing.mailing']
# create mailing contact record
mailing_contact_1 = mass_mailing_contacts.create({'name': 'test email 1', 'email': 'test1@email.com'})
@@ -162,7 +162,7 @@ class TestAccessRights(TransactionCase):
mass_mailing_contacts = self.env['mailing.contact']
mass_mailing_lists = self.env['mailing.list']
mass_mailing_optout = self.env['mailing.contact.subscription']
mass_mailing = self.env['mail.mass_mailing']
mass_mailing = self.env['mailing.mailing']
# create mailing contact record
mailing_contact_1 = mass_mailing_contacts.create({'name': 'test email 1', 'email': 'test1@email.com'})
@@ -219,7 +219,7 @@ class TestAccessRights(TransactionCase):
mass_mailing_contacts = self.env['mailing.contact']
mass_mailing_lists = self.env['mailing.list']
mass_mailing_optout = self.env['mailing.contact.subscription']
mass_mailing = self.env['mail.mass_mailing']
mass_mailing = self.env['mailing.mailing']
# create mailing contact record
mailing_contact_1 = mass_mailing_contacts.create({'name': 'test email (A)', 'email': 'test@email.com'})
@@ -271,7 +271,7 @@ class TestOnResPartner(TransactionCase):
def test_mass_mail_on_res_partner(self):
partners = self.env['res.partner']
mass_mailing = self.env['mail.mass_mailing']
mass_mailing = self.env['mailing.mailing']
# create mailing contact record
partner_a = partners.create({
@@ -41,7 +41,7 @@ class TestMassMailPerformance(TestMassMailPerformanceBase):
@warmup
@mute_logger('odoo.addons.mail.models.mail_mail', 'odoo.models.unlink', 'odoo.tests')
def test_send_mailing(self):
mailing = self.env['mail.mass_mailing'].create({
mailing = self.env['mailing.mailing'].create({
'name': 'Test',
'subject': 'Test',
'body_html': '<p>Hello <a role="button" href="https://www.example.com/foo/bar?baz=qux">quux</a><a role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>',
@@ -79,7 +79,7 @@ class TestMassMailBlPerformance(TestMassMailPerformanceBase):
@warmup
@mute_logger('odoo.addons.mail.models.mail_mail', 'odoo.models.unlink', 'odoo.tests')
def test_send_mailing_w_bl(self):
mailing = self.env['mail.mass_mailing'].create({
mailing = self.env['mailing.mailing'].create({
'name': 'Test',
'subject': 'Test',
'body_html': '<p>Hello <a role="button" href="https://www.example.com/foo/bar?baz=qux">quux</a><a role="button" href="/unsubscribe_from_list">Unsubscribe</a></p>',