diff --git a/mass_mailing_partner/README.rst b/mass_mailing_partner/README.rst index a95f5175..315660b4 100644 --- a/mass_mailing_partner/README.rst +++ b/mass_mailing_partner/README.rst @@ -24,16 +24,6 @@ Configuration At first install, all existing mass mailing contacts are matched against partners. And also mass mailing statistics are matched using model and res_id. -NOTE: When upgrading from version 1.0.0, no mass mailing statistics matching -are done, because it is done only when installing. You can execute 'partner_link' -method to all stats using odoo shell or any XML client: - -.. code:: python - - # odoo.py --addons-path= shell --config= -d - stats = self.env['mail.mail.statistics'].search([('model', '!=', False), ('res_id', '!=', False)]) - stats.partner_link() - Usage ===== @@ -43,34 +33,16 @@ 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 + :target: https://runbot.odoo-community.org/runbot/205/10.0 Bug Tracker =========== -Bugs are tracked on `GitHub 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 -`here `_. - - -License -======= - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as published -by the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see . - +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smash it by providing detailed and welcomed feedback. Credits ======= @@ -78,11 +50,13 @@ Credits Contributors ------------ -* Pedro M. Baeza +* Pedro M. Baeza * Rafael Blasco -* Antonio Espinosa +* Antonio Espinosa * Javier Iniesta * Jairo Llopis +* David Vidal + Maintainer ---------- diff --git a/mass_mailing_partner/__init__.py b/mass_mailing_partner/__init__.py index bc9d0590..f0fe988d 100644 --- a/mass_mailing_partner/__init__.py +++ b/mass_mailing_partner/__init__.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta -# © 2016 Antonio Espinosa - +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import models diff --git a/mass_mailing_partner/__openerp__.py b/mass_mailing_partner/__manifest__.py similarity index 64% rename from mass_mailing_partner/__openerp__.py rename to mass_mailing_partner/__manifest__.py index b0dea3a4..096c2cbd 100644 --- a/mass_mailing_partner/__openerp__.py +++ b/mass_mailing_partner/__manifest__.py @@ -1,17 +1,16 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta -# © 2016 Antonio Espinosa - +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta +# Copyright 2016 Antonio Espinosa - # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "Link partners with mass-mailing", - "version": "8.0.2.1.0", + "version": "10.0.1.0.1", "author": "Tecnativa, " - "Antiun Ingeniería S.L., " - "Serv. Tecnol. Avanzados - Pedro M. Baeza, " "Odoo Community Association (OCA)", + "website": "https://www.tecnativa.com", "license": "AGPL-3", "category": "Marketing", "depends": [ diff --git a/mass_mailing_partner/hooks.py b/mass_mailing_partner/hooks.py index aaa37311..cf8edf60 100644 --- a/mass_mailing_partner/hooks.py +++ b/mass_mailing_partner/hooks.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta -# © 2016 Antonio Espinosa - +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta +# Copyright 2016 Antonio Espinosa - # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import logging -from openerp import api, SUPERUSER_ID +from odoo import api, SUPERUSER_ID _logger = logging.getLogger(__name__) diff --git a/mass_mailing_partner/i18n/mass_mailing_partner.pot b/mass_mailing_partner/i18n/mass_mailing_partner.pot deleted file mode 100644 index e09d240b..00000000 --- a/mass_mailing_partner/i18n/mass_mailing_partner.pot +++ /dev/null @@ -1,140 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * mass_mailing_partner -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \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 "" - -#. module: mass_mailing_partner -#: field:res.partner,mass_mailing_contacts_count:0 -msgid "Mailing list number" -msgstr "" - -#. module: mass_mailing_partner -#: view:res.partner:mass_mailing_partner.view_partner_form -msgid "Mailing lists" -msgstr "" - -#. module: mass_mailing_partner -#: field:mail.mass_mailing.list,partner_mandatory:0 -msgid "Mandatory Partner" -msgstr "" - -#. module: mass_mailing_partner -#: model:ir.model,name:mass_mailing_partner.model_mail_mass_mailing_contact -msgid "Mass Mailing Contact" -msgstr "" - -#. module: mass_mailing_partner -#: field:res.partner,mass_mailing_contacts:0 -msgid "Mass mailing contacts" -msgstr "" - -#. module: mass_mailing_partner -#: model:ir.model,name:mass_mailing_partner.model_res_partner -#: view:mail.mass_mailing.contact:mass_mailing_partner.view_mail_mass_mailing_contact_search -#: field:mail.mass_mailing.contact,partner_id:0 -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" -msgstr "" - -#. module: mass_mailing_partner -#: code:addons/mass_mailing_partner/models/mail_mass_mailing_contact.py:15 -#: sql_constraint:mail.mass_mailing.contact:0 -#, python-format -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 "" diff --git a/mass_mailing_partner/models/__init__.py b/mass_mailing_partner/models/__init__.py index 3d81de77..a1322f45 100644 --- a/mass_mailing_partner/models/__init__.py +++ b/mass_mailing_partner/models/__init__.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta -# © 2016 Antonio Espinosa - +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import mail_mass_mailing_contact diff --git a/mass_mailing_partner/models/mail_mail_statistics.py b/mass_mailing_partner/models/mail_mail_statistics.py index dff06620..385bc0aa 100644 --- a/mass_mailing_partner/models/mail_mail_statistics.py +++ b/mass_mailing_partner/models/mail_mail_statistics.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- -# © 2016 Antonio Espinosa - +# Copyright 2016 Antonio Espinosa - # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields, api +from odoo import api, fields, models class MailMailStatistics(models.Model): @@ -22,7 +22,6 @@ class MailMailStatistics(models.Model): partner_id = obj.partner_id.id return partner_id - @api.multi def partner_link(self): for stat in self.filtered(lambda r: r.model and r.res_id): partner_id = self.partner_id_from_obj(stat.model, stat.res_id) diff --git a/mass_mailing_partner/models/mail_mass_mailing.py b/mass_mailing_partner/models/mail_mass_mailing.py index 9294beb4..b3afe8be 100644 --- a/mass_mailing_partner/models/mail_mass_mailing.py +++ b/mass_mailing_partner/models/mail_mass_mailing.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields +from odoo import fields, models class MailMassMailingList(models.Model): diff --git a/mass_mailing_partner/models/mail_mass_mailing_contact.py b/mass_mailing_partner/models/mail_mass_mailing_contact.py index 7a8bf25c..864d9c47 100644 --- a/mass_mailing_partner/models/mail_mass_mailing_contact.py +++ b/mass_mailing_partner/models/mail_mass_mailing_contact.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta -# © 2016 Antonio Espinosa - +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta +# Copyright 2017 David Vidal # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields, api, _ +from odoo import _, api, fields, models class MailMassMailingContact(models.Model): @@ -19,7 +19,6 @@ class MailMassMailingContact(models.Model): _('Partner already exists in this mailing list.')) ] - @api.one @api.onchange('partner_id') def _onchange_partner(self): if self.partner_id: @@ -34,12 +33,12 @@ class MailMassMailingContact(models.Model): vals = self._set_name_email(vals) return super(MailMassMailingContact, self).create(vals) - @api.one def write(self, vals): - if vals.get('partner_id', None) is False: - # If removing partner, search again by email - vals = self._set_partner(vals) - vals = self._set_name_email(vals) + for contact in self: + if vals.get('partner_id', None) is False: + # If removing partner, search again by email + vals = contact._set_partner(vals) + vals = contact._set_name_email(vals) return super(MailMassMailingContact, self).write(vals) def _prepare_partner(self, vals, mailing_list): diff --git a/mass_mailing_partner/models/res_partner.py b/mass_mailing_partner/models/res_partner.py index 708a0560..10f07b43 100644 --- a/mass_mailing_partner/models/res_partner.py +++ b/mass_mailing_partner/models/res_partner.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta -# © 2016 Antonio Espinosa - +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta +# Copyright 2017 David Vidal # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import models, fields, api, _ -from openerp.exceptions import ValidationError +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError class ResPartner(models.Model): @@ -19,7 +19,8 @@ class ResPartner(models.Model): comodel_name='mail.mass_mailing.contact', inverse_name='partner_id') mass_mailing_contacts_count = fields.Integer( string='Mailing list number', - compute='_compute_mass_mailing_contacts_count', store=True) + compute='_compute_mass_mailing_contacts_count', store=True, + compute_sudo=True) mass_mailing_stats = fields.One2many( string="Mass mailing stats", comodel_name='mail.mail.statistics', inverse_name='partner_id') @@ -27,26 +28,26 @@ class ResPartner(models.Model): string='Mass mailing stats number', compute='_compute_mass_mailing_stats_count', store=True) - @api.one @api.constrains('email') def _check_email_mass_mailing_contacts(self): - if self.mass_mailing_contact_ids and not self.email: - raise ValidationError( - _("This partner '%s' is subscribed to one or more " - "mailing lists. Email must be assigned." % self.name)) + for partner in self: + if partner.sudo().mass_mailing_contact_ids and not partner.email: + raise ValidationError( + _("This partner '%s' is subscribed to one or more " + "mailing lists. Email must be assigned.") % partner.name) - @api.one @api.depends('mass_mailing_contact_ids', 'mass_mailing_contact_ids.opt_out') def _compute_mass_mailing_contacts_count(self): - self.mass_mailing_contacts_count = len(self.mass_mailing_contact_ids) + for reg in self: + reg.mass_mailing_contacts_count = len( + reg.mass_mailing_contact_ids) - @api.one @api.depends('mass_mailing_stats') def _compute_mass_mailing_stats_count(self): - self.mass_mailing_stats_count = len(self.mass_mailing_stats) + for reg in self: + reg.mass_mailing_stats_count = len(reg.mass_mailing_stats) - @api.multi def write(self, vals): res = super(ResPartner, self).write(vals) if vals.get('name') or vals.get('email'): diff --git a/mass_mailing_partner/tests/__init__.py b/mass_mailing_partner/tests/__init__.py index 57b45b37..68f402ac 100644 --- a/mass_mailing_partner/tests/__init__.py +++ b/mass_mailing_partner/tests/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import test_mail_mass_mailing_contact, test_res_partner diff --git a/mass_mailing_partner/tests/base.py b/mass_mailing_partner/tests/base.py index 7832ebb2..eb5b4426 100644 --- a/mass_mailing_partner/tests/base.py +++ b/mass_mailing_partner/tests/base.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp.tests.common import TransactionCase +from odoo.tests.common import TransactionCase class BaseCase(TransactionCase): diff --git a/mass_mailing_partner/tests/test_mail_mail_statistics.py b/mass_mailing_partner/tests/test_mail_mail_statistics.py index ddec08d1..4b18def6 100644 --- a/mass_mailing_partner/tests/test_mail_mail_statistics.py +++ b/mass_mailing_partner/tests/test_mail_mail_statistics.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- -# © 2016 Antonio Espinosa +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import base diff --git a/mass_mailing_partner/tests/test_mail_mass_mailing_contact.py b/mass_mailing_partner/tests/test_mail_mass_mailing_contact.py index 0308b766..dde27599 100644 --- a/mass_mailing_partner/tests/test_mail_mass_mailing_contact.py +++ b/mass_mailing_partner/tests/test_mail_mass_mailing_contact.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import base diff --git a/mass_mailing_partner/tests/test_partner_mail_list_wizard.py b/mass_mailing_partner/tests/test_partner_mail_list_wizard.py index 3a93f669..82a8957d 100644 --- a/mass_mailing_partner/tests/test_partner_mail_list_wizard.py +++ b/mass_mailing_partner/tests/test_partner_mail_list_wizard.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import base -from openerp.exceptions import Warning as UserError +from odoo.exceptions import UserError class PartnerMailListWizardCase(base.BaseCase): diff --git a/mass_mailing_partner/tests/test_res_partner.py b/mass_mailing_partner/tests/test_res_partner.py index 1d837318..ea5f925e 100644 --- a/mass_mailing_partner/tests/test_res_partner.py +++ b/mass_mailing_partner/tests/test_res_partner.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- -# © 2015 Pedro M. Baeza -# © 2015 Antonio Espinosa -# © 2015 Javier Iniesta +# Copyright 2015 Pedro M. Baeza +# Copyright 2015 Antonio Espinosa +# Copyright 2015 Javier Iniesta # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import base -from openerp.exceptions import ValidationError +from odoo.exceptions import ValidationError class ResPartnerCase(base.BaseCase): diff --git a/mass_mailing_partner/views/mail_mail_statistics_view.xml b/mass_mailing_partner/views/mail_mail_statistics_view.xml index 2e50e3c6..40808a51 100644 --- a/mass_mailing_partner/views/mail_mail_statistics_view.xml +++ b/mass_mailing_partner/views/mail_mail_statistics_view.xml @@ -1,8 +1,7 @@ - - - + Add partner field @@ -42,5 +41,4 @@ - - + diff --git a/mass_mailing_partner/views/mail_mass_mailing_contact_view.xml b/mass_mailing_partner/views/mail_mass_mailing_contact_view.xml index 4798a1f2..31e71cec 100644 --- a/mass_mailing_partner/views/mail_mass_mailing_contact_view.xml +++ b/mass_mailing_partner/views/mail_mass_mailing_contact_view.xml @@ -1,11 +1,10 @@ - - - + mail.mass_mailing.contact.tree.partner @@ -40,5 +39,4 @@ - - + diff --git a/mass_mailing_partner/views/mail_mass_mailing_view.xml b/mass_mailing_partner/views/mail_mass_mailing_view.xml index ee966359..118abfa2 100644 --- a/mass_mailing_partner/views/mail_mass_mailing_view.xml +++ b/mass_mailing_partner/views/mail_mass_mailing_view.xml @@ -1,10 +1,9 @@ - - - + mail.mass_mailing.list.form @@ -22,5 +21,4 @@ - - + diff --git a/mass_mailing_partner/views/res_partner_view.xml b/mass_mailing_partner/views/res_partner_view.xml index 81a552b1..21bafd7b 100644 --- a/mass_mailing_partner/views/res_partner_view.xml +++ b/mass_mailing_partner/views/res_partner_view.xml @@ -1,18 +1,18 @@ - - - + Partner Form with mailing contacts res.partner + -
+