Browse Source

[MIG] mail_debrand

There's no commits preservation, as the module doesn't serve as is on v9.
pull/321/head
Pedro M. Baeza 8 years ago
committed by Graeme Gellatly
parent
commit
1fbd15f88c
  1. 73
      mail_debrand/README.rst
  2. 4
      mail_debrand/__init__.py
  3. 21
      mail_debrand/__openerp__.py
  4. 34
      mail_debrand/i18n/es.po
  5. 4
      mail_debrand/models/__init__.py
  6. 43
      mail_debrand/models/mail_template.py
  7. BIN
      mail_debrand/static/description/icon.png
  8. 248
      mail_debrand/static/description/icon.svg
  9. 4
      mail_debrand/tests/__init__.py
  10. 26
      mail_debrand/tests/test_mail_debrand.py

73
mail_debrand/README.rst

@ -0,0 +1,73 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
============
Mail Debrand
============
This module modifies the functionality of emails to remove the Odoo branding.
It also allows some context options to remove user and company signatures too.
Usage
=====
To use this module, you need to:
* Install it.
* Send an email.
* Nobody will know it comes from Odoo.
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/205/10.0
Known issues / Roadmap
======================
* This module relies on the translation of the strings here in this module that
must match the mail notification template translation on Odoo core,
specifically the words "using" and "Odoo".
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/social/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits
=======
Contributors
------------
* Rafael Blasco <rafabn@tecnativa.com>
* Jairo Llopis <jairo.llopis@tecnativa.com>
* Jordi Ballester Alomar <jordi.ballester@eficent.com>
* Darshan Patel <darshan.patel.serpentcs@gmail.com>
* Pedro M. Baeza <pedro.baeza@tecnativa.com>
Images
------
* https://openclipart.org/detail/29117/unread-mail-icon
* https://openclipart.org/detail/147961/panneau-interdit-forbidden-road-sign-basic
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit https://odoo-community.org.

4
mail_debrand/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models

21
mail_debrand/__openerp__.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Copyright 2016 Tecnativa - Jairo Llopis
# Copyright 2017 SerpentCS - Darshan Patel
# Copyright 2017 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Mail Debrand",
"summary": "Remove Odoo branding in sent emails",
"version": "10.0.1.0.0",
"category": "Social Network",
"website": "https://www.tecnativa.com",
"author": "Tecnativa, "
"Eficent, "
"Odoo Community Association (OCA)",
"license": "AGPL-3",
"installable": True,
"depends": [
"mail",
],
}

34
mail_debrand/i18n/es.po

@ -0,0 +1,34 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_debrand
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-15 14:50+0000\n"
"PO-Revision-Date: 2017-05-15 14:50+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: mail_debrand
#: model:ir.model,name:mail_debrand.model_mail_template
msgid "Email Templates"
msgstr "Plantillas de correo electrónico"
#. module: mail_debrand
#: code:addons/mail_debrand/models/mail_template.py:26
#, python-format
msgid "Odoo"
msgstr "Odoo"
#. module: mail_debrand
#: code:addons/mail_debrand/models/mail_template.py:25
#, python-format
msgid "using"
msgstr "usando"

4
mail_debrand/models/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import mail_template

43
mail_debrand/models/mail_template.py

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
# Copyright 2017 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import re
from odoo import _, api, models
class MailTemplate(models.Model):
_inherit = 'mail.template'
@api.multi
def generate_email(self, res_ids, fields=None):
mail_template = self.env.ref(
'mail.mail_template_data_notification_email_default'
)
if self == mail_template:
obj = self.with_context(mail_debrand=True)
else:
obj = self
return super(MailTemplate, obj).generate_email(res_ids, fields=fields)
@api.model
def _debrand_body(self, body):
using_word = _('using')
odoo_word = _('Odoo')
return re.sub(
using_word + "(.*)[\r\n]*(.*)>" + odoo_word + r"</a>", "", body,
)
@api.model
def render_template(self, template_txt, model, res_ids,
post_process=False):
res = super(MailTemplate, self).render_template(
template_txt, model, res_ids, post_process=post_process,
)
if post_process and self.env.context.get('mail_debrand'):
if isinstance(res, basestring):
res = self._debrand_body(res)
else:
for res_id, body in res.iteritems():
res[res_id] = self._debrand_body(body)
return res

BIN
mail_debrand/static/description/icon.png

After

Width: 128  |  Height: 128  |  Size: 5.2 KiB

248
mail_debrand/static/description/icon.svg

@ -0,0 +1,248 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 128 128"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="icon.svg"
width="128"
height="128"
inkscape:export-filename="icon.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<metadata
id="metadata128">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1855"
inkscape:window-height="1176"
id="namedview126"
showgrid="false"
inkscape:zoom="1.4583592"
inkscape:cx="-40.114514"
inkscape:cy="5.0469316"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<defs
id="defs4">
<linearGradient
id="linearGradient5060">
<stop
offset="0"
id="stop7" />
<stop
offset="1"
stop-opacity="0"
id="stop9" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
id="linearGradient5027"
x2="0"
y1="-150.69685"
y2="327.6604">
<stop
offset="0"
stop-opacity="0"
id="stop12" />
<stop
offset=".5"
id="stop14" />
<stop
offset="1"
stop-opacity="0"
id="stop16" />
</linearGradient>
<linearGradient
gradientTransform="matrix(2.9186598,0,0,2.6345737,-4.8428991,-17.303404)"
gradientUnits="userSpaceOnUse"
id="linearGradient6738"
x1="16.25"
x2="31.5"
y1="12.25"
y2="36.625">
<stop
offset="0"
stop-color="#fff"
id="stop19" />
<stop
offset="1"
stop-color="#ddd"
id="stop21" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
id="linearGradient6954"
x2="0"
y1="29.22382"
y2="35.47382">
<stop
offset="0"
stop-color="#fff"
id="stop24" />
<stop
offset="1"
stop-color="#c9c9c9"
id="stop26" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
id="linearGradient6956"
x1="26.504271"
x2="28.364229"
xlink:href="#linearGradient5060"
y1="35.819832"
y2="36.569832"
gradientTransform="translate(5.9124945,0.99230678)" />
<linearGradient
gradientTransform="matrix(-0.97769,0.21008,0.21008,0.97769,61.56807,-4.44833)"
gradientUnits="userSpaceOnUse"
id="linearGradient6958"
x1="22.686769"
x2="21.408461"
xlink:href="#linearGradient5060"
y1="36.3904"
y2="35.739632" />
<radialGradient
cx="55"
cy="125"
gradientUnits="userSpaceOnUse"
id="radialGradient278"
r="14.375">
<stop
offset="0"
stop-color="#fff"
id="stop31" />
<stop
offset=".5"
stop-color="#fff520"
stop-opacity=".89109"
id="stop33" />
<stop
offset="1"
stop-color="#fff300"
stop-opacity="0"
id="stop35" />
</radialGradient>
<radialGradient
cx="16.214741"
cy="19.83647"
gradientTransform="matrix(1,0,0,0.68192,19.76231,14.9041)"
gradientUnits="userSpaceOnUse"
id="radialGradient6948"
r="13.56536">
<stop
offset="0"
stop-color="#727e0a"
id="stop38" />
<stop
offset="1"
stop-color="#5b6508"
id="stop40" />
</radialGradient>
<radialGradient
cx="29.344931"
cy="17.064079"
gradientTransform="matrix(0.788,0,0,0.788,6.2212,3.61763)"
gradientUnits="userSpaceOnUse"
id="radialGradient6952"
r="9.1620598">
<stop
offset="0"
stop-color="#e9b15e"
id="stop43" />
<stop
offset="1"
stop-color="#966416"
id="stop45" />
</radialGradient>
<radialGradient
cx="605.71429"
cy="486.64789"
gradientTransform="matrix(-2.77439,0,0,1.96971,112.7623,-872.8854)"
gradientUnits="userSpaceOnUse"
id="radialGradient5031"
r="117.14286"
xlink:href="#linearGradient5060" />
<radialGradient
cx="605.71429"
cy="486.64789"
gradientTransform="matrix(2.77439,0,0,1.96971,-1891.633,-872.8854)"
gradientUnits="userSpaceOnUse"
id="radialGradient5029"
r="117.14286"
xlink:href="#linearGradient5060" />
<radialGradient
cx="31.1127"
cy="19.008619"
gradientUnits="userSpaceOnUse"
id="radialGradient6950"
r="8.6620598"
xlink:href="#linearGradient5060" />
</defs>
<g
transform="matrix(2.1385661,0,0,2.1385661,-36.355623,89.820203)"
inkscape:label="Calque 1"
id="layer1">
<path
transform="translate(13,-50)"
d="m 10,8 c -3.3137,0 -6,2.6822 -6,6 0.074392,9.0983 1.952e-4,18.727 0,28 0,3.1932 2.4839,5.7776 5.625,5.9688 l 44.625,0.031 c 3.199,-0.129 5.75,-2.765 5.75,-6 l 0,-29.031 c -0.485,-2.829 -2.941,-4.969 -5.906,-4.969 -14.69,0.0067 -29.398,1e-4 -44.094,0 z m -0.09375,3.1562 44.375,0 -21.469,21.469 c -0.39174,0.39174 -1.0145,0.39174 -1.4062,0 l -21.5,-21.469 z m 47.094,1.532 0,29.093 c 0,1.7334 -0.6245,2.7125 -1.875,3.0625 l -15.125,-15.156 17,-17 z m -49.656,0.124 16.718,16.719 -15.281,15.281 c -1.046,-0.353 -1.4101,-1.195 -1.4372,-2.343 l 0,-29.656 z m 18.844,18.812 5.2188,5.25 c 0.39174,0.39174 1.0145,0.39174 1.4062,0 l 5.062,-5.062 13.187,13.188 -38.25,0 13.375,-13.375 z"
sodipodi:nodetypes="ccscccccccccccccccccccccccccccc"
style="fill:#000000"
id="rect3174"
inkscape:connector-curvature="0" />
</g>
<g
transform="matrix(0.26759984,0,0,-0.26759984,62.366861,118.02764)"
inkscape:label="ink_ext_XXXXXX"
id="g10">
<path
d="m 104.00014,165.45424 c -8.313043,0 -16.263246,-1.57861 -23.850744,-4.72609 -7.594015,-3.15718 -14.181554,-7.52151 -19.768717,-13.10966 -5.587026,-5.58537 -10.031894,-12.10596 -13.321854,-19.55278 -3.297028,-7.45376 -4.942836,-15.61837 -4.942836,-24.4966 0,-8.312905 1.645808,-16.26269 4.942836,-23.850746 3.28996,-7.594012 7.734828,-14.256255 13.321854,-19.984093 5.587163,-5.733797 12.174702,-10.246299 19.768717,-13.536809 7.587498,-3.297027 15.537701,-4.941729 23.850744,-4.941729 8.30583,0 16.2577,1.644702 23.85171,4.941729 7.5875,3.29051 14.18128,7.803012 19.76942,13.536809 5.58675,5.727838 10.02454,12.390081 13.32171,19.984093 3.29023,7.588056 4.94089,15.537841 4.94089,23.850746 -0.85928,16.90258 -6.87567,31.15898 -18.04779,42.76184 -11.17419,11.60314 -25.6454,17.97571 -43.40561,19.12329 l -0.43033,0 z M 104.43047,208 c 14.03437,0 27.28859,-2.79405 39.75226,-8.38083 12.46244,-5.58534 23.4211,-13.10687 32.87602,-22.5618 9.45355,-9.45492 16.97508,-20.48705 22.56183,-33.09085 C 205.20733,131.3558 208,117.89258 208,103.56911 208,89.239815 205.27385,75.85019 199.83679,63.387487 194.39,50.925336 187.01124,39.966662 177.70323,30.511325 168.38966,21.056678 157.431,13.602838 144.82719,8.1646355 132.21703,2.726419 118.61203,0 104.00014,0 89.671258,0 76.208041,2.5780813 63.603558,7.7347705 50.993109,12.892 39.96777,20.123798 30.512431,29.437215 21.058202,38.744259 13.605015,49.702934 8.1651761,62.313379 2.7204595,74.917448 0,88.668665 0,103.56911 c 0,14.32347 2.6462976,27.71892 7.9502436,40.1826 5.2990814,12.46381 12.6781754,23.34765 22.1335154,32.66119 9.453538,9.30801 20.553026,16.76025 33.305391,22.347 12.744188,5.58675 26.429298,8.66218 41.04132,9.2401"
style="fill:#a2478a;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path14"
inkscape:connector-curvature="0" />
</g>
<g
id="g4250"
transform="matrix(0.16801262,0,0,0.16801262,85.012954,66.157096)">
<ellipse
style="fill:none;stroke:#ff0000;stroke-width:50.00000381"
id="path3315"
cx="30.856556"
cy="143.08545"
rx="199.9995"
ry="199.99942" />
<path
d="m -114.84995,20.228255 297.14,260.000005"
inkscape:connector-curvature="0"
style="fill:#ff0000;stroke:#ff0000;stroke-width:50"
id="path4089" />
</g>
</svg>

4
mail_debrand/tests/__init__.py

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_mail_debrand

26
mail_debrand/tests/test_mail_debrand.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# Copyright 2017 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.tests import common
class TestMailDebrand(common.SavepointCase):
@classmethod
def setUpClass(cls):
super(TestMailDebrand, cls).setUpClass()
cls.template = cls.env.ref(
'mail.mail_template_data_notification_email_default'
)
def test_generate_email_simple(self):
res = self.template.generate_email(
self.env.user.id, fields=['body_html'],
)
self.assertNotIn('using', res)
def test_generate_email_multi(self):
res = self.template.generate_email(
self.env.user.ids, fields=['body_html'],
)
self.assertNotIn('using', res[res.keys()[0]])
Loading…
Cancel
Save