groupeurd_newsletter v0.5

Ajout de la réponse aux besoins suivants:
		- Ajout section "Dernières publications" aux modèles Newsletter URD
		- Empêcher pour un publipostage de faire un second clic "Envoyer à tous" si l'envoi de mails est déjà planifié
		- Ajouter automatiquement un lien de désinscription s'il n'est pas ajouté manuellement
This commit is contained in:
Olivier Sarrat 2018-04-18 17:40:31 +02:00
parent 9f584879a4
commit de1487730d
5 changed files with 191 additions and 4 deletions

View File

@ -11,13 +11,16 @@
- Unicité de l'abonné dans chaque liste
- Droits d'utilisateur pour limiter accès à uniquement publipostages et listes de diffusion
- Retirer droit de suppression d'abonné au profil Responsable Marketing
- Retirer la gestion des nom des abonnés (dans la liste ou dans le formulaire)
- Retirer la gestion des noms des abonnés (dans la liste ou dans le formulaire)
- 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
- 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__)
- Ajout section "Dernières publications" aux modèles Newsletter URD
- Empêcher pour un publipostage de faire un second clic "Envoyer à tous" si l'envoi de mails est déjà planifié
- Ajouter automatiquement un lien de désinscription s'il n'est pas ajouté manuellement
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.
@ -31,7 +34,7 @@
# Check https://github.com/odoo/odoo/blob/master/openerp/addons/base/module/module_data.xml
# for the full list
'category': 'Marketing',
'version': '0.4',
'version': '0.5',
# any module necessary for this one to work correctly
'depends': ['base','mass_mailing','marketing','website_mail'],

View File

@ -9,6 +9,9 @@ from openerp.osv import osv
from openerp import tools
from openerp.tools.translate import _
import logging
_logger = logging.getLogger(__name__)
# Overrides mass mailing Contact for this module purpose
class contact(models.Model):
_name = "mail.mass_mailing.contact"
@ -70,7 +73,11 @@ class MailMail(osv.Model):
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)
if body.count('__UNSUBSCRIBE_URL__') > 0:
body = body.replace('__UNSUBSCRIBE_URL__', unsubscribe_url)
else:
unsubscribe_link = '<small><a href="%s">%s</a></small>' % (unsubscribe_url, _('Click to unsubscribe'))
body = tools.append_content_to_html(body,unsubscribe_link, plaintext=False, container_tag='p')
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)
@ -95,10 +102,13 @@ class TestMassMailing(osv.TransientModel):
mass_mailing_id = fields.Many2one('mail.mass_mailing', 'Mailing', required=True, ondelete='cascade')
def send_mail_test(self, cr, uid, ids, context=None):
_logger.info('entering new send_mail_test')
#Add a 'mass_mailing_test' flag in the context to be able to build correct HTML_VERSION/UNSUBSCRIBE URLs in test mode
context['mass_mailing_test'] = True
Mail = self.pool['mail.mail']
_logger.info('before send_mail_test for loop')
for wizard in self.browse(cr, uid, ids, context=context):
mailing = wizard.mass_mailing_id
test_emails = tools.email_split(wizard.email_to)
@ -117,11 +127,18 @@ class TestMassMailing(osv.TransientModel):
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)
if unsubscribe_url:
if mailing.body_html.count('__UNSUBSCRIBE_URL__') > 0:
body = mailing.body_html.replace('__UNSUBSCRIBE_URL__', unsubscribe_url)
else:
unsubscribe_link = '<small><a href="%s">%s</a></small>' % (unsubscribe_url, _('Click to unsubscribe'))
body = tools.append_content_to_html(mailing.body_html,unsubscribe_link, plaintext=False, container_tag='p')
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)
_logger.info('just before new send_mail_test Mail.send')
Mail.send(cr, uid, mail_ids, context=context)
_logger.info('just after new send_mail_test Mail.send')
self.pool['mail.mass_mailing'].write(cr, uid, [mailing.id], {'state': 'test'}, context=context)
return True

View File

@ -207,6 +207,91 @@
</div>
<div id="publication-header">
<table style="background-color: rgb(244, 244, 244);" align="center" border="0" cellpadding="0" cellspacing="0" width="640">
<tr>
<td>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="600">
<tbody>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td style="font-size: 0pt;" height="1"><img src="http://www.urd.org/newsletter/urd-img/separateur.png" alt="separateur.png" height="1" width="600"></td>
</tr>
<tr>
<td style="font-size: 0pt;" height="13"><br>
</td>
</tr>
<tr>
<td style="font-family: Georgia,Times,serif; font-variant: small-caps; font-size: 14px; text-align: left; color: rgb(0, 0, 0);" height="14">DERNIÈRES&nbsp; PUBLICATIONS&nbsp; DU&nbsp; GROUPE URD</td>
</tr>
<tr>
<td style="font-size: 0pt;" height="18"><br>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
<div>
<table style="background-color: rgb(244, 244, 244);" align="center" border="0" cellpadding="0" cellspacing="0" width="640">
<tr>
<td>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="600">
<tbody>
<tr>
<td style="font-size: 0pt; text-align: center;" width="130">
<div style="text-align: center;"> </div>
<div style="text-align: center;"><a href="http://www.fmreview.org/sites/fmr/files/FMRdownloads/en/resettlement.pdf"><img style="border: 0px solid ; float: left;" src="http://www.urd.org/newsletter/urd-img/2017-58/Veille1.PNG" ></a></div>
</td>
<td style="font-size: 0pt;" width="30"><br>
</td>
<td style="font-size: 0pt;" valign="top" width="440">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="440">
<tbody>
<tr>
<td style="font-family: Georgia,Times,serif; font-size: 18px; font-weight: bold; color: rgb(241, 157, 43); text-align: justify;" height="18">Forced Migration Review, « Resettlement » </td>
</tr>
<tr>
<td style="font-size: 0pt;" height="14"><br>
</td>
</tr>
<tr>
<td style="font-family: Arial,Helvetica,sans-serif; font-size: 14px; color: rgb(144, 144, 144); line-height: 18px; text-align: justify;" valign="top">Ce
numéro de la revue des migrations forcées sintéresse aux modalités et
aux enjeux de la réinstallation, à la façon dont celle-ci est gérée,
aussi bien financièrement quhumainement. Les articles présentent
différentes études de cas, des exemples de réinstallation positifs et
dautres plus négatifs. Des retours en arrière historiques montrent par
exemple la réinstallation des réfugiés hongrois en 1956. Des articles
généraux clôturent la revue. <a style="color: rgb(241, 157, 43); font-size: 12px; text-decoration: none;" href="http://www.urd.org/Veille-bibliographique-mars-2017?artpage=3-11#outil_sommaire_2">En
savoir plus</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="font-size: 0pt; vertical-align: top;" height="14">o<br />
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
<div id="veille-header">
<table style="background-color: rgb(244, 244, 244);" align="center" border="0" cellpadding="0" cellspacing="0" width="640">
<tr>
@ -342,6 +427,8 @@
</table>
</div>
<div id="footer">
<p style="font-family: Arial,Helvetica,sans-serif; font-size: 11px; color: rgb(145, 145, 145); text-align: center; line-height: 18px;">
© Groupe URD - La Fontaine des Marins - 26170 PLAISIANS - Tel :+33 (0)4

View File

@ -143,6 +143,69 @@
</div>
</div>
<!-- Dernière publication Newsletter Groupe URD - FR -->
<div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_text_image.png"/>
<span class="oe_snippet_thumbnail_title">Publi FR</span>
</div>
<div class="oe_snippet_body" style="padding:0px; margin:0px">
<table style="background-color: rgb(244, 244, 244);" align="center" border="0" cellpadding="0" cellspacing="0" width="640">
<tr>
<td>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="600">
<tbody>
<tr>
<td style="font-size: 0pt; text-align: center;" width="130">
<div style="text-align: center;"> </div>
<div style="text-align: center;"><a href="http://www.fmreview.org/sites/fmr/files/FMRdownloads/en/resettlement.pdf"><img style="border: 0px solid ; float: left;" src="http://www.urd.org/newsletter/urd-img/2017-58/Veille1.PNG" /></a></div>
</td>
<td style="font-size: 0pt;" width="30"><br />
</td>
<td style="font-size: 0pt;" valign="top" width="440">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="440">
<tbody>
<tr>
<td style="font-family: Georgia,Times,serif; font-size: 18px; font-weight: bold; color: rgb(241, 157, 43); text-align: justify;" height="18">Forced Migration Review, « Resettlement » </td>
</tr>
<tr>
<td style="font-size: 0pt;" height="14"><br />
</td>
</tr>
<tr>
<td style="font-family: Arial,Helvetica,sans-serif; font-size: 14px; color: rgb(144, 144, 144); line-height: 18px; text-align: justify;" valign="top">Ce
numéro de la revue des migrations forcées sintéresse aux modalités et
aux enjeux de la réinstallation, à la façon dont celle-ci est gérée,
aussi bien financièrement quhumainement. Les articles présentent
différentes études de cas, des exemples de réinstallation positifs et
dautres plus négatifs. Des retours en arrière historiques montrent par
exemple la réinstallation des réfugiés hongrois en 1956. Des articles
généraux clôturent la revue. <a style="color: rgb(241, 157, 43); font-size: 12px; text-decoration: none;" href="http://www.urd.org/Veille-bibliographique-mars-2017?artpage=3-11#outil_sommaire_2">En
savoir plus</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style="font-size: 0pt; vertical-align: top;" height="14">o<br />
</td>
<td style="vertical-align: top;"><br />
</td>
<td style="vertical-align: top;"><br />
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
</div>
</div>
<!-- Actualité Newsletter Groupe URD - EN -->
<div>
<div class="oe_snippet_thumbnail">

View File

@ -23,6 +23,23 @@
</field>
</field>
</record>
<record model="ir.ui.view" id="groupeurd_view_mail_mass_mailing_form">
<field name="name">mail.mass_mailing.form</field>
<field name="model">mail.mass_mailing</field>
<field name="inherit_id" ref="mass_mailing.view_mail_mass_mailing_form" />
<field name="arch" type="xml">
<button name="send_mail" position="replace"></button> <!-- Empty replace to remove the first original "send_mail" button. -->
<button name="send_mail" position="replace"> <!-- This second "send_mail" replace will replace the second original "send_mail" with two new buttons. -->
<button name="send_mail" type="object"
attrs="{'invisible': ['|', ('scheduled', '>', 0), '|', ('state', '=', 'done'), ('body_html', '=', False)]}"
class="oe_highlight" string="Send to All" confirm="This will send the email to all recipients. Do you still want to proceed ?"/>
<button name="send_mail" type="object"
attrs="{'invisible': ['|', ('scheduled', '>', 0), '&amp;', ('state', '!=', 'done'), ('body_html', '!=', False)]}"
string="Send to All" confirm="This will send the email to all recipients. Do you still want to proceed ?"/>
</button>
</field>
</record>
</data>
</openerp>