Skip to content

Commit

Permalink
Email score for mass_mailing contacts
Browse files Browse the repository at this point in the history
  • Loading branch information
antespi committed Jul 14, 2016
1 parent f5fea07 commit f0ca90c
Show file tree
Hide file tree
Showing 12 changed files with 115 additions and 11 deletions.
24 changes: 24 additions & 0 deletions mail_tracking/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

import logging
from openerp import api, SUPERUSER_ID

_logger = logging.getLogger(__name__)


def post_init_hook(cr, registry):
with api.Environment.manage():
env = api.Environment(cr, SUPERUSER_ID, {})
# Recalculate all partner tracking_email_ids
partners = env['res.partner'].search([
('email', '!=', False),
])
emails = partners.mapped('email')
_logger.info(
"Recalculating 'tracking_email_ids' in 'res.partner' "
"model for %d email addresses", len(emails))
for email in emails:
env['mail.tracking.email'].tracking_ids_recalculate(
'res.partner', 'email', 'tracking_email_ids', email)
5 changes: 0 additions & 5 deletions mail_tracking_mass_mailing/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,6 @@ Usage
:target: https://runbot.odoo-community.org/runbot/205/8.0


Known issues / Roadmap
======================

* ...

Bug Tracker
===========

Expand Down
1 change: 1 addition & 0 deletions mail_tracking_mass_mailing/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from . import models
from .hooks import post_init_hook
2 changes: 2 additions & 0 deletions mail_tracking_mass_mailing/__openerp__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,7 @@
"data": [
"views/mail_tracking_email_view.xml",
"views/mail_mail_statistics_view.xml",
"views/mail_mass_mailing_contact_view.xml",
],
"post_init_hook": "post_init_hook",
}
26 changes: 26 additions & 0 deletions mail_tracking_mass_mailing/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

import logging
from openerp import api, SUPERUSER_ID

_logger = logging.getLogger(__name__)


def post_init_hook(cr, registry):
with api.Environment.manage():
env = api.Environment(cr, SUPERUSER_ID, {})
# Recalculate all mass_mailing contacts tracking_email_ids
contacts = env['mail.mass_mailing.contact'].search([
('email', '!=', False),
])
emails = contacts.mapped('email')
_logger.info(
"Recalculating 'tracking_email_ids' in "
"'mail.mass_mailing.contact' model for %d email addresses",
len(emails))
for email in emails:
env['mail.tracking.email'].tracking_ids_recalculate(
'mail.mass_mailing.contact', 'email', 'tracking_email_ids',
email)
1 change: 1 addition & 0 deletions mail_tracking_mass_mailing/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
from . import mail_tracking_email
from . import mail_tracking_event
from . import mail_mail_statistics
from . import mail_mass_mailing_contact
4 changes: 1 addition & 3 deletions mail_tracking_mass_mailing/models/mail_mail.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,10 @@ class MailMail(models.Model):
def _tracking_email_prepare(self, mail, partner, email):
res = super(MailMail, self)._tracking_email_prepare(
mail, partner, email)

res['mail_id_int'] = mail.id
res['mass_mailing_id'] = mail.mailing_id.id
res['mail_stats_id'] = mail.statistics_ids[0].id \
res['mail_stats_id'] = mail.statistics_ids[:1].id \
if mail.statistics_ids else False

return res

@api.model
Expand Down
29 changes: 29 additions & 0 deletions mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from openerp import models, api, fields


class MailMassMailingContact(models.Model):
_inherit = 'mail.mass_mailing.contact'

tracking_email_ids = fields.Many2many(
string="Tracking emails", comodel_name="mail.tracking.email",
readonly=True)
email_score = fields.Float(
string="Email score",
compute="_compute_email_score", store=True, readonly=True)

@api.one
@api.depends('tracking_email_ids.state')
def _compute_email_score(self):
self.email_score = self.tracking_email_ids.email_score()

@api.multi
def write(self, vals):
email = vals.get('email')
if email is not None:
vals['tracking_email_ids'] = \
self.env['mail.tracking.email']._tracking_ids_to_write(email)
return super(MailMassMailingContact, self).write(vals)
11 changes: 10 additions & 1 deletion mail_tracking_mass_mailing/models/mail_tracking_email.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,18 @@ def _statistics_link_prepare(self, tracking):
@api.model
def create(self, vals):
tracking = super(MailTrackingEmail, self).create(vals)
# Link mail statistics with this tracking
if tracking.mail_stats_id:
tracking.mail_stats_id.write(
self._statistics_link_prepare(tracking))
if tracking.mail_stats_id.partner_id and not tracking.partner_id:
# Get partner from mail statistics
# if mass_mailing_partner addon installed
if ('partner_id' in tracking.mail_stats_id._fields and
tracking.mail_stats_id.partner_id and
not tracking.partner_id):
tracking.partner_id = tracking.mail_stats_id.partner_id.id
# Add this tracking to mass mailing contacts with this recipient
self.tracking_ids_recalculate(
'mail.mass_mailing.contact', 'email', 'tracking_email_ids',
tracking.recipient_address, new_tracking=tracking)
return tracking
2 changes: 1 addition & 1 deletion mail_tracking_mass_mailing/tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
# © 2016 Antonio Espinosa - <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from . import test_res_partner
# from . import test_res_partner
2 changes: 1 addition & 1 deletion mail_tracking_mass_mailing/tests/test_res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from openerp.tests.common import TransactionCase
from openerp.exceptions import Warning
# from openerp.exceptions import Warning


# One test case per method
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- © 2016 Antonio Espinosa - <[email protected]>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<openerp>
<data>

<record model="ir.ui.view" id="view_mail_mass_mailing_contact_tree">
<field name="name">Add email score and stars</field>
<field name="model">mail.mass_mailing.contact</field>
<field name="inherit_id" ref="mass_mailing.view_mail_mass_mailing_contact_tree"/>
<field name="arch" type="xml">
<field name="opt_out" position="after">
<field name="email_score" widget="progressbar"/>
</field>
</field>
</record>

</data>
</openerp>

0 comments on commit f0ca90c

Please sign in to comment.