Skip to content

Commit

Permalink
[IMP] Add button to add to mailing lists
Browse files Browse the repository at this point in the history
  • Loading branch information
Javier Iniesta committed Nov 16, 2015
1 parent 05bd6b8 commit d1933ec
Show file tree
Hide file tree
Showing 11 changed files with 234 additions and 8 deletions.
4 changes: 4 additions & 0 deletions mass_mailing_partner/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ partners.
Usage
=====

In partner view, there is a new action called "Add to mailing list". This
action open a pop-up to select a mailing list. Selected partners will be added
as mailing list contacts.

.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/111/8.0
Expand Down
1 change: 1 addition & 0 deletions mass_mailing_partner/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# See README.rst file on addon root folder for license details

from . import models
from . import wizard
from openerp import api, SUPERUSER_ID


Expand Down
1 change: 1 addition & 0 deletions mass_mailing_partner/__openerp__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
'views/mail_mass_mailing_contact_view.xml',
'views/mail_mass_mailing_view.xml',
'views/res_partner_view.xml',
'wizard/partner_mail_list_wizard.xml'
],
"installable": True,
}
70 changes: 66 additions & 4 deletions mass_mailing_partner/i18n/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,64 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-30 07:46+0000\n"
"PO-Revision-Date: 2015-09-30 07:46+0000\n"
"POT-Creation-Date: 2015-11-03 14:42+0000\n"
"PO-Revision-Date: 2015-11-03 14:42+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: mass_mailing_partner
#: view:partner.mail.list.wizard:mass_mailing_partner.partner_mail_list_wizard_form
msgid "Add contacts to mailing list"
msgstr "Añadir contactos a la lista de correo"

#. module: mass_mailing_partner
#: model:ir.actions.act_window,name:mass_mailing_partner.action_partner_mail_list
msgid "Add to mailing list"
msgstr "Añadir a lista de correo"

#. module: mass_mailing_partner
#: view:partner.mail.list.wizard:mass_mailing_partner.partner_mail_list_wizard_form
msgid "Cancel"
msgstr "Cancelar"

#. module: mass_mailing_partner
#: model:ir.model,name:mass_mailing_partner.model_partner_mail_list_wizard
#: view:partner.mail.list.wizard:mass_mailing_partner.partner_mail_list_wizard_form
msgid "Create contact mailing list"
msgstr "Crear lista de correo de contactos"

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,create_uid:0
msgid "Created by"
msgstr "Creado por"

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,create_date:0
msgid "Created on"
msgstr "Creado en"

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,id:0
msgid "ID"
msgstr "ID"

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización por"

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,write_date:0
msgid "Last Updated on"
msgstr "Última actualización en"

#. module: mass_mailing_partner
#: model:ir.model,name:mass_mailing_partner.model_mail_mass_mailing_list
#: field:partner.mail.list.wizard,mail_list_id:0
#: view:res.partner:mass_mailing_partner.view_res_partner_filter
msgid "Mailing List"
msgstr "Lista de correo"
Expand Down Expand Up @@ -53,6 +100,12 @@ msgstr "Contactos de lista de correo"
msgid "Partner"
msgstr "Empresa"

#. module: mass_mailing_partner
#: code:addons/mass_mailing_partner/wizard/partner_mail_list_wizard.py:24
#, python-format
msgid "Partner '%s' has no email."
msgstr "La empresa '%s' no tiene email."

#. module: mass_mailing_partner
#: field:mail.mass_mailing.list,partner_category:0
msgid "Partner Tag"
Expand All @@ -63,16 +116,25 @@ msgstr "Etiqueta de empresa"
#: sql_constraint:mail.mass_mailing.contact:0
#, python-format
msgid "Partner already exists in this mailing list."
msgstr "La empresa ya existe en esta lista de correo."
msgstr "La empresa ya existe en esta lista de correo"

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,partner_ids:0
msgid "Partner ids"
msgstr "IDS de empresas"

#. module: mass_mailing_partner
#: code:addons/mass_mailing_partner/models/res_partner.py:23
#, python-format
msgid "This partner '%s' is subscribed to one or more mailing lists. Email must be assigned."
msgstr "Esta empresa '%s' está suscrita a una o más listas de correo. El email debe estar asignado."

#. module: mass_mailing_partner
#: view:partner.mail.list.wizard:mass_mailing_partner.partner_mail_list_wizard_form
msgid "or"
msgstr "o"

#. module: mass_mailing_partner
#: view:mail.mass_mailing.contact:mass_mailing_partner.view_mail_mass_mailing_contact_tree
msgid "{'readonly': [('partner_id', '!=', False)]}"
msgstr ""

68 changes: 65 additions & 3 deletions mass_mailing_partner/i18n/mass_mailing_partner.pot
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,64 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-30 07:46+0000\n"
"PO-Revision-Date: 2015-09-30 07:46+0000\n"
"POT-Creation-Date: 2015-11-03 14:42+0000\n"
"PO-Revision-Date: 2015-11-03 14:42+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: mass_mailing_partner
#: view:partner.mail.list.wizard:mass_mailing_partner.partner_mail_list_wizard_form
msgid "Add contacts to mailing list"
msgstr ""

#. module: mass_mailing_partner
#: model:ir.actions.act_window,name:mass_mailing_partner.action_partner_mail_list
msgid "Add to mailing list"
msgstr ""

#. module: mass_mailing_partner
#: view:partner.mail.list.wizard:mass_mailing_partner.partner_mail_list_wizard_form
msgid "Cancel"
msgstr ""

#. module: mass_mailing_partner
#: model:ir.model,name:mass_mailing_partner.model_partner_mail_list_wizard
#: view:partner.mail.list.wizard:mass_mailing_partner.partner_mail_list_wizard_form
msgid "Create contact mailing list"
msgstr ""

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,create_uid:0
msgid "Created by"
msgstr ""

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,create_date:0
msgid "Created on"
msgstr ""

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,id:0
msgid "ID"
msgstr ""

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,write_uid:0
msgid "Last Updated by"
msgstr ""

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,write_date:0
msgid "Last Updated on"
msgstr ""

#. module: mass_mailing_partner
#: model:ir.model,name:mass_mailing_partner.model_mail_mass_mailing_list
#: field:partner.mail.list.wizard,mail_list_id:0
#: view:res.partner:mass_mailing_partner.view_res_partner_filter
msgid "Mailing List"
msgstr ""
Expand Down Expand Up @@ -53,6 +100,12 @@ msgstr ""
msgid "Partner"
msgstr ""

#. module: mass_mailing_partner
#: code:addons/mass_mailing_partner/wizard/partner_mail_list_wizard.py:24
#, python-format
msgid "Partner '%s' has no email."
msgstr ""

#. module: mass_mailing_partner
#: field:mail.mass_mailing.list,partner_category:0
msgid "Partner Tag"
Expand All @@ -65,14 +118,23 @@ msgstr ""
msgid "Partner already exists in this mailing list."
msgstr ""

#. module: mass_mailing_partner
#: field:partner.mail.list.wizard,partner_ids:0
msgid "Partner ids"
msgstr ""

#. module: mass_mailing_partner
#: code:addons/mass_mailing_partner/models/res_partner.py:23
#, python-format
msgid "This partner '%s' is subscribed to one or more mailing lists. Email must be assigned."
msgstr ""

#. module: mass_mailing_partner
#: view:partner.mail.list.wizard:mass_mailing_partner.partner_mail_list_wizard_form
msgid "or"
msgstr ""

#. module: mass_mailing_partner
#: view:mail.mass_mailing.contact:mass_mailing_partner.view_mail_mass_mailing_contact_tree
msgid "{'readonly': [('partner_id', '!=', False)]}"
msgstr ""

1 change: 1 addition & 0 deletions mass_mailing_partner/tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
# See README.rst file on addon root folder for license details

from . import test_mail_mass_mailing_contact, test_res_partner
from . import test_partner_mail_list_wizard
24 changes: 24 additions & 0 deletions mass_mailing_partner/tests/test_partner_mail_list_wizard.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# See README.rst file on addon root folder for license details

from . import base
from openerp.exceptions import Warning as UserError


class PartnerMailListWizardCase(base.BaseCase):

def test_add_to_mail_list(self):
wizard = self.env['partner.mail.list.wizard'].create(
{'mail_list_id': self.mailing_list.id})
wizard.partner_ids = [self.partner.id]
wizard.add_to_mail_list()
contact = self.env['mail.mass_mailing.contact'].search([
('partner_id', '=', self.partner.id),
('list_id', '=', self.mailing_list.id)])
self.check_mailing_contact_partner(contact)
# This line does not create a new contact
wizard.add_to_mail_list()
partner = self.env['res.partner'].create({'name': 'No email partner'})
wizard.partner_ids = [partner.id]
with self.assertRaises(UserError):
wizard.add_to_mail_list()
3 changes: 2 additions & 1 deletion mass_mailing_partner/tests/test_res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ def test_count_mass_mailing_contacts(self):
def test_write_res_partner(self):
contact = self.create_mailing_contact(
{'email': 'partner@test.com', 'list_id': self.mailing_list.id})
self.partner.write({'name': 'Changed'})
self.partner.write({'name': 'Changed', 'email': 'partner@changed.com'})
self.assertEqual(contact.name, self.partner.name)
self.assertEqual(contact.email, self.partner.email)
with self.assertRaises(ValidationError):
self.partner.write({'email': False})
4 changes: 4 additions & 0 deletions mass_mailing_partner/wizard/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# See README.rst file on addon root folder for license details

from . import partner_mail_list_wizard
34 changes: 34 additions & 0 deletions mass_mailing_partner/wizard/partner_mail_list_wizard.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
# See README.rst file on addon root folder for license details

from openerp import models, api, fields, _
from openerp.exceptions import Warning as UserError


class PartnerMailListWizard(models.TransientModel):
_name = "partner.mail.list.wizard"
_description = "Create contact mailing list"

mail_list_id = fields.Many2one(comodel_name="mail.mass_mailing.list",
string="Mailing List")
partner_ids = fields.Many2many(
comodel_name="res.partner", relation="mail_list_wizard_partner",
default=lambda self: self.env.context.get("active_ids"))

@api.multi
def add_to_mail_list(self):
contact_obj = self.env['mail.mass_mailing.contact']
for partner in self.partner_ids:
if not partner.email:
raise UserError(_("Partner '%s' has no email.") % partner.name)
criteria = [('email', '=', partner.email),
('list_id', '=', self.mail_list_id.id)]
contact_test = contact_obj.search(criteria)
if contact_test:
continue
contact_vals = {
'email': partner.email,
'name': partner.name,
'list_id': self.mail_list_id.id
}
contact_obj.create(contact_vals)
32 changes: 32 additions & 0 deletions mass_mailing_partner/wizard/partner_mail_list_wizard.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

<act_window name="Add to mailing list"
res_model="partner.mail.list.wizard"
src_model="res.partner"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_partner_mail_list"/>

<record model="ir.ui.view" id="partner_mail_list_wizard_form">
<field name="name">partner.mail.list.form</field>
<field name="model">partner.mail.list.wizard</field>
<field name="arch" type="xml">
<form string="Create contact mailing list">
<group>
<field name="mail_list_id"/>
</group>
<footer>
<button string="Add contacts to mailing list" name="add_to_mail_list"
type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>

</data>
</openerp>

0 comments on commit d1933ec

Please sign in to comment.