[IMP] mail_tracking_mailgun: black, isort
This commit is contained in:
parent
6ca2da29cf
commit
5892f7db62
@ -9,16 +9,10 @@
|
||||
"version": "12.0.1.0.2",
|
||||
"category": "Social Network",
|
||||
"website": "https://github.com/OCA/social",
|
||||
"author": "Tecnativa, "
|
||||
"Odoo Community Association (OCA)",
|
||||
"author": "Tecnativa, Odoo Community Association (OCA)",
|
||||
"license": "AGPL-3",
|
||||
"application": False,
|
||||
'installable': True,
|
||||
"depends": [
|
||||
"mail_tracking",
|
||||
],
|
||||
"data": [
|
||||
"views/res_partner.xml",
|
||||
"views/mail_tracking_email.xml",
|
||||
]
|
||||
"installable": True,
|
||||
"depends": ["mail_tracking"],
|
||||
"data": ["views/res_partner.xml", "views/mail_tracking_email.xml"],
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -49,7 +49,7 @@ msgstr ""
|
||||
"prevenir problemas con los envíos"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr "¡Se necesita un valor de dominio para Mailgun!\""
|
||||
@ -70,7 +70,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr "No se ha podido obtener información desde Mailgun"
|
||||
@ -94,7 +94,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr "Error %s al intentar comprobar el correo electrónicodeconexión"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr "La información del evento ha caducado"
|
||||
@ -143,13 +143,13 @@ msgid "Set Bounced"
|
||||
msgstr "Marcar como rebotado"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr "¡No hay clave de API de Mailgun!"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -48,7 +48,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -69,7 +69,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -90,7 +90,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -137,13 +137,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -135,13 +135,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -45,7 +45,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -66,7 +66,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -87,7 +87,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -134,13 +134,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -135,13 +135,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -32,7 +32,7 @@ msgid "%s is not a valid email address. Please check it in order to avoid sendin
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -53,7 +53,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -73,7 +73,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -120,13 +120,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -135,13 +135,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -45,7 +45,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -66,7 +66,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -87,7 +87,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -134,13 +134,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -51,7 +51,7 @@ msgstr ""
|
||||
"evitar problemas de envio"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr "É necessário um valor no domínio do Mailgun!"
|
||||
@ -72,7 +72,7 @@ msgid "Contact"
|
||||
msgstr "Contacto"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr "Não foi possível obter informação do Mailgun"
|
||||
@ -96,7 +96,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr "Erro %s ao tentar verificar o mailof da conexão"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr "A informação do evento já não está armazenada"
|
||||
@ -144,13 +144,13 @@ msgid "Set Bounced"
|
||||
msgstr "Marcar como Devolvido"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr "Não há chave de API do Mailgun!"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr "Não há mensagem rastreada!"
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -45,7 +45,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -66,7 +66,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -87,7 +87,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -134,13 +134,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -9,16 +9,15 @@ msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-12-01 02:19+0000\n"
|
||||
"PO-Revision-Date: 2020-03-30 22:13+0000\n"
|
||||
"Last-Translator: Matjaz Mozetic <matjaz@matmoz.si>\n"
|
||||
"PO-Revision-Date: 2017-12-01 02:19+0000\n"
|
||||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\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"
|
||||
"X-Generator: Weblate 3.10\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
|
||||
"%100==4 ? 2 : 3);\n"
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/res_partner.py:92
|
||||
@ -45,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -63,10 +62,10 @@ msgstr ""
|
||||
#. module: mail_tracking_mailgun
|
||||
#: model:ir.model,name:mail_tracking_mailgun.model_res_partner
|
||||
msgid "Contact"
|
||||
msgstr "Stik"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -87,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -134,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -45,7 +45,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -66,7 +66,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -87,7 +87,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -134,13 +134,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -43,7 +43,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -64,7 +64,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -85,7 +85,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -132,13 +132,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -44,7 +44,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:77
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
||||
#, python-format
|
||||
msgid "A Mailgun domain value is needed!"
|
||||
msgstr ""
|
||||
@ -65,7 +65,7 @@ msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:241
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:239
|
||||
#, python-format
|
||||
msgid "Couldn't retrieve Mailgun information"
|
||||
msgstr ""
|
||||
@ -86,7 +86,7 @@ msgid "Error %s trying to check mailof connection"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:245
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:243
|
||||
#, python-format
|
||||
msgid "Event information not longer stored"
|
||||
msgstr ""
|
||||
@ -133,13 +133,13 @@ msgid "Set Bounced"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:71
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:69
|
||||
#, python-format
|
||||
msgid "There is no Mailgun API key!"
|
||||
msgstr ""
|
||||
|
||||
#. module: mail_tracking_mailgun
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:228
|
||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:226
|
||||
#, python-format
|
||||
msgid "There is no tracked message!"
|
||||
msgstr ""
|
||||
|
@ -2,6 +2,7 @@
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
import json
|
||||
|
||||
from odoo import models
|
||||
|
||||
|
||||
@ -10,11 +11,12 @@ class IrMailServer(models.Model):
|
||||
|
||||
def _tracking_headers_add(self, tracking_email_id, headers):
|
||||
headers = super(IrMailServer, self)._tracking_headers_add(
|
||||
tracking_email_id, headers)
|
||||
tracking_email_id, headers
|
||||
)
|
||||
headers = headers or {}
|
||||
metadata = {
|
||||
'odoo_db': self.env.cr.dbname,
|
||||
'tracking_email_id': tracking_email_id,
|
||||
"odoo_db": self.env.cr.dbname,
|
||||
"tracking_email_id": tracking_email_id,
|
||||
}
|
||||
headers['X-Mailgun-Variables'] = json.dumps(metadata)
|
||||
headers["X-Mailgun-Variables"] = json.dumps(metadata)
|
||||
return headers
|
||||
|
@ -4,13 +4,15 @@
|
||||
|
||||
import hashlib
|
||||
import hmac
|
||||
import requests
|
||||
import logging
|
||||
from datetime import datetime
|
||||
|
||||
import requests
|
||||
|
||||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
from odoo.tools import email_split
|
||||
|
||||
import logging
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -20,159 +22,174 @@ class MailTrackingEmail(models.Model):
|
||||
def _country_search(self, country_code):
|
||||
country = False
|
||||
if country_code:
|
||||
country = self.env['res.country'].search([
|
||||
('code', '=', country_code.upper()),
|
||||
])
|
||||
country = self.env["res.country"].search(
|
||||
[("code", "=", country_code.upper())]
|
||||
)
|
||||
if country:
|
||||
return country.id
|
||||
return False
|
||||
|
||||
@property
|
||||
def _mailgun_mandatory_fields(self):
|
||||
return ('event', 'timestamp', 'token', 'signature',
|
||||
'tracking_email_id', 'odoo_db')
|
||||
return (
|
||||
"event",
|
||||
"timestamp",
|
||||
"token",
|
||||
"signature",
|
||||
"tracking_email_id",
|
||||
"odoo_db",
|
||||
)
|
||||
|
||||
@property
|
||||
def _mailgun_event_type_mapping(self):
|
||||
return {
|
||||
# Mailgun event type: tracking event type
|
||||
'delivered': 'delivered',
|
||||
'opened': 'open',
|
||||
'clicked': 'click',
|
||||
'unsubscribed': 'unsub',
|
||||
'complained': 'spam',
|
||||
'bounced': 'hard_bounce',
|
||||
'dropped': 'reject',
|
||||
'accepted': 'sent',
|
||||
'failed': 'error',
|
||||
'rejected': 'error',
|
||||
"delivered": "delivered",
|
||||
"opened": "open",
|
||||
"clicked": "click",
|
||||
"unsubscribed": "unsub",
|
||||
"complained": "spam",
|
||||
"bounced": "hard_bounce",
|
||||
"dropped": "reject",
|
||||
"accepted": "sent",
|
||||
"failed": "error",
|
||||
"rejected": "error",
|
||||
}
|
||||
|
||||
def _mailgun_event_type_verify(self, event):
|
||||
event = event or {}
|
||||
mailgun_event_type = event.get('event')
|
||||
mailgun_event_type = event.get("event")
|
||||
if mailgun_event_type not in self._mailgun_event_type_mapping:
|
||||
_logger.error("Mailgun: event type '%s' not supported",
|
||||
mailgun_event_type)
|
||||
_logger.error("Mailgun: event type '%s' not supported", mailgun_event_type)
|
||||
return False
|
||||
# OK, event type is valid
|
||||
return True
|
||||
|
||||
def _mailgun_signature(self, api_key, timestamp, token):
|
||||
return hmac.new(
|
||||
key=bytes(api_key, 'utf-8'),
|
||||
msg=bytes('{}{}'.format(str(timestamp), str(token)), 'utf-8'),
|
||||
digestmod=hashlib.sha256).hexdigest()
|
||||
key=bytes(api_key, "utf-8"),
|
||||
msg=bytes("{}{}".format(str(timestamp), str(token)), "utf-8"),
|
||||
digestmod=hashlib.sha256,
|
||||
).hexdigest()
|
||||
|
||||
def _mailgun_values(self):
|
||||
icp = self.env['ir.config_parameter'].sudo()
|
||||
api_key = icp.get_param('mailgun.apikey')
|
||||
icp = self.env["ir.config_parameter"].sudo()
|
||||
api_key = icp.get_param("mailgun.apikey")
|
||||
if not api_key:
|
||||
raise ValidationError(_('There is no Mailgun API key!'))
|
||||
api_url = icp.get_param(
|
||||
'mailgun.api_url', 'https://api.mailgun.net/v3')
|
||||
catchall_domain = icp.get_param('mail.catchall.domain')
|
||||
domain = icp.get_param('mailgun.domain', catchall_domain)
|
||||
raise ValidationError(_("There is no Mailgun API key!"))
|
||||
api_url = icp.get_param("mailgun.api_url", "https://api.mailgun.net/v3")
|
||||
catchall_domain = icp.get_param("mail.catchall.domain")
|
||||
domain = icp.get_param("mailgun.domain", catchall_domain)
|
||||
if not domain:
|
||||
raise ValidationError(_('A Mailgun domain value is needed!'))
|
||||
validation_key = icp.get_param('mailgun.validation_key')
|
||||
raise ValidationError(_("A Mailgun domain value is needed!"))
|
||||
validation_key = icp.get_param("mailgun.validation_key")
|
||||
return api_key, api_url, domain, validation_key
|
||||
|
||||
def _mailgun_signature_verify(self, event):
|
||||
event = event or {}
|
||||
icp = self.env['ir.config_parameter'].sudo()
|
||||
api_key = icp.get_param('mailgun.apikey')
|
||||
icp = self.env["ir.config_parameter"].sudo()
|
||||
api_key = icp.get_param("mailgun.apikey")
|
||||
if not api_key:
|
||||
_logger.warning("No Mailgun api key configured. "
|
||||
"Please add 'mailgun.apikey' to System parameters "
|
||||
"to enable Mailgun authentication webhoook "
|
||||
"requests. More info at: "
|
||||
"https://documentation.mailgun.com/"
|
||||
"user_manual.html#webhooks")
|
||||
_logger.warning(
|
||||
"No Mailgun api key configured. "
|
||||
"Please add 'mailgun.apikey' to System parameters "
|
||||
"to enable Mailgun authentication webhoook "
|
||||
"requests. More info at: "
|
||||
"https://documentation.mailgun.com/"
|
||||
"user_manual.html#webhooks"
|
||||
)
|
||||
else:
|
||||
timestamp = event.get('timestamp')
|
||||
token = event.get('token')
|
||||
signature = event.get('signature')
|
||||
timestamp = event.get("timestamp")
|
||||
token = event.get("token")
|
||||
signature = event.get("signature")
|
||||
event_digest = self._mailgun_signature(api_key, timestamp, token)
|
||||
if signature != event_digest:
|
||||
_logger.error("Mailgun: Invalid signature '%s' != '%s'",
|
||||
signature, event_digest)
|
||||
_logger.error(
|
||||
"Mailgun: Invalid signature '%s' != '%s'", signature, event_digest
|
||||
)
|
||||
return False
|
||||
# OK, signature is valid
|
||||
return True
|
||||
|
||||
def _db_verify(self, event):
|
||||
event = event or {}
|
||||
odoo_db = event.get('odoo_db')
|
||||
odoo_db = event.get("odoo_db")
|
||||
current_db = self.env.cr.dbname
|
||||
if odoo_db != current_db:
|
||||
_logger.error("Mailgun: Database '%s' is not the current database",
|
||||
odoo_db)
|
||||
_logger.error("Mailgun: Database '%s' is not the current database", odoo_db)
|
||||
return False
|
||||
# OK, DB is current
|
||||
return True
|
||||
|
||||
def _mailgun_metadata(self, mailgun_event_type, event, metadata):
|
||||
# Get Mailgun timestamp when found
|
||||
ts = event.get('timestamp', False)
|
||||
ts = event.get("timestamp", False)
|
||||
try:
|
||||
ts = float(ts)
|
||||
except Exception:
|
||||
ts = False
|
||||
if ts:
|
||||
dt = datetime.utcfromtimestamp(ts)
|
||||
metadata.update({
|
||||
'timestamp': ts,
|
||||
'time': fields.Datetime.to_string(dt),
|
||||
'date': fields.Date.to_string(dt),
|
||||
'mailgun_id': event.get('id', False)
|
||||
})
|
||||
metadata.update(
|
||||
{
|
||||
"timestamp": ts,
|
||||
"time": fields.Datetime.to_string(dt),
|
||||
"date": fields.Date.to_string(dt),
|
||||
"mailgun_id": event.get("id", False),
|
||||
}
|
||||
)
|
||||
# Common field mapping
|
||||
mapping = {
|
||||
'recipient': 'recipient',
|
||||
'ip': 'ip',
|
||||
'user_agent': 'user-agent',
|
||||
'os_family': 'client-os',
|
||||
'ua_family': 'client-name',
|
||||
'ua_type': 'client-type',
|
||||
'url': 'url',
|
||||
"recipient": "recipient",
|
||||
"ip": "ip",
|
||||
"user_agent": "user-agent",
|
||||
"os_family": "client-os",
|
||||
"ua_family": "client-name",
|
||||
"ua_type": "client-type",
|
||||
"url": "url",
|
||||
}
|
||||
for k, v in mapping.items():
|
||||
if event.get(v, False):
|
||||
metadata[k] = event[v]
|
||||
# Special field mapping
|
||||
metadata.update({
|
||||
'mobile': event.get('device-type') in {'mobile', 'tablet'},
|
||||
'user_country_id': self._country_search(
|
||||
event.get('country', False)),
|
||||
})
|
||||
metadata.update(
|
||||
{
|
||||
"mobile": event.get("device-type") in {"mobile", "tablet"},
|
||||
"user_country_id": self._country_search(event.get("country", False)),
|
||||
}
|
||||
)
|
||||
# Mapping for special events
|
||||
if mailgun_event_type == 'bounced':
|
||||
metadata.update({
|
||||
'error_type': event.get('code', False),
|
||||
'error_description': event.get('error', False),
|
||||
'error_details': event.get('notification', False),
|
||||
})
|
||||
elif mailgun_event_type == 'dropped':
|
||||
metadata.update({
|
||||
'error_type': event.get('reason', False),
|
||||
'error_description': event.get('code', False),
|
||||
'error_details': event.get('description', False),
|
||||
})
|
||||
elif mailgun_event_type == 'complained':
|
||||
metadata.update({
|
||||
'error_type': 'spam',
|
||||
'error_description':
|
||||
"Recipient '%s' mark this email as spam" %
|
||||
event.get('recipient', False),
|
||||
})
|
||||
if mailgun_event_type == "bounced":
|
||||
metadata.update(
|
||||
{
|
||||
"error_type": event.get("code", False),
|
||||
"error_description": event.get("error", False),
|
||||
"error_details": event.get("notification", False),
|
||||
}
|
||||
)
|
||||
elif mailgun_event_type == "dropped":
|
||||
metadata.update(
|
||||
{
|
||||
"error_type": event.get("reason", False),
|
||||
"error_description": event.get("code", False),
|
||||
"error_details": event.get("description", False),
|
||||
}
|
||||
)
|
||||
elif mailgun_event_type == "complained":
|
||||
metadata.update(
|
||||
{
|
||||
"error_type": "spam",
|
||||
"error_description": "Recipient '%s' mark this email as spam"
|
||||
% event.get("recipient", False),
|
||||
}
|
||||
)
|
||||
return metadata
|
||||
|
||||
def _mailgun_tracking_get(self, event):
|
||||
tracking = False
|
||||
tracking_email_id = event.get('tracking_email_id', False)
|
||||
tracking_email_id = event.get("tracking_email_id", False)
|
||||
if tracking_email_id and tracking_email_id.isdigit():
|
||||
tracking = self.search([('id', '=', tracking_email_id)], limit=1)
|
||||
tracking = self.search([("id", "=", tracking_email_id)], limit=1)
|
||||
return tracking
|
||||
|
||||
def _event_is_from_mailgun(self, event):
|
||||
@ -182,35 +199,35 @@ class MailTrackingEmail(models.Model):
|
||||
@api.model
|
||||
def event_process(self, request, post, metadata, event_type=None):
|
||||
res = super(MailTrackingEmail, self).event_process(
|
||||
request, post, metadata, event_type=event_type)
|
||||
if res == 'NONE' and self._event_is_from_mailgun(post):
|
||||
request, post, metadata, event_type=event_type
|
||||
)
|
||||
if res == "NONE" and self._event_is_from_mailgun(post):
|
||||
if not self._mailgun_signature_verify(post):
|
||||
res = 'ERROR: Signature'
|
||||
res = "ERROR: Signature"
|
||||
elif not self._mailgun_event_type_verify(post):
|
||||
res = 'ERROR: Event type not supported'
|
||||
res = "ERROR: Event type not supported"
|
||||
elif not self._db_verify(post):
|
||||
res = 'ERROR: Invalid DB'
|
||||
res = "ERROR: Invalid DB"
|
||||
else:
|
||||
res = 'OK'
|
||||
if res == 'OK':
|
||||
mailgun_event_type = post.get('event')
|
||||
mapped_event_type = self._mailgun_event_type_mapping.get(
|
||||
mailgun_event_type) or event_type
|
||||
res = "OK"
|
||||
if res == "OK":
|
||||
mailgun_event_type = post.get("event")
|
||||
mapped_event_type = (
|
||||
self._mailgun_event_type_mapping.get(mailgun_event_type) or event_type
|
||||
)
|
||||
if not mapped_event_type: # pragma: no cover
|
||||
res = 'ERROR: Bad event'
|
||||
res = "ERROR: Bad event"
|
||||
tracking = self._mailgun_tracking_get(post)
|
||||
if not tracking:
|
||||
res = 'ERROR: Tracking not found'
|
||||
if res == 'OK':
|
||||
res = "ERROR: Tracking not found"
|
||||
if res == "OK":
|
||||
# Complete metadata with mailgun event info
|
||||
metadata = self._mailgun_metadata(
|
||||
mailgun_event_type, post, metadata)
|
||||
metadata = self._mailgun_metadata(mailgun_event_type, post, metadata)
|
||||
# Create event
|
||||
tracking.event_create(mapped_event_type, metadata)
|
||||
if res != 'NONE':
|
||||
if res != "NONE":
|
||||
if event_type:
|
||||
_logger.info(
|
||||
"Mailgun: event '%s' process '%s'", event_type, res)
|
||||
_logger.info("Mailgun: event '%s' process '%s'", event_type, res)
|
||||
else:
|
||||
_logger.info("Mailgun: event process '%s'", res)
|
||||
return res
|
||||
@ -225,21 +242,21 @@ class MailTrackingEmail(models.Model):
|
||||
api_key, api_url, domain, validation_key = self._mailgun_values()
|
||||
for tracking in self:
|
||||
if not tracking.mail_message_id:
|
||||
raise UserError(_('There is no tracked message!'))
|
||||
message_id = tracking.mail_message_id.message_id.replace(
|
||||
"<", "").replace(">", "")
|
||||
raise UserError(_("There is no tracked message!"))
|
||||
message_id = tracking.mail_message_id.message_id.replace("<", "").replace(
|
||||
">", ""
|
||||
)
|
||||
res = requests.get(
|
||||
'%s/%s/events' % (api_url, domain),
|
||||
"{}/{}/events".format(api_url, domain),
|
||||
auth=("api", api_key),
|
||||
params={
|
||||
"begin": tracking.timestamp,
|
||||
"ascending": "yes",
|
||||
"message-id": message_id,
|
||||
}
|
||||
},
|
||||
)
|
||||
if not res or res.status_code != 200:
|
||||
raise ValidationError(_(
|
||||
"Couldn't retrieve Mailgun information"))
|
||||
raise ValidationError(_("Couldn't retrieve Mailgun information"))
|
||||
content = res.json()
|
||||
if "items" not in content:
|
||||
raise ValidationError(_("Event information not longer stored"))
|
||||
@ -247,12 +264,11 @@ class MailTrackingEmail(models.Model):
|
||||
# mailgun event hasn't been synced and recipient is the same as
|
||||
# in the evaluated tracking. We use email_split since tracking
|
||||
# recipient could come in format: "example" <to@dest.com>
|
||||
if not self.env['mail.tracking.event'].search(
|
||||
[('mailgun_id', '=', item["id"])]) and (
|
||||
item.get("recipient", "") ==
|
||||
email_split(tracking.recipient)[0]):
|
||||
if not self.env["mail.tracking.event"].search(
|
||||
[("mailgun_id", "=", item["id"])]
|
||||
) and (item.get("recipient", "") == email_split(tracking.recipient)[0]):
|
||||
mapped_event_type = self._mailgun_event_type_mapping.get(
|
||||
item["event"], item["event"])
|
||||
metadata = self._mailgun_metadata(
|
||||
mapped_event_type, item, {})
|
||||
item["event"], item["event"]
|
||||
)
|
||||
metadata = self._mailgun_metadata(mapped_event_type, item, {})
|
||||
tracking.event_create(mapped_event_type, metadata)
|
||||
|
@ -1,20 +1,17 @@
|
||||
# Copyright 2017 Tecnativa - David Vidal
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from odoo import models, fields
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class MailTrackingEvent(models.Model):
|
||||
_inherit = "mail.tracking.event"
|
||||
|
||||
mailgun_id = fields.Char(
|
||||
string="Mailgun Event ID",
|
||||
copy="False",
|
||||
readonly=True,
|
||||
)
|
||||
mailgun_id = fields.Char(string="Mailgun Event ID", copy="False", readonly=True)
|
||||
|
||||
def _process_data(self, tracking_email, metadata, event_type, state):
|
||||
res = super(MailTrackingEvent, self)._process_data(
|
||||
tracking_email, metadata, event_type, state)
|
||||
res.update({'mailgun_id': metadata.get('mailgun_id', False)})
|
||||
tracking_email, metadata, event_type, state
|
||||
)
|
||||
res.update({"mailgun_id": metadata.get("mailgun_id", False)})
|
||||
return res
|
||||
|
@ -11,12 +11,13 @@ from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class ResPartner(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
_inherit = "res.partner"
|
||||
|
||||
@api.multi
|
||||
def email_bounced_set(self, tracking_emails, reason, event=None):
|
||||
res = super(ResPartner, self).email_bounced_set(
|
||||
tracking_emails, reason, event=event)
|
||||
tracking_emails, reason, event=event
|
||||
)
|
||||
self._email_bounced_set(reason, event)
|
||||
return res
|
||||
|
||||
@ -25,14 +26,19 @@ class ResPartner(models.Model):
|
||||
for partner in self:
|
||||
if not partner.email:
|
||||
continue
|
||||
event = event or self.env['mail.tracking.event']
|
||||
event = event or self.env["mail.tracking.event"]
|
||||
event_str = """
|
||||
<a href="#"
|
||||
data-oe-model="mail.tracking.event" data-oe-id="%d">%s</a>
|
||||
""" % (event.id or 0, event.id or _('unknown'))
|
||||
body = _('Email has been bounced: %s\n'
|
||||
'Reason: %s\n'
|
||||
'Event: %s') % (partner.email, reason, event_str)
|
||||
""" % (
|
||||
event.id or 0,
|
||||
event.id or _("unknown"),
|
||||
)
|
||||
body = _("Email has been bounced: %s\nReason: %s\nEvent: %s") % (
|
||||
partner.email,
|
||||
reason,
|
||||
event_str,
|
||||
)
|
||||
partner.message_post(body=body)
|
||||
|
||||
@api.multi
|
||||
@ -43,55 +49,82 @@ class ResPartner(models.Model):
|
||||
https://documentation.mailgun.com/en/latest/api-email-validation.html
|
||||
"""
|
||||
api_key, api_url, domain, validation_key = self.env[
|
||||
'mail.tracking.email']._mailgun_values()
|
||||
"mail.tracking.email"
|
||||
]._mailgun_values()
|
||||
if not validation_key:
|
||||
raise UserError(_('You need to configure mailgun.validation_key'
|
||||
' in order to be able to check mails validity'))
|
||||
for partner in self.filtered('email'):
|
||||
raise UserError(
|
||||
_(
|
||||
"You need to configure mailgun.validation_key"
|
||||
" in order to be able to check mails validity"
|
||||
)
|
||||
)
|
||||
for partner in self.filtered("email"):
|
||||
res = requests.get(
|
||||
# Validation API url is always the same
|
||||
'https://api.mailgun.net/v3/address/validate',
|
||||
auth=("api", validation_key), params={
|
||||
"address": partner.email,
|
||||
"mailbox_verification": True,
|
||||
})
|
||||
if not res or res.status_code != 200 and not self.env.context.get(
|
||||
'mailgun_auto_check'):
|
||||
raise UserError(_(
|
||||
'Error %s trying to '
|
||||
'check mail' % res.status_code or 'of connection'))
|
||||
"https://api.mailgun.net/v3/address/validate",
|
||||
auth=("api", validation_key),
|
||||
params={"address": partner.email, "mailbox_verification": True},
|
||||
)
|
||||
if (
|
||||
not res
|
||||
or res.status_code != 200
|
||||
and not self.env.context.get("mailgun_auto_check")
|
||||
):
|
||||
raise UserError(
|
||||
_(
|
||||
"Error %s trying to check mail" % res.status_code
|
||||
or "of connection"
|
||||
)
|
||||
)
|
||||
content = res.json()
|
||||
if 'mailbox_verification' not in content:
|
||||
if not self.env.context.get('mailgun_auto_check'):
|
||||
if "mailbox_verification" not in content:
|
||||
if not self.env.context.get("mailgun_auto_check"):
|
||||
raise UserError(
|
||||
_("Mailgun Error. Mailbox verification value wasn't"
|
||||
" returned"))
|
||||
_(
|
||||
"Mailgun Error. Mailbox verification value wasn't"
|
||||
" returned"
|
||||
)
|
||||
)
|
||||
# Not a valid address: API sets 'is_valid' as False
|
||||
# and 'mailbox_verification' as None
|
||||
if not content['is_valid']:
|
||||
if not content["is_valid"]:
|
||||
partner.email_bounced = True
|
||||
body = _('%s is not a valid email address. Please check it'
|
||||
' in order to avoid sending issues') % partner.email
|
||||
if not self.env.context.get('mailgun_auto_check'):
|
||||
body = (
|
||||
_(
|
||||
"%s is not a valid email address. Please check it"
|
||||
" in order to avoid sending issues"
|
||||
)
|
||||
% partner.email
|
||||
)
|
||||
if not self.env.context.get("mailgun_auto_check"):
|
||||
raise UserError(body)
|
||||
partner.message_post(body=body)
|
||||
# If the mailbox is not valid API returns 'mailbox_verification'
|
||||
# as a string with value 'false'
|
||||
if content['mailbox_verification'] == 'false':
|
||||
if content["mailbox_verification"] == "false":
|
||||
partner.email_bounced = True
|
||||
body = _('%s failed the mailbox verification. Please check it'
|
||||
' in order to avoid sending issues') % partner.email
|
||||
if not self.env.context.get('mailgun_auto_check'):
|
||||
body = (
|
||||
_(
|
||||
"%s failed the mailbox verification. Please check it"
|
||||
" in order to avoid sending issues"
|
||||
)
|
||||
% partner.email
|
||||
)
|
||||
if not self.env.context.get("mailgun_auto_check"):
|
||||
raise UserError(body)
|
||||
partner.message_post(body=body)
|
||||
# If Mailgun can't complete the validation request the API returns
|
||||
# 'mailbox_verification' as a string set to 'unknown'
|
||||
if content['mailbox_verification'] == 'unknown':
|
||||
if not self.env.context.get('mailgun_auto_check'):
|
||||
if content["mailbox_verification"] == "unknown":
|
||||
if not self.env.context.get("mailgun_auto_check"):
|
||||
raise UserError(
|
||||
_("%s couldn't be verified. Either the request couln't"
|
||||
" be completed or the mailbox provider doesn't "
|
||||
"support email verification") % (partner.email))
|
||||
_(
|
||||
"%s couldn't be verified. Either the request couln't"
|
||||
" be completed or the mailbox provider doesn't "
|
||||
"support email verification"
|
||||
)
|
||||
% (partner.email)
|
||||
)
|
||||
|
||||
@api.multi
|
||||
def check_email_bounced(self):
|
||||
@ -101,11 +134,13 @@ class ResPartner(models.Model):
|
||||
https://documentation.mailgun.com/en/latest/api-suppressions.html
|
||||
"""
|
||||
api_key, api_url, domain, validation_key = self.env[
|
||||
'mail.tracking.email']._mailgun_values()
|
||||
"mail.tracking.email"
|
||||
]._mailgun_values()
|
||||
for partner in self:
|
||||
res = requests.get(
|
||||
'%s/%s/bounces/%s' % (api_url, domain, partner.email),
|
||||
auth=("api", api_key))
|
||||
"{}/{}/bounces/{}".format(api_url, domain, partner.email),
|
||||
auth=("api", api_key),
|
||||
)
|
||||
if res.status_code == 200 and not partner.email_bounced:
|
||||
partner.email_bounced = True
|
||||
elif res.status_code == 404 and partner.email_bounced:
|
||||
@ -119,14 +154,15 @@ class ResPartner(models.Model):
|
||||
https://documentation.mailgun.com/en/latest/api-suppressions.html
|
||||
"""
|
||||
api_key, api_url, domain, validation_key = self.env[
|
||||
'mail.tracking.email']._mailgun_values()
|
||||
"mail.tracking.email"
|
||||
]._mailgun_values()
|
||||
for partner in self:
|
||||
res = requests.post(
|
||||
'%s/%s/bounces' % (api_url, domain),
|
||||
"{}/{}/bounces".format(api_url, domain),
|
||||
auth=("api", api_key),
|
||||
data={'address': partner.email})
|
||||
partner.email_bounced = (
|
||||
res.status_code == 200 and not partner.email_bounced)
|
||||
data={"address": partner.email},
|
||||
)
|
||||
partner.email_bounced = res.status_code == 200 and not partner.email_bounced
|
||||
|
||||
@api.multi
|
||||
def force_unset_bounced(self):
|
||||
@ -136,30 +172,31 @@ class ResPartner(models.Model):
|
||||
https://documentation.mailgun.com/en/latest/api-suppressions.html
|
||||
"""
|
||||
api_key, api_url, domain, validation_key = self.env[
|
||||
'mail.tracking.email']._mailgun_values()
|
||||
"mail.tracking.email"
|
||||
]._mailgun_values()
|
||||
for partner in self:
|
||||
res = requests.delete(
|
||||
'%s/%s/bounces/%s' % (api_url, domain, partner.email),
|
||||
auth=("api", api_key))
|
||||
"{}/{}/bounces/{}".format(api_url, domain, partner.email),
|
||||
auth=("api", api_key),
|
||||
)
|
||||
if res.status_code in (200, 404) and partner.email_bounced:
|
||||
partner.email_bounced = False
|
||||
|
||||
def _autocheck_partner_email(self):
|
||||
for partner in self:
|
||||
partner.with_context(
|
||||
mailgun_auto_check=True).check_email_validity()
|
||||
partner.with_context(mailgun_auto_check=True).check_email_validity()
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
if ('email' in vals and
|
||||
self.env['ir.config_parameter'].sudo().get_param(
|
||||
'mailgun.auto_check_partner_email')):
|
||||
if "email" in vals and self.env["ir.config_parameter"].sudo().get_param(
|
||||
"mailgun.auto_check_partner_email"
|
||||
):
|
||||
self._autocheck_partner_email()
|
||||
return super(ResPartner, self).create(vals)
|
||||
|
||||
def write(self, vals):
|
||||
if ('email' in vals and
|
||||
self.env['ir.config_parameter'].sudo().get_param(
|
||||
'mailgun.auto_check_partner_email')):
|
||||
if "email" in vals and self.env["ir.config_parameter"].sudo().get_param(
|
||||
"mailgun.auto_check_partner_email"
|
||||
):
|
||||
self._autocheck_partner_email()
|
||||
return super(ResPartner, self).write(vals)
|
||||
|
@ -2,205 +2,199 @@
|
||||
# Copyright 2017 Tecnativa - David Vidal
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo.tools import mute_logger
|
||||
from odoo.tests.common import TransactionCase
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
import mock
|
||||
|
||||
_packagepath = 'odoo.addons.mail_tracking_mailgun'
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
from odoo.tests.common import TransactionCase
|
||||
from odoo.tools import mute_logger
|
||||
|
||||
_packagepath = "odoo.addons.mail_tracking_mailgun"
|
||||
|
||||
|
||||
class TestMailgun(TransactionCase):
|
||||
def mail_send(self):
|
||||
mail = self.env['mail.mail'].create({
|
||||
'subject': 'Test subject',
|
||||
'email_from': 'from@example.com',
|
||||
'email_to': self.recipient,
|
||||
'body_html': '<p>This is a test message</p>',
|
||||
})
|
||||
mail = self.env["mail.mail"].create(
|
||||
{
|
||||
"subject": "Test subject",
|
||||
"email_from": "from@example.com",
|
||||
"email_to": self.recipient,
|
||||
"body_html": "<p>This is a test message</p>",
|
||||
}
|
||||
)
|
||||
mail.send()
|
||||
# Search tracking created
|
||||
tracking_email = self.env['mail.tracking.email'].search([
|
||||
('mail_id', '=', mail.id),
|
||||
])
|
||||
tracking_email = self.env["mail.tracking.email"].search(
|
||||
[("mail_id", "=", mail.id)]
|
||||
)
|
||||
return mail, tracking_email
|
||||
|
||||
def setUp(self):
|
||||
super(TestMailgun, self).setUp()
|
||||
self.recipient = 'to@example.com'
|
||||
self.recipient = "to@example.com"
|
||||
self.mail, self.tracking_email = self.mail_send()
|
||||
self.api_key = 'key-12345678901234567890123456789012'
|
||||
self.domain = 'example.com'
|
||||
self.token = 'f1349299097a51b9a7d886fcb5c2735b426ba200ada6e9e149'
|
||||
self.timestamp = '1471021089'
|
||||
self.signature = ('4fb6d4dbbe10ce5d620265dcd7a3c0b8'
|
||||
'ca0dede1433103891bc1ae4086e9d5b2')
|
||||
self.env['ir.config_parameter'].set_param(
|
||||
'mailgun.apikey', self.api_key)
|
||||
self.env['ir.config_parameter'].set_param(
|
||||
'mail.catchall.domain', self.domain)
|
||||
self.env['ir.config_parameter'].set_param(
|
||||
'mailgun.validation_key', self.api_key)
|
||||
self.env['ir.config_parameter'].set_param(
|
||||
'mailgun.auto_check_partner_email', '')
|
||||
self.api_key = "key-12345678901234567890123456789012"
|
||||
self.domain = "example.com"
|
||||
self.token = "f1349299097a51b9a7d886fcb5c2735b426ba200ada6e9e149"
|
||||
self.timestamp = "1471021089"
|
||||
self.signature = (
|
||||
"4fb6d4dbbe10ce5d620265dcd7a3c0b8ca0dede1433103891bc1ae4086e9d5b2"
|
||||
)
|
||||
self.env["ir.config_parameter"].set_param("mailgun.apikey", self.api_key)
|
||||
self.env["ir.config_parameter"].set_param("mail.catchall.domain", self.domain)
|
||||
self.env["ir.config_parameter"].set_param(
|
||||
"mailgun.validation_key", self.api_key
|
||||
)
|
||||
self.env["ir.config_parameter"].set_param(
|
||||
"mailgun.auto_check_partner_email", ""
|
||||
)
|
||||
self.event = {
|
||||
'Message-Id': '<xxx.xxx.xxx-openerp-xxx-res.partner@test_db>',
|
||||
'X-Mailgun-Sid': 'WyIwNjgxZSIsICJ0b0BleGFtcGxlLmNvbSIsICI3MG'
|
||||
'I0MWYiXQ==',
|
||||
'token': self.token,
|
||||
'timestamp': self.timestamp,
|
||||
'signature': self.signature,
|
||||
'domain': 'example.com',
|
||||
'message-headers': '[]',
|
||||
'recipient': self.recipient,
|
||||
'odoo_db': self.env.cr.dbname,
|
||||
'tracking_email_id': '%s' % self.tracking_email.id
|
||||
"Message-Id": "<xxx.xxx.xxx-openerp-xxx-res.partner@test_db>",
|
||||
"X-Mailgun-Sid": "WyIwNjgxZSIsICJ0b0BleGFtcGxlLmNvbSIsICI3MGI0MWYiXQ==",
|
||||
"token": self.token,
|
||||
"timestamp": self.timestamp,
|
||||
"signature": self.signature,
|
||||
"domain": "example.com",
|
||||
"message-headers": "[]",
|
||||
"recipient": self.recipient,
|
||||
"odoo_db": self.env.cr.dbname,
|
||||
"tracking_email_id": "%s" % self.tracking_email.id,
|
||||
}
|
||||
self.metadata = {
|
||||
'ip': '127.0.0.1',
|
||||
'user_agent': False,
|
||||
'os_family': False,
|
||||
'ua_family': False,
|
||||
"ip": "127.0.0.1",
|
||||
"user_agent": False,
|
||||
"os_family": False,
|
||||
"ua_family": False,
|
||||
}
|
||||
self.partner = self.env['res.partner'].create({
|
||||
'name': 'Mr. Odoo',
|
||||
'email': 'mrodoo@example.com',
|
||||
})
|
||||
self.partner = self.env["res.partner"].create(
|
||||
{"name": "Mr. Odoo", "email": "mrodoo@example.com"}
|
||||
)
|
||||
self.response = {
|
||||
"items": [{
|
||||
"log-level": "info",
|
||||
"id": "oXAVv5URCF-dKv8c6Sa7T",
|
||||
"timestamp": 1509119329.0,
|
||||
"message": {
|
||||
"headers": {
|
||||
"to": "test@test.com",
|
||||
"message-id": "test-id@f187c54734e8",
|
||||
"from": "Mr. Odoo <mrodoo@odoo.com>",
|
||||
"subject": "This is a test"
|
||||
"items": [
|
||||
{
|
||||
"log-level": "info",
|
||||
"id": "oXAVv5URCF-dKv8c6Sa7T",
|
||||
"timestamp": 1509119329.0,
|
||||
"message": {
|
||||
"headers": {
|
||||
"to": "test@test.com",
|
||||
"message-id": "test-id@f187c54734e8",
|
||||
"from": "Mr. Odoo <mrodoo@odoo.com>",
|
||||
"subject": "This is a test",
|
||||
}
|
||||
},
|
||||
},
|
||||
"event": "delivered",
|
||||
"recipient": "to@example.com",
|
||||
}]
|
||||
"event": "delivered",
|
||||
"recipient": "to@example.com",
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
def event_search(self, event_type):
|
||||
event = self.env['mail.tracking.event'].search([
|
||||
('tracking_email_id', '=', self.tracking_email.id),
|
||||
('event_type', '=', event_type),
|
||||
])
|
||||
event = self.env["mail.tracking.event"].search(
|
||||
[
|
||||
("tracking_email_id", "=", self.tracking_email.id),
|
||||
("event_type", "=", event_type),
|
||||
]
|
||||
)
|
||||
self.assertTrue(event)
|
||||
return event
|
||||
|
||||
def test_no_api_key(self):
|
||||
self.env['ir.config_parameter'].set_param('mailgun.apikey', '')
|
||||
self.env["ir.config_parameter"].set_param("mailgun.apikey", "")
|
||||
self.test_event_delivered()
|
||||
with self.assertRaises(ValidationError):
|
||||
self.env['mail.tracking.email']._mailgun_values()
|
||||
self.env["mail.tracking.email"]._mailgun_values()
|
||||
|
||||
def test_no_domain(self):
|
||||
self.env['ir.config_parameter'].set_param('mail.catchall.domain', '')
|
||||
self.env["ir.config_parameter"].set_param("mail.catchall.domain", "")
|
||||
self.test_event_delivered()
|
||||
with self.assertRaises(ValidationError):
|
||||
self.env['mail.tracking.email']._mailgun_values()
|
||||
self.env["mail.tracking.email"]._mailgun_values()
|
||||
# now we set an specific domain for Mailgun:
|
||||
# i.e: we configure new EU zone without loosing old domain statistics
|
||||
self.env['ir.config_parameter'].set_param(
|
||||
'mailgun.domain', 'eu.example.com')
|
||||
self.env["ir.config_parameter"].set_param("mailgun.domain", "eu.example.com")
|
||||
self.test_event_delivered()
|
||||
|
||||
@mute_logger('odoo.addons.mail_tracking_mailgun.models'
|
||||
'.mail_tracking_email')
|
||||
@mute_logger("odoo.addons.mail_tracking_mailgun.models.mail_tracking_email")
|
||||
def test_bad_signature(self):
|
||||
self.event.update({
|
||||
'event': 'delivered',
|
||||
'signature': 'bad_signature',
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('ERROR: Signature', response)
|
||||
self.event.update({"event": "delivered", "signature": "bad_signature"})
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("ERROR: Signature", response)
|
||||
|
||||
@mute_logger('odoo.addons.mail_tracking_mailgun.models'
|
||||
'.mail_tracking_email')
|
||||
@mute_logger("odoo.addons.mail_tracking_mailgun.models.mail_tracking_email")
|
||||
def test_bad_event_type(self):
|
||||
self.event.update({
|
||||
'event': 'bad_event',
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('ERROR: Event type not supported', response)
|
||||
self.event.update({"event": "bad_event"})
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("ERROR: Event type not supported", response)
|
||||
|
||||
@mute_logger('odoo.addons.mail_tracking_mailgun.models'
|
||||
'.mail_tracking_email')
|
||||
@mute_logger("odoo.addons.mail_tracking_mailgun.models.mail_tracking_email")
|
||||
def test_bad_db(self):
|
||||
self.event.update({
|
||||
'event': 'delivered',
|
||||
'odoo_db': 'bad_db',
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('ERROR: Invalid DB', response)
|
||||
self.event.update({"event": "delivered", "odoo_db": "bad_db"})
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("ERROR: Invalid DB", response)
|
||||
|
||||
def test_bad_ts(self):
|
||||
timestamp = '7a' # Now time will be used instead
|
||||
signature = ('06cc05680f6e8110e59b41152b2d1c0f'
|
||||
'1045d755ef2880ff922344325c89a6d4')
|
||||
self.event.update({
|
||||
'event': 'delivered',
|
||||
'timestamp': timestamp,
|
||||
'signature': signature,
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('OK', response)
|
||||
timestamp = "7a" # Now time will be used instead
|
||||
signature = "06cc05680f6e8110e59b41152b2d1c0f1045d755ef2880ff922344325c89a6d4"
|
||||
self.event.update(
|
||||
{"event": "delivered", "timestamp": timestamp, "signature": signature}
|
||||
)
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("OK", response)
|
||||
|
||||
@mute_logger('odoo.addons.mail_tracking_mailgun.models'
|
||||
'.mail_tracking_email')
|
||||
@mute_logger("odoo.addons.mail_tracking_mailgun.models.mail_tracking_email")
|
||||
def test_tracking_not_found(self):
|
||||
self.event.update({
|
||||
'event': 'delivered',
|
||||
'tracking_email_id': 'bad_id',
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('ERROR: Tracking not found', response)
|
||||
self.event.update({"event": "delivered", "tracking_email_id": "bad_id"})
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("ERROR: Tracking not found", response)
|
||||
|
||||
# https://documentation.mailgun.com/user_manual.html#tracking-deliveries
|
||||
def test_event_delivered(self):
|
||||
self.event.update({
|
||||
'event': 'delivered',
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('OK', response)
|
||||
events = self.event_search('delivered')
|
||||
self.event.update({"event": "delivered"})
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("OK", response)
|
||||
events = self.event_search("delivered")
|
||||
for event in events:
|
||||
self.assertEqual(event.timestamp, float(self.timestamp))
|
||||
self.assertEqual(event.recipient, self.recipient)
|
||||
|
||||
# https://documentation.mailgun.com/user_manual.html#tracking-opens
|
||||
def test_event_opened(self):
|
||||
ip = '127.0.0.1'
|
||||
user_agent = 'Odoo Test/8.0 Gecko Firefox/11.0'
|
||||
os_family = 'Linux'
|
||||
ua_family = 'Firefox'
|
||||
ua_type = 'browser'
|
||||
self.event.update({
|
||||
'event': 'opened',
|
||||
'city': 'Mountain View',
|
||||
'country': 'US',
|
||||
'region': 'CA',
|
||||
'client-name': ua_family,
|
||||
'client-os': os_family,
|
||||
'client-type': ua_type,
|
||||
'device-type': 'desktop',
|
||||
'ip': ip,
|
||||
'user-agent': user_agent,
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('OK', response)
|
||||
event = self.event_search('open')
|
||||
ip = "127.0.0.1"
|
||||
user_agent = "Odoo Test/8.0 Gecko Firefox/11.0"
|
||||
os_family = "Linux"
|
||||
ua_family = "Firefox"
|
||||
ua_type = "browser"
|
||||
self.event.update(
|
||||
{
|
||||
"event": "opened",
|
||||
"city": "Mountain View",
|
||||
"country": "US",
|
||||
"region": "CA",
|
||||
"client-name": ua_family,
|
||||
"client-os": os_family,
|
||||
"client-type": ua_type,
|
||||
"device-type": "desktop",
|
||||
"ip": ip,
|
||||
"user-agent": user_agent,
|
||||
}
|
||||
)
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("OK", response)
|
||||
event = self.event_search("open")
|
||||
self.assertEqual(event.timestamp, float(self.timestamp))
|
||||
self.assertEqual(event.recipient, self.recipient)
|
||||
self.assertEqual(event.ip, ip)
|
||||
@ -209,33 +203,36 @@ class TestMailgun(TransactionCase):
|
||||
self.assertEqual(event.ua_family, ua_family)
|
||||
self.assertEqual(event.ua_type, ua_type)
|
||||
self.assertEqual(event.mobile, False)
|
||||
self.assertEqual(event.user_country_id.code, 'US')
|
||||
self.assertEqual(event.user_country_id.code, "US")
|
||||
|
||||
# https://documentation.mailgun.com/user_manual.html#tracking-clicks
|
||||
def test_event_clicked(self):
|
||||
ip = '127.0.0.1'
|
||||
user_agent = 'Odoo Test/8.0 Gecko Firefox/11.0'
|
||||
os_family = 'Linux'
|
||||
ua_family = 'Firefox'
|
||||
ua_type = 'browser'
|
||||
url = 'https://odoo-community.org'
|
||||
self.event.update({
|
||||
'event': 'clicked',
|
||||
'city': 'Mountain View',
|
||||
'country': 'US',
|
||||
'region': 'CA',
|
||||
'client-name': ua_family,
|
||||
'client-os': os_family,
|
||||
'client-type': ua_type,
|
||||
'device-type': 'tablet',
|
||||
'ip': ip,
|
||||
'user-agent': user_agent,
|
||||
'url': url,
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata, event_type='click')
|
||||
self.assertEqual('OK', response)
|
||||
event = self.event_search('click')
|
||||
ip = "127.0.0.1"
|
||||
user_agent = "Odoo Test/8.0 Gecko Firefox/11.0"
|
||||
os_family = "Linux"
|
||||
ua_family = "Firefox"
|
||||
ua_type = "browser"
|
||||
url = "https://odoo-community.org"
|
||||
self.event.update(
|
||||
{
|
||||
"event": "clicked",
|
||||
"city": "Mountain View",
|
||||
"country": "US",
|
||||
"region": "CA",
|
||||
"client-name": ua_family,
|
||||
"client-os": os_family,
|
||||
"client-type": ua_type,
|
||||
"device-type": "tablet",
|
||||
"ip": ip,
|
||||
"user-agent": user_agent,
|
||||
"url": url,
|
||||
}
|
||||
)
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata, event_type="click"
|
||||
)
|
||||
self.assertEqual("OK", response)
|
||||
event = self.event_search("click")
|
||||
self.assertEqual(event.timestamp, float(self.timestamp))
|
||||
self.assertEqual(event.recipient, self.recipient)
|
||||
self.assertEqual(event.ip, ip)
|
||||
@ -248,27 +245,30 @@ class TestMailgun(TransactionCase):
|
||||
|
||||
# https://documentation.mailgun.com/user_manual.html#tracking-unsubscribes
|
||||
def test_event_unsubscribed(self):
|
||||
ip = '127.0.0.1'
|
||||
user_agent = 'Odoo Test/8.0 Gecko Firefox/11.0'
|
||||
os_family = 'Linux'
|
||||
ua_family = 'Firefox'
|
||||
ua_type = 'browser'
|
||||
self.event.update({
|
||||
'event': 'unsubscribed',
|
||||
'city': 'Mountain View',
|
||||
'country': 'US',
|
||||
'region': 'CA',
|
||||
'client-name': ua_family,
|
||||
'client-os': os_family,
|
||||
'client-type': ua_type,
|
||||
'device-type': 'mobile',
|
||||
'ip': ip,
|
||||
'user-agent': user_agent,
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('OK', response)
|
||||
event = self.event_search('unsub')
|
||||
ip = "127.0.0.1"
|
||||
user_agent = "Odoo Test/8.0 Gecko Firefox/11.0"
|
||||
os_family = "Linux"
|
||||
ua_family = "Firefox"
|
||||
ua_type = "browser"
|
||||
self.event.update(
|
||||
{
|
||||
"event": "unsubscribed",
|
||||
"city": "Mountain View",
|
||||
"country": "US",
|
||||
"region": "CA",
|
||||
"client-name": ua_family,
|
||||
"client-os": os_family,
|
||||
"client-type": ua_type,
|
||||
"device-type": "mobile",
|
||||
"ip": ip,
|
||||
"user-agent": user_agent,
|
||||
}
|
||||
)
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("OK", response)
|
||||
event = self.event_search("unsub")
|
||||
self.assertEqual(event.timestamp, float(self.timestamp))
|
||||
self.assertEqual(event.recipient, self.recipient)
|
||||
self.assertEqual(event.ip, ip)
|
||||
@ -281,33 +281,37 @@ class TestMailgun(TransactionCase):
|
||||
# https://documentation.mailgun.com/
|
||||
# user_manual.html#tracking-spam-complaints
|
||||
def test_event_complained(self):
|
||||
self.event.update({
|
||||
'event': 'complained',
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('OK', response)
|
||||
event = self.event_search('spam')
|
||||
self.event.update({"event": "complained"})
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("OK", response)
|
||||
event = self.event_search("spam")
|
||||
self.assertEqual(event.timestamp, float(self.timestamp))
|
||||
self.assertEqual(event.recipient, self.recipient)
|
||||
self.assertEqual(event.error_type, 'spam')
|
||||
self.assertEqual(event.error_type, "spam")
|
||||
|
||||
# https://documentation.mailgun.com/user_manual.html#tracking-bounces
|
||||
def test_event_bounced(self):
|
||||
code = '550'
|
||||
error = ("5.1.1 The email account does not exist.\n"
|
||||
"5.1.1 double-checking the recipient's email address")
|
||||
code = "550"
|
||||
error = (
|
||||
"5.1.1 The email account does not exist.\n"
|
||||
"5.1.1 double-checking the recipient's email address"
|
||||
)
|
||||
notification = "Please, check recipient's email address"
|
||||
self.event.update({
|
||||
'event': 'bounced',
|
||||
'code': code,
|
||||
'error': error,
|
||||
'notification': notification,
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('OK', response)
|
||||
event = self.event_search('hard_bounce')
|
||||
self.event.update(
|
||||
{
|
||||
"event": "bounced",
|
||||
"code": code,
|
||||
"error": error,
|
||||
"notification": notification,
|
||||
}
|
||||
)
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("OK", response)
|
||||
event = self.event_search("hard_bounce")
|
||||
self.assertEqual(event.timestamp, float(self.timestamp))
|
||||
self.assertEqual(event.recipient, self.recipient)
|
||||
self.assertEqual(event.error_type, code)
|
||||
@ -316,73 +320,77 @@ class TestMailgun(TransactionCase):
|
||||
|
||||
# https://documentation.mailgun.com/user_manual.html#tracking-failures
|
||||
def test_event_dropped(self):
|
||||
reason = 'hardfail'
|
||||
code = '605'
|
||||
description = 'Not delivering to previously bounced address'
|
||||
self.event.update({
|
||||
'event': 'dropped',
|
||||
'reason': reason,
|
||||
'code': code,
|
||||
'description': description,
|
||||
})
|
||||
response = self.env['mail.tracking.email'].event_process(
|
||||
None, self.event, self.metadata)
|
||||
self.assertEqual('OK', response)
|
||||
event = self.event_search('reject')
|
||||
reason = "hardfail"
|
||||
code = "605"
|
||||
description = "Not delivering to previously bounced address"
|
||||
self.event.update(
|
||||
{
|
||||
"event": "dropped",
|
||||
"reason": reason,
|
||||
"code": code,
|
||||
"description": description,
|
||||
}
|
||||
)
|
||||
response = self.env["mail.tracking.email"].event_process(
|
||||
None, self.event, self.metadata
|
||||
)
|
||||
self.assertEqual("OK", response)
|
||||
event = self.event_search("reject")
|
||||
self.assertEqual(event.timestamp, float(self.timestamp))
|
||||
self.assertEqual(event.recipient, self.recipient)
|
||||
self.assertEqual(event.error_type, reason)
|
||||
self.assertEqual(event.error_description, code)
|
||||
self.assertEqual(event.error_details, description)
|
||||
|
||||
@mock.patch(_packagepath + '.models.res_partner.requests')
|
||||
@mock.patch(_packagepath + ".models.res_partner.requests")
|
||||
def test_email_validity(self, mock_request):
|
||||
self.partner.email_bounced = False
|
||||
mock_request.get.return_value.apparent_encoding = 'ascii'
|
||||
mock_request.get.return_value.apparent_encoding = "ascii"
|
||||
mock_request.get.return_value.status_code = 200
|
||||
mock_request.get.return_value.json.return_value = {
|
||||
'is_valid': True,
|
||||
'mailbox_verification': 'true',
|
||||
"is_valid": True,
|
||||
"mailbox_verification": "true",
|
||||
}
|
||||
# Trigger email auto validation in partner
|
||||
self.env['ir.config_parameter'].set_param(
|
||||
'mailgun.auto_check_partner_email', 'True')
|
||||
self.partner.email = 'info@tecnativa.com'
|
||||
self.env["ir.config_parameter"].set_param(
|
||||
"mailgun.auto_check_partner_email", "True"
|
||||
)
|
||||
self.partner.email = "info@tecnativa.com"
|
||||
self.assertFalse(self.partner.email_bounced)
|
||||
self.partner.email = 'xoxoxoxo@tecnativa.com'
|
||||
self.partner.email = "xoxoxoxo@tecnativa.com"
|
||||
# Not a valid mailbox
|
||||
mock_request.get.return_value.json.return_value = {
|
||||
'is_valid': True,
|
||||
'mailbox_verification': 'false',
|
||||
"is_valid": True,
|
||||
"mailbox_verification": "false",
|
||||
}
|
||||
with self.assertRaises(UserError):
|
||||
self.partner.check_email_validity()
|
||||
# Not a valid mail address
|
||||
mock_request.get.return_value.json.return_value = {
|
||||
'is_valid': False,
|
||||
'mailbox_verification': 'false',
|
||||
"is_valid": False,
|
||||
"mailbox_verification": "false",
|
||||
}
|
||||
with self.assertRaises(UserError):
|
||||
self.partner.check_email_validity()
|
||||
# Unable to fully validate
|
||||
mock_request.get.return_value.json.return_value = {
|
||||
'is_valid': True,
|
||||
'mailbox_verification': 'unknown',
|
||||
"is_valid": True,
|
||||
"mailbox_verification": "unknown",
|
||||
}
|
||||
with self.assertRaises(UserError):
|
||||
self.partner.check_email_validity()
|
||||
self.assertTrue(self.partner.email_bounced)
|
||||
|
||||
@mock.patch(_packagepath + '.models.res_partner.requests')
|
||||
@mock.patch(_packagepath + ".models.res_partner.requests")
|
||||
def test_email_validity_exceptions(self, mock_request):
|
||||
mock_request.get.return_value.status_code = 404
|
||||
with self.assertRaises(UserError):
|
||||
self.partner.check_email_validity()
|
||||
self.env['ir.config_parameter'].set_param('mailgun.validation_key', '')
|
||||
self.env["ir.config_parameter"].set_param("mailgun.validation_key", "")
|
||||
with self.assertRaises(UserError):
|
||||
self.partner.check_email_validity()
|
||||
|
||||
@mock.patch(_packagepath + '.models.res_partner.requests')
|
||||
@mock.patch(_packagepath + ".models.res_partner.requests")
|
||||
def test_bounced(self, mock_request):
|
||||
self.partner.email_bounced = True
|
||||
mock_request.get.return_value.status_code = 404
|
||||
@ -398,22 +406,23 @@ class TestMailgun(TransactionCase):
|
||||
|
||||
def test_email_bounced_set(self):
|
||||
message_number = len(self.partner.message_ids) + 1
|
||||
self.partner._email_bounced_set('test_error', False)
|
||||
self.partner._email_bounced_set("test_error", False)
|
||||
self.assertEqual(len(self.partner.message_ids), message_number)
|
||||
self.partner.email = ""
|
||||
self.partner._email_bounced_set('test_error', False)
|
||||
self.partner._email_bounced_set("test_error", False)
|
||||
self.assertEqual(len(self.partner.message_ids), message_number)
|
||||
|
||||
@mock.patch(_packagepath + '.models.mail_tracking_email.requests')
|
||||
@mock.patch(_packagepath + ".models.mail_tracking_email.requests")
|
||||
def test_manual_check(self, mock_request):
|
||||
mock_request.get.return_value.json.return_value = self.response
|
||||
mock_request.get.return_value.status_code = 200
|
||||
self.tracking_email.action_manual_check_mailgun()
|
||||
event = self.env['mail.tracking.event'].search(
|
||||
[('mailgun_id', '=', self.response['items'][0]['id'])])
|
||||
self.assertEqual(event.event_type, self.response['items'][0]['event'])
|
||||
event = self.env["mail.tracking.event"].search(
|
||||
[("mailgun_id", "=", self.response["items"][0]["id"])]
|
||||
)
|
||||
self.assertEqual(event.event_type, self.response["items"][0]["event"])
|
||||
|
||||
@mock.patch(_packagepath + '.models.mail_tracking_email.requests')
|
||||
@mock.patch(_packagepath + ".models.mail_tracking_email.requests")
|
||||
def test_manual_check_exceptions(self, mock_request):
|
||||
mock_request.get.return_value.status_code = 404
|
||||
with self.assertRaises(ValidationError):
|
||||
|
Loading…
x
Reference in New Issue
Block a user