diff --git a/groupeurd_newsletter/__init__.pyc b/groupeurd_newsletter/__init__.pyc deleted file mode 100644 index 962f581..0000000 Binary files a/groupeurd_newsletter/__init__.pyc and /dev/null differ diff --git a/groupeurd_newsletter/__openerp__.py b/groupeurd_newsletter/__openerp__.py index 1981783..563079b 100644 --- a/groupeurd_newsletter/__openerp__.py +++ b/groupeurd_newsletter/__openerp__.py @@ -15,12 +15,13 @@ - Ajouter un champ "unsubscribed_by_odoo_user" qui sera manipulé pour les désincriptions par interface - Afficher champ create_uid pour savoir provenance des contacts - Ne garder que les modèles de courriel de newsletter dans Publipostages/Modèles de courriel - - Retrait insertion automatique lien désinscription - - Message de confirmation de désincription plus verbeux - Modèles de newsletter spécifiques + - Lien vers version HTML (format proposé: __HTML_VERSION_URL__) + - Placement libre du lien de désinscription (format proposé: __UNSUBSCRIBE_URL__) En projet: - Ecraser les propriétés d'un publipostage par les propriétés standard d'un modèle de courriel au moment de la sélection de ce dernier. + - Message de confirmation de désincription plus verbeux. """, 'author': "Groupe URD", @@ -30,7 +31,7 @@ # Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml # for the full list 'category': 'Marketing', - 'version': '0.2', + 'version': '0.3', # any module necessary for this one to work correctly 'depends': ['base','mass_mailing','marketing','website_mail'], diff --git a/groupeurd_newsletter/controllers.pyc b/groupeurd_newsletter/controllers.pyc deleted file mode 100644 index 2a4525e..0000000 Binary files a/groupeurd_newsletter/controllers.pyc and /dev/null differ diff --git a/groupeurd_newsletter/models.py b/groupeurd_newsletter/models.py index cb723e9..afd7498 100644 --- a/groupeurd_newsletter/models.py +++ b/groupeurd_newsletter/models.py @@ -1,8 +1,12 @@ # -*- coding: utf-8 -*- +import urlparse +import werkzeug.urls + from openerp import models, fields, api from openerp.osv import osv +from openerp import tools from openerp.tools.translate import _ # Overrides mass mailing Contact for this module purpose @@ -35,11 +39,84 @@ class MailMail(osv.Model): """Add the mass mailing campaign data to mail""" _name = 'mail.mail' _inherit = ['mail.mail'] - + def _get_unsubscribe_url(self, cr, uid, mail, email_to, msg=None, context=None): - return "" + base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') + url = urlparse.urljoin( + base_url, 'mail/mailing/%(mailing_id)s/unsubscribe?%(params)s' % { + 'mailing_id': mail.mailing_id.id, + 'params': werkzeug.url_encode({'db': cr.dbname, 'res_id': mail.res_id, 'email': email_to}) + } + ) + return '%s' % url + + def _get_html_version_url(self, cr, uid, mail, email_to, context=None): + base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') + url = urlparse.urljoin(base_url, 'newsletter/html_version_%s' % mail.mailing_id.id) + return '%s' % url + + def send_get_email_dict(self, cr, uid, mail, partner=None, context=None): + + email_to = self.send_get_mail_to(cr, uid, mail, partner=partner, context=context) + body = self.send_get_mail_body(cr, uid, mail, partner=partner, context=context) + + if mail.mailing_id and body and email_to: + emails = tools.email_split(email_to[0]) + has_email_to = emails and emails[0] or False + unsubscribe_url = self._get_unsubscribe_url(cr, uid, mail, has_email_to, context=context) + if unsubscribe_url: + body = body.replace('__UNSUBSCRIBE_URL__', unsubscribe_url) + html_version_url = self._get_html_version_url(cr, uid, mail, has_email_to, context=context) + body = body.replace('__HTML_VERSION_URL__', html_version_url) + + body_alternative = tools.html2plaintext(body) + + res = { + 'body': body, + 'body_alternative': body_alternative, + 'subject': self.send_get_mail_subject(cr, uid, mail, partner=partner, context=context), + 'email_to': email_to, + } + + return res + +class TestMassMailing(osv.TransientModel): + _name = 'mail.mass_mailing.test' + _description = 'Sample Mail Wizard' + + email_to = fields.Char('Recipients', required=True,help='Comma-separated list of email addresses.',default=lambda self: self.pool['mail.message']._get_default_from(self.env.cr, self.env.user.id, context=self.env.context)) + mass_mailing_id = fields.Many2one('mail.mass_mailing', 'Mailing', required=True, ondelete='cascade') + + def send_mail_test(self, cr, uid, ids, context=None): + Mail = self.pool['mail.mail'] + for wizard in self.browse(cr, uid, ids, context=context): + mailing = wizard.mass_mailing_id + test_emails = tools.email_split(wizard.email_to) + mail_ids = [] + for test_mail in test_emails: + mail_values = { + 'email_from': mailing.email_from, + 'reply_to': mailing.reply_to, + 'email_to': test_mail, + 'subject': mailing.name, + 'body_html': '', + 'notification': True, + 'mailing_id': mailing.id, + 'attachment_ids': [(4, attachment.id) for attachment in mailing.attachment_ids], + } + mail_mail_obj = Mail.browse(cr, uid, Mail.create(cr, uid, mail_values, context=context), context=context) + unsubscribe_url = Mail._get_unsubscribe_url(cr, uid, mail_mail_obj, test_mail, context=context) + html_version_url = Mail._get_html_version_url(cr, uid, mail_mail_obj, test_mail, context=context) + body = mailing.body_html.replace('__UNSUBSCRIBE_URL__', unsubscribe_url) + body = mailing.body_html.replace('__HTML_VERSION_URL__', html_version_url) + Mail.write(cr, uid, mail_mail_obj.id, {'body_html': mailing.body_html}, context=context) + mail_ids.append(mail_mail_obj.id) + Mail.send(cr, uid, mail_ids, context=context) + self.pool['mail.mass_mailing'].write(cr, uid, [mailing.id], {'state': 'test'}, context=context) + return True + #class MassMailing(osv.Model): #_name = "mail.mass_mailing" #_inherit = "mail.mass_mailing" diff --git a/groupeurd_newsletter/models.pyc b/groupeurd_newsletter/models.pyc deleted file mode 100644 index 3ddcf6c..0000000 Binary files a/groupeurd_newsletter/models.pyc and /dev/null differ diff --git a/groupeurd_newsletter/newsletter-en-template.xml b/groupeurd_newsletter/newsletter-en-template.xml index f6042f1..dba61d9 100644 --- a/groupeurd_newsletter/newsletter-en-template.xml +++ b/groupeurd_newsletter/newsletter-en-template.xml @@ -16,7 +16,7 @@