Skip to content

Commit

Permalink
[MIG] mail_tracking: Migration to 11.0
Browse files Browse the repository at this point in the history
  • Loading branch information
chienandalu authored and yajo committed May 7, 2018
1 parent 150d0d0 commit bae9999
Show file tree
Hide file tree
Showing 24 changed files with 122 additions and 168 deletions.
11 changes: 6 additions & 5 deletions mail_tracking/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ This module shows email notification tracking status for any messages in
mail thread (chatter). Each notified partner will have an intuitive icon just
right to his name.


Installation
============

Expand All @@ -20,7 +19,6 @@ you need to add ``mail_tracking`` addon to wide load addons list
(by default, only ``web`` addon), setting ``--load`` option.
For example, ``--load=web,mail_tracking``


Usage
=====

Expand Down Expand Up @@ -63,7 +61,7 @@ These are all available status icons:

.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/205/10.0
:target: https://runbot.odoo-community.org/runbot/205/11.0

If you want to see all tracking emails and events you can go to

Expand Down Expand Up @@ -93,8 +91,11 @@ Images
Contributors
------------

* Pedro M. Baeza <pedro.baeza@tecnativa.com>
* Antonio Espinosa <antonio.espinosa@tecnativa.com>
* `Tecnativa <https://www.tecnativa.com>`_:

* Pedro M. Baeza <pedro.baeza@tecnativa.com>
* Antonio Espinosa <antonio.espinosa@tecnativa.com>
* David Vidal <david.vidal@tecnativa.com>

Maintainer
----------
Expand Down
3 changes: 0 additions & 3 deletions mail_tracking/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# flake8: noqa

from . import models
from . import controllers
Expand Down
8 changes: 4 additions & 4 deletions mail_tracking/__manifest__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2018 David Vidal - <david.vidal@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

{
"name": "Email tracking",
"summary": "Email tracking system for all mails sent",
"version": "10.0.1.1.1",
"version": "11.0.1.0.0",
"category": "Social Network",
"website": "http://www.tecnativa.com",
"website": "http://github.com/OCA/social",
"author": "Tecnativa, "
"Odoo Community Association (OCA)",
"license": "AGPL-3",
Expand Down
3 changes: 0 additions & 3 deletions mail_tracking/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# flake8: noqa

from . import main
9 changes: 4 additions & 5 deletions mail_tracking/controllers/main.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

import werkzeug
Expand All @@ -8,7 +7,7 @@
import logging
_logger = logging.getLogger(__name__)

BLANK = 'R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='
BLANK = b'R0lGODlhAQABAIAAANvf7wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='


def _env_get(db, callback, tracking_id, event_type, **kw):
Expand All @@ -22,7 +21,7 @@ def _env_get(db, callback, tracking_id, event_type, **kw):
reg = registry(db)
except OperationalError:
_logger.warning("Selected BD '%s' not found", db)
except: # pragma: no cover
except Exception: # pragma: no cover
_logger.warning("Selected BD '%s' connection error", db)
if reg:
_logger.info("New environment for database '%s'", db)
Expand Down Expand Up @@ -83,5 +82,5 @@ def mail_tracking_open(self, db, tracking_email_id, **kw):
# Always return GIF blank image
response = werkzeug.wrappers.Response()
response.mimetype = 'image/gif'
response.data = BLANK.decode('base64')
response.data = BLANK
return response
2 changes: 1 addition & 1 deletion mail_tracking/data/tracking_data.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
<!-- Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<odoo>
<record forcecreate="True" id="decimal_tracking_timestamp" model="decimal.precision">
Expand Down
3 changes: 1 addition & 2 deletions mail_tracking/hooks.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

import logging
Expand Down
3 changes: 0 additions & 3 deletions mail_tracking/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# flake8: noqa

from . import ir_mail_server
from . import mail_mail
Expand Down
18 changes: 6 additions & 12 deletions mail_tracking/models/ir_mail_server.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

import re
Expand All @@ -20,16 +19,10 @@ def _tracking_headers_add(self, tracking_email_id, headers):

def _tracking_email_id_body_get(self, body):
body = body or ''
tracking_email_id = False
# https://regex101.com/r/lW4cB1/2
match = re.search(
r'<img[^>]*data-odoo-tracking-email=["\']([0-9]*)["\']', body)
if match:
try:
tracking_email_id = int(match.group(1))
except: # pragma: no cover
pass
return tracking_email_id
return int(match.group(1)) if match.group(1) else False

def build_email(self, email_from, email_to, subject, body, email_cc=None,
email_bcc=None, reply_to=False, attachments=None,
Expand Down Expand Up @@ -64,14 +57,14 @@ def _smtp_server_get(self, mail_server_id, smtp_server):
mail_server = mail_server_ids[0] if mail_server_ids else None
if mail_server:
smtp_server_used = mail_server.smtp_host
else: # pragma: no cover
else:
smtp_server_used = smtp_server or tools.config.get('smtp_server')
return smtp_server_used

@api.model
def send_email(self, message, mail_server_id=None, smtp_server=None,
smtp_port=None, smtp_user=None, smtp_password=None,
smtp_encryption=None, smtp_debug=False):
smtp_encryption=None, smtp_debug=False, smtp_session=None):
message_id = False
tracking_email = self._tracking_email_get(message)
smtp_server_used = self.sudo()._smtp_server_get(
Expand All @@ -82,7 +75,8 @@ def send_email(self, message, mail_server_id=None, smtp_server=None,
message, mail_server_id=mail_server_id,
smtp_server=smtp_server, smtp_port=smtp_port,
smtp_user=smtp_user, smtp_password=smtp_password,
smtp_encryption=smtp_encryption, smtp_debug=smtp_debug)
smtp_encryption=smtp_encryption, smtp_debug=smtp_debug,
smtp_session=smtp_session)
except Exception as e:
if tracking_email:
tracking_email.smtp_error(self, smtp_server_used, e)
Expand Down
3 changes: 1 addition & 2 deletions mail_tracking/models/mail_mail.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

import time
Expand Down
3 changes: 1 addition & 2 deletions mail_tracking/models/mail_message.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import models, api
Expand Down
24 changes: 8 additions & 16 deletions mail_tracking/models/mail_tracking_email.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

import logging
import urlparse
import urllib.parse
import time
import re
from datetime import datetime
Expand Down Expand Up @@ -93,27 +92,20 @@ class MailTrackingEmail(models.Model):
string="Tracking events", comodel_name='mail.tracking.event',
inverse_name='tracking_email_id', readonly=True)

@api.model
def _email_score_tracking_filter(self, domain, order='time desc',
limit=10):
"""Default tracking search. Ready to be inherited."""
return self.search(domain, limit=limit, order=order)

@api.model
def email_is_bounced(self, email):
if email:
return len(self._email_score_tracking_filter([
return self.search_count([
('recipient_address', '=', email.lower()),
('state', 'in', ('error', 'rejected', 'spam', 'bounced')),
])) > 0
]) > 0
return False

@api.model
def email_score_from_email(self, email):
if email:
return self._email_score_tracking_filter([
('recipient_address', '=', email.lower())
]).email_score()
return self.search([
('recipient_address', '=', email.lower())]).email_score()
return 0.

@api.model
Expand Down Expand Up @@ -183,7 +175,7 @@ def _get_mail_tracking_img(self):
'db': self.env.cr.dbname,
'tracking_email_id': self.id,
})
track_url = urlparse.urljoin(base_url, path_url)
track_url = urllib.parse.urljoin(base_url, path_url)
return (
'<img src="%(url)s" alt="" '
'data-odoo-tracking-email="%(tracking_email_id)s"/>' % {
Expand All @@ -197,7 +189,7 @@ def _partners_email_bounced_set(self, reason, event=None):
if event and event.recipient_address:
recipients.append(event.recipient_address)
else:
recipients = list(filter(None, self.mapped('recipient_address')))
recipients = [x for x in self.mapped('recipient_address') if x]
for recipient in recipients:
self.env['res.partner'].search([
('email', '=ilike', recipient)
Expand Down
3 changes: 1 addition & 2 deletions mail_tracking/models/mail_tracking_event.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

import re
Expand Down
3 changes: 1 addition & 2 deletions mail_tracking/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
# © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import models, api, fields
Expand Down
2 changes: 1 addition & 1 deletion mail_tracking/security/mail_tracking_email_security.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
<!-- Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -->
<odoo>

Expand Down
2 changes: 1 addition & 1 deletion mail_tracking/static/src/css/mail_tracking.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* © 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
/* Copyright 2016 Antonio Espinosa - <antonio.espinosa@tecnativa.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). */

.mail_tracking span {
Expand Down
Loading

0 comments on commit bae9999

Please sign in to comment.