Browse Source
Merge pull request #294 from Tecnativa/11.0-mass_mailing_resend
Merge pull request #294 from Tecnativa/11.0-mass_mailing_resend
[11.0][MIG] mass_mailing_resendpull/300/head
Pedro M. Baeza
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 595 additions and 0 deletions
-
104mass_mailing_resend/README.rst
-
4mass_mailing_resend/__init__.py
-
20mass_mailing_resend/__manifest__.py
-
44mass_mailing_resend/i18n/ca.po
-
44mass_mailing_resend/i18n/de.po
-
48mass_mailing_resend/i18n/es.po
-
52mass_mailing_resend/i18n/fr.po
-
36mass_mailing_resend/i18n/mass_mailing_resend.pot
-
45mass_mailing_resend/i18n/sl.po
-
3mass_mailing_resend/models/__init__.py
-
18mass_mailing_resend/models/mass_mailing.py
-
3mass_mailing_resend/readme/CONTRIBUTORS.rst
-
15mass_mailing_resend/readme/DESCRIPTION.rst
-
3mass_mailing_resend/readme/ROADMAP.rst
-
4mass_mailing_resend/readme/USAGE.rst
-
BINmass_mailing_resend/static/description/icon.png
-
84mass_mailing_resend/static/description/icon.svg
-
3mass_mailing_resend/tests/__init__.py
-
37mass_mailing_resend/tests/test_mass_mailing_resend.py
-
28mass_mailing_resend/views/mass_mailing_views.xml
@ -0,0 +1,104 @@ |
|||
==================== |
|||
Resend mass mailings |
|||
==================== |
|||
|
|||
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|||
!! This file is generated by oca-gen-addon-readme !! |
|||
!! changes will be overwritten. !! |
|||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|||
|
|||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png |
|||
:target: https://odoo-community.org/page/development-status |
|||
:alt: Beta |
|||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png |
|||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html |
|||
:alt: License: AGPL-3 |
|||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsocial-lightgray.png?logo=github |
|||
:target: https://github.com/OCA/social/tree/11.0/mass_mailing_resend |
|||
:alt: OCA/social |
|||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png |
|||
:target: https://translation.odoo-community.org/projects/social-11-0/social-11-0-mass_mailing_resend |
|||
:alt: Translate me on Weblate |
|||
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png |
|||
:target: https://runbot.odoo-community.org/runbot/205/11.0 |
|||
:alt: Try me on Runbot |
|||
|
|||
|badge1| |badge2| |badge3| |badge4| |badge5| |
|||
|
|||
A frequent need for users of mass mailings is to resend one mailing that has |
|||
already been sent in the past to new recipients that haven't received yet that |
|||
mail. But the problem is to know which are the applicable ones. |
|||
|
|||
Odoo already includes a method in its mass mailing logic that avoids to resend |
|||
the same mail 2 times for one mass mailing, and for v9, there was a trick that |
|||
allows to modify the state of a mass mailing from kanban view, covering the |
|||
need. |
|||
|
|||
But now since v10 both status bar in form view and dragging between states in |
|||
kanban are not allowed. |
|||
|
|||
This module introduces a button to restart a mass mailing to draft state, |
|||
allowing you to reevaluate the sending domain or list for performing again |
|||
the mailing. |
|||
|
|||
**Table of contents** |
|||
|
|||
.. contents:: |
|||
:local: |
|||
|
|||
Usage |
|||
===== |
|||
|
|||
* Go to *Email marketing > Mailings > Mass Mailings*. |
|||
* Click on one record that is done or create a new one and send it. |
|||
* You will see a button called "Resend". |
|||
* If you click on it, mass mailing will be set to Draft again. |
|||
|
|||
Known issues / Roadmap |
|||
====================== |
|||
|
|||
* Add an indicator / filter for knowing resent mailings. |
|||
* Include information on the number of new recipients to be sent on the |
|||
resending (through `get_remaining_recipients` method). |
|||
|
|||
Bug Tracker |
|||
=========== |
|||
|
|||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/social/issues>`_. |
|||
In case of trouble, please check there if your issue has already been reported. |
|||
If you spotted it first, help us smashing it by providing a detailed and welcomed |
|||
`feedback <https://github.com/OCA/social/issues/new?body=module:%20mass_mailing_resend%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. |
|||
|
|||
Do not contact contributors directly about support or help with technical issues. |
|||
|
|||
Credits |
|||
======= |
|||
|
|||
Authors |
|||
~~~~~~~ |
|||
|
|||
* Tecnativa |
|||
|
|||
Contributors |
|||
~~~~~~~~~~~~ |
|||
|
|||
* `Tecnativa <https://www.tecnativa.com>`_: |
|||
|
|||
* Pedro M. Baeza |
|||
|
|||
Maintainers |
|||
~~~~~~~~~~~ |
|||
|
|||
This module is maintained by the OCA. |
|||
|
|||
.. image:: https://odoo-community.org/logo.png |
|||
:alt: Odoo Community Association |
|||
:target: https://odoo-community.org |
|||
|
|||
OCA, or the Odoo Community Association, is a nonprofit organization whose |
|||
mission is to support the collaborative development of Odoo features and |
|||
promote its widespread use. |
|||
|
|||
This module is part of the `OCA/social <https://github.com/OCA/social/tree/11.0/mass_mailing_resend>`_ project on GitHub. |
|||
|
|||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
@ -0,0 +1,4 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
from . import models |
@ -0,0 +1,20 @@ |
|||
# Copyright 2017-2018 Tecnativa - Pedro M. Baeza |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
{ |
|||
"name": "Resend mass mailings", |
|||
"version": "11.0.1.0.0", |
|||
"category": "Marketing", |
|||
"website": "https://github.com/OCA/social", |
|||
"author": "Tecnativa, " |
|||
"Odoo Community Association (OCA)", |
|||
"license": "AGPL-3", |
|||
"application": False, |
|||
"installable": True, |
|||
"depends": [ |
|||
"mass_mailing", |
|||
], |
|||
"data": [ |
|||
"views/mass_mailing_views.xml", |
|||
], |
|||
} |
@ -0,0 +1,44 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * mass_mailing_resend |
|||
# |
|||
# Translators: |
|||
# OCA Transbot <transbot@odoo-community.org>, 2018 |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 10.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-01-24 03:51+0000\n" |
|||
"PO-Revision-Date: 2018-01-24 03:51+0000\n" |
|||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2018\n" |
|||
"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" |
|||
"Language: ca\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "" |
|||
"<i class=\"fa fa-info-circle\"/> New sending will be done only to not sent/" |
|||
"new recipients. If you want to resend again the mass mailing to already sent " |
|||
"recipients, click on <b>Emails Sent</b> smart-button for removing the " |
|||
"existing record(s)." |
|||
msgstr "" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.model,name:mass_mailing_resend.model_mail_mass_mailing |
|||
msgid "Mass Mailing" |
|||
msgstr "Correu massiu" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "Resend" |
|||
msgstr "" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: code:addons/mass_mailing_resend/models/mass_mailing.py:16 |
|||
#, python-format |
|||
msgid "You can't resend a mass mailing that is being sent or in draft state." |
|||
msgstr "" |
@ -0,0 +1,44 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * mass_mailing_resend |
|||
# |
|||
# Translators: |
|||
# OCA Transbot <transbot@odoo-community.org>, 2018 |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 10.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-01-24 03:51+0000\n" |
|||
"PO-Revision-Date: 2018-01-24 03:51+0000\n" |
|||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2018\n" |
|||
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" |
|||
"Language: de\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "" |
|||
"<i class=\"fa fa-info-circle\"/> New sending will be done only to not sent/" |
|||
"new recipients. If you want to resend again the mass mailing to already sent " |
|||
"recipients, click on <b>Emails Sent</b> smart-button for removing the " |
|||
"existing record(s)." |
|||
msgstr "" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.model,name:mass_mailing_resend.model_mail_mass_mailing |
|||
msgid "Mass Mailing" |
|||
msgstr "Massenmailing" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "Resend" |
|||
msgstr "" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: code:addons/mass_mailing_resend/models/mass_mailing.py:16 |
|||
#, python-format |
|||
msgid "You can't resend a mass mailing that is being sent or in draft state." |
|||
msgstr "" |
@ -0,0 +1,48 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * mass_mailing_resend |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 10.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2017-11-22 10:42+0000\n" |
|||
"PO-Revision-Date: 2017-11-22 10:42+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"Language: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "" |
|||
"<i class=\"fa fa-info-circle\"/> New sending will be done only to not sent/" |
|||
"new recipients. If you want to resend again the mass mailing to already sent " |
|||
"recipients, click on <b>Emails Sent</b> smart-button for removing the " |
|||
"existing record(s)." |
|||
msgstr "" |
|||
"<i class=\"fa fa-info-circle\"/> El nuevo envío se realizará solo a los " |
|||
"destinatarios no enviados/nuevos. Si quiere reenviar otra vez el correo " |
|||
"masivo a destinatarios ya enviados, pulse en el botón <b>Correos enviados</" |
|||
"b> para eliminar el/los registro/s existentes." |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.model,name:mass_mailing_resend.model_mail_mass_mailing |
|||
msgid "Mass Mailing" |
|||
msgstr "Correo masivo" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "Resend" |
|||
msgstr "Reenviar" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: code:addons/mass_mailing_resend/models/mass_mailing.py:16 |
|||
#, python-format |
|||
msgid "You can't resend a mass mailing that is being sent or in draft state." |
|||
msgstr "" |
|||
"No puede reenviar un correo masivo que está siendo enviado en estado " |
|||
"borrador." |
@ -0,0 +1,52 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * mass_mailing_resend |
|||
# |
|||
# Translators: |
|||
# OCA Transbot <transbot@odoo-community.org>, 2018 |
|||
# Quentin THEURET <odoo@kerpeo.com>, 2018 |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 10.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-02-26 01:46+0000\n" |
|||
"PO-Revision-Date: 2018-02-26 01:46+0000\n" |
|||
"Last-Translator: Quentin THEURET <odoo@kerpeo.com>, 2018\n" |
|||
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" |
|||
"Language: fr\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: nplurals=2; plural=(n > 1);\n" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "" |
|||
"<i class=\"fa fa-info-circle\"/> New sending will be done only to not sent/" |
|||
"new recipients. If you want to resend again the mass mailing to already sent " |
|||
"recipients, click on <b>Emails Sent</b> smart-button for removing the " |
|||
"existing record(s)." |
|||
msgstr "" |
|||
"<i class=\"fa fa-info-circle\"/>Un nouvel envoi sera effectué uniquement aux " |
|||
"nouveaux destinataires ou à ceux qui ne l'ont pas encore reçu. Si vous " |
|||
"souhaitez envoyer à nouveau le publipostage à tous les destinataires, " |
|||
"cliquez sur le bouton <b>Courriels envoyés</b>pour supprimer le(s) " |
|||
"enregistrement(s) existant(s)." |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.model,name:mass_mailing_resend.model_mail_mass_mailing |
|||
msgid "Mass Mailing" |
|||
msgstr "Publipostage" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "Resend" |
|||
msgstr "Renvoyer" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: code:addons/mass_mailing_resend/models/mass_mailing.py:16 |
|||
#, python-format |
|||
msgid "You can't resend a mass mailing that is being sent or in draft state." |
|||
msgstr "" |
|||
"Vous ne pouvez pas renvoyer un publipostage qui est déjà envoyé ou dans un " |
|||
"état brouillon." |
@ -0,0 +1,36 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * mass_mailing_resend |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 10.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "<i class=\"fa fa-info-circle\"/> New sending will be done only to not sent/new recipients. If you want to resend again the mass mailing to already sent recipients, click on <b>Emails Sent</b> smart-button for removing the existing record(s)." |
|||
msgstr "" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.model,name:mass_mailing_resend.model_mail_mass_mailing |
|||
msgid "Mass Mailing" |
|||
msgstr "" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "Resend" |
|||
msgstr "" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: code:addons/mass_mailing_resend/models/mass_mailing.py:16 |
|||
#, python-format |
|||
msgid "You can't resend a mass mailing that is being sent or in draft state." |
|||
msgstr "" |
|||
|
@ -0,0 +1,45 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# * mass_mailing_resend |
|||
# |
|||
# Translators: |
|||
# OCA Transbot <transbot@odoo-community.org>, 2018 |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 10.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-01-24 03:51+0000\n" |
|||
"PO-Revision-Date: 2018-01-24 03:51+0000\n" |
|||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2018\n" |
|||
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" |
|||
"Language: sl\n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" |
|||
"%100==4 ? 2 : 3);\n" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "" |
|||
"<i class=\"fa fa-info-circle\"/> New sending will be done only to not sent/" |
|||
"new recipients. If you want to resend again the mass mailing to already sent " |
|||
"recipients, click on <b>Emails Sent</b> smart-button for removing the " |
|||
"existing record(s)." |
|||
msgstr "" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.model,name:mass_mailing_resend.model_mail_mass_mailing |
|||
msgid "Mass Mailing" |
|||
msgstr "Masovno razpošiljanje" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: model:ir.ui.view,arch_db:mass_mailing_resend.view_mail_mass_mailing_form |
|||
msgid "Resend" |
|||
msgstr "" |
|||
|
|||
#. module: mass_mailing_resend |
|||
#: code:addons/mass_mailing_resend/models/mass_mailing.py:16 |
|||
#, python-format |
|||
msgid "You can't resend a mass mailing that is being sent or in draft state." |
|||
msgstr "" |
@ -0,0 +1,3 @@ |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
from . import mass_mailing |
@ -0,0 +1,18 @@ |
|||
# Copyright 2017 Tecnativa - Pedro M. Baeza |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
|
|||
from odoo import _, exceptions, models |
|||
|
|||
|
|||
class MailMassMailingList(models.Model): |
|||
_inherit = "mail.mass_mailing" |
|||
|
|||
def button_draft(self): |
|||
"""Return to draft state for resending the mass mailing.""" |
|||
if any(self.mapped(lambda x: x.state != 'done')): |
|||
raise exceptions.UserError( |
|||
_("You can't resend a mass mailing that is being sent or in " |
|||
"draft state.") |
|||
) |
|||
self.write({'state': 'draft'}) |
@ -0,0 +1,3 @@ |
|||
* `Tecnativa <https://www.tecnativa.com>`_: |
|||
|
|||
* Pedro M. Baeza |
@ -0,0 +1,15 @@ |
|||
A frequent need for users of mass mailings is to resend one mailing that has |
|||
already been sent in the past to new recipients that haven't received yet that |
|||
mail. But the problem is to know which are the applicable ones. |
|||
|
|||
Odoo already includes a method in its mass mailing logic that avoids to resend |
|||
the same mail 2 times for one mass mailing, and for v9, there was a trick that |
|||
allows to modify the state of a mass mailing from kanban view, covering the |
|||
need. |
|||
|
|||
But now since v10 both status bar in form view and dragging between states in |
|||
kanban are not allowed. |
|||
|
|||
This module introduces a button to restart a mass mailing to draft state, |
|||
allowing you to reevaluate the sending domain or list for performing again |
|||
the mailing. |
@ -0,0 +1,3 @@ |
|||
* Add an indicator / filter for knowing resent mailings. |
|||
* Include information on the number of new recipients to be sent on the |
|||
resending (through `get_remaining_recipients` method). |
@ -0,0 +1,4 @@ |
|||
* Go to *Email marketing > Mailings > Mass Mailings*. |
|||
* Click on one record that is done or create a new one and send it. |
|||
* You will see a button called "Resend". |
|||
* If you click on it, mass mailing will be set to Draft again. |
After Width: 128 | Height: 128 | Size: 5.8 KiB |
@ -0,0 +1,84 @@ |
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
|||
<!-- Created with Inkscape (http://www.inkscape.org/) --> |
|||
|
|||
<svg |
|||
xmlns:dc="http://purl.org/dc/elements/1.1/" |
|||
xmlns:cc="http://creativecommons.org/ns#" |
|||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
|||
xmlns:svg="http://www.w3.org/2000/svg" |
|||
xmlns="http://www.w3.org/2000/svg" |
|||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
|||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
|||
id="svg2" |
|||
version="1.1" |
|||
inkscape:version="0.91 r13725" |
|||
width="80" |
|||
height="80" |
|||
viewBox="0 0 80 80" |
|||
sodipodi:docname="icon.svg" |
|||
inkscape:export-filename="icon.png" |
|||
inkscape:export-xdpi="144" |
|||
inkscape:export-ydpi="144"> |
|||
<metadata |
|||
id="metadata8"> |
|||
<rdf:RDF> |
|||
<cc:Work |
|||
rdf:about=""> |
|||
<dc:format>image/svg+xml</dc:format> |
|||
<dc:type |
|||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> |
|||
<dc:title /> |
|||
</cc:Work> |
|||
</rdf:RDF> |
|||
</metadata> |
|||
<defs |
|||
id="defs6" /> |
|||
<sodipodi:namedview |
|||
pagecolor="#ffffff" |
|||
bordercolor="#666666" |
|||
borderopacity="1" |
|||
objecttolerance="10" |
|||
gridtolerance="10" |
|||
guidetolerance="10" |
|||
inkscape:pageopacity="0" |
|||
inkscape:pageshadow="2" |
|||
inkscape:window-width="1855" |
|||
inkscape:window-height="1056" |
|||
id="namedview4" |
|||
showgrid="false" |
|||
inkscape:zoom="4.17193" |
|||
inkscape:cx="62.570254" |
|||
inkscape:cy="19.555116" |
|||
inkscape:window-x="65" |
|||
inkscape:window-y="24" |
|||
inkscape:window-maximized="1" |
|||
inkscape:current-layer="svg2" /> |
|||
<rect |
|||
style="opacity:1;fill:#8c7f6c;fill-opacity:1;stroke:none;stroke-width:4.05708647;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" |
|||
id="rect3346" |
|||
width="80" |
|||
height="80" |
|||
x="0" |
|||
y="0" /> |
|||
<path |
|||
style="fill:#675d4f;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" |
|||
d="M 12.344407,43.446175 -0.11984861,56.150127 0,80 41.707315,79.760303 58.366272,62.741801 64.718248,15.042055 Z" |
|||
id="path3344" |
|||
inkscape:connector-curvature="0" /> |
|||
<g |
|||
style="font-style:normal;font-weight:normal;font-size:36.70288086px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" |
|||
id="text3367"> |
|||
<path |
|||
d="m 33.459612,4.6216349 c 0,-0.5325195 -0.327704,-1.0035944 -0.798779,-1.2084096 C 32.169277,3.2084101 31.595794,3.3108177 31.227127,3.6999666 L 28.564529,6.3420824 C 25.676635,3.6180405 21.764665,2.0000005 17.729806,2.0000005 9.0661238,2.0000005 2,9.0661244 2,17.729807 c 0,8.663682 7.0661238,15.729806 15.729806,15.729806 4.690268,0 9.114276,-2.068634 12.104577,-5.673381 0.204816,-0.26626 0.204816,-0.655408 -0.04096,-0.880705 l -2.805968,-2.82645 c -0.14337,-0.122889 -0.327704,-0.184333 -0.512038,-0.184333 -0.184333,0.02048 -0.368667,0.102407 -0.471075,0.245778 -2.007188,2.601153 -5.017972,4.075822 -8.274533,4.075822 -5.775788,0 -10.4865373,-4.710749 -10.4865373,-10.486537 0,-5.775789 4.7107493,-10.4865378 10.4865373,-10.4865378 2.683079,0 5.222787,1.024076 7.14805,2.8059678 l -2.82645,2.82645 c -0.389148,0.368667 -0.491556,0.94215 -0.286741,1.413225 0.204815,0.491556 0.67589,0.81926 1.20841,0.81926 l 9.17572,0 c 0.716853,0 1.310817,-0.593964 1.310817,-1.310817 l 0,-9.1757201 z" |
|||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FontAwesome;-inkscape-font-specification:FontAwesome;fill:#ffffff" |
|||
id="path3339" /> |
|||
</g> |
|||
<g |
|||
style="font-style:normal;font-weight:normal;font-size:54.74009323px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" |
|||
id="text3338"> |
|||
<path |
|||
d="m 66.470545,12.85352 c -0.610938,-0.427657 -1.435705,-0.458204 -2.077191,-0.06109 l -50.830086,29.32505 c -0.641486,0.366563 -1.038596,1.069143 -0.977502,1.802269 0.06109,0.763673 0.519298,1.405159 1.221877,1.680081 l 14.418149,5.895557 0,13.807211 c 0,0.79422 0.488751,1.527346 1.252424,1.832816 0.213829,0.09164 0.458204,0.122187 0.70258,0.122187 0.549844,0 1.069142,-0.213828 1.435705,-0.641485 l 9.102985,-9.988845 16.09823,6.567589 c 0.244376,0.09164 0.488751,0.152735 0.733126,0.152735 0.336017,0 0.672033,-0.09164 0.946955,-0.244376 0.519298,-0.305469 0.885861,-0.79422 0.977502,-1.374612 L 67.295312,14.808524 C 67.4175,14.04485 67.112031,13.311724 66.470545,12.85352 Z M 56.023496,58.643364 40.994408,52.503431 55.595839,28.157531 29.233841,47.677017 18.970074,43.492088 62.774367,18.229779 56.023496,58.643364 Z" |
|||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FontAwesome;-inkscape-font-specification:FontAwesome;fill:#ffffff" |
|||
id="path3342" /> |
|||
</g> |
|||
</svg> |
@ -0,0 +1,3 @@ |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
from . import test_mass_mailing_resend |
@ -0,0 +1,37 @@ |
|||
# Copyright 2017-2018 Tecnativa - Pedro M. Baeza |
|||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|||
|
|||
from odoo.tests import common |
|||
from odoo import exceptions |
|||
|
|||
|
|||
class TestMassMailingResend(common.SavepointCase): |
|||
@classmethod |
|||
def setUpClass(cls): |
|||
super(TestMassMailingResend, cls).setUpClass() |
|||
cls.list = cls.env['mail.mass_mailing.list'].create({ |
|||
'name': 'Test list', |
|||
}) |
|||
cls.contact1 = cls.env['mail.mass_mailing.contact'].create({ |
|||
'name': 'Contact 1', |
|||
'email': 'email1@test.com', |
|||
}) |
|||
cls.mass_mailing = cls.env['mail.mass_mailing'].create({ |
|||
'name': 'Test mass mailing', |
|||
'email_from': 'test@example.org', |
|||
'mailing_model_id': cls.env.ref( |
|||
'mass_mailing.model_mail_mass_mailing_contact' |
|||
).id, |
|||
'contact_list_ids': [(6, 0, cls.list.ids)], |
|||
'reply_to_mode': 'thread', |
|||
}) |
|||
|
|||
def test_resend_error(self): |
|||
with self.assertRaises(exceptions.UserError): |
|||
self.mass_mailing.button_draft() |
|||
|
|||
def test_resend(self): |
|||
self.mass_mailing.state = 'done' # Force state |
|||
self.assertEqual(self.mass_mailing.state, 'done') |
|||
self.mass_mailing.button_draft() |
|||
self.assertEqual(self.mass_mailing.state, 'draft') |
@ -0,0 +1,28 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<odoo> |
|||
|
|||
<record model="ir.ui.view" id="view_mail_mass_mailing_form"> |
|||
<field name="model">mail.mass_mailing</field> |
|||
<field name="inherit_id" ref="mass_mailing.view_mail_mass_mailing_form"/> |
|||
<field name="arch" type="xml"> |
|||
<field name="state" position="before"> |
|||
<button string="Resend" |
|||
states="done" |
|||
name="button_draft" |
|||
type="object" |
|||
/> |
|||
</field> |
|||
<header position="after"> |
|||
<div class="alert alert-warning oe_text_center" attrs="{'invisible': ['|', ('state', '!=', 'draft'), ('sent', '=', 0)]}"> |
|||
<p> |
|||
<i class="fa fa-info-circle"/> New sending will be done only to not sent/new recipients. If you want to resend again the mass mailing to already sent recipients, click on <b>Emails Sent</b> smart-button for removing the existing record(s). |
|||
</p> |
|||
</div> |
|||
</header> |
|||
<div name="button_box" position="attributes"> |
|||
<attribute name="attrs">{'invisible': [('sent', '=', 0)]}</attribute> |
|||
</div> |
|||
</field> |
|||
</record> |
|||
|
|||
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue