From 5a2500b8fbda99a70acdd5ea87a31c4cd65b291a Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Fri, 15 Jan 2021 15:18:44 +0100 Subject: [PATCH 01/10] [ADD] partner_pricelist_search: New module TT27659 --- partner_pricelist_search/README.rst | 86 ++++ partner_pricelist_search/__init__.py | 1 + partner_pricelist_search/__manifest__.py | 19 + partner_pricelist_search/i18n/es.po | 51 +++ .../i18n/partner_pricelist_search.pot | 44 ++ partner_pricelist_search/models/__init__.py | 2 + .../models/product_pricelist.py | 21 + .../models/res_partner.py | 33 ++ .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 4 + partner_pricelist_search/readme/ROADMAP.rst | 4 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 431 ++++++++++++++++++ partner_pricelist_search/tests/__init__.py | 1 + .../tests/test_partner_pricelist_search.py | 77 ++++ .../views/product_pricelist_views.xml | 14 + 16 files changed, 791 insertions(+) create mode 100644 partner_pricelist_search/README.rst create mode 100644 partner_pricelist_search/__init__.py create mode 100644 partner_pricelist_search/__manifest__.py create mode 100644 partner_pricelist_search/i18n/es.po create mode 100644 partner_pricelist_search/i18n/partner_pricelist_search.pot create mode 100644 partner_pricelist_search/models/__init__.py create mode 100644 partner_pricelist_search/models/product_pricelist.py create mode 100644 partner_pricelist_search/models/res_partner.py create mode 100644 partner_pricelist_search/readme/CONTRIBUTORS.rst create mode 100644 partner_pricelist_search/readme/DESCRIPTION.rst create mode 100644 partner_pricelist_search/readme/ROADMAP.rst create mode 100644 partner_pricelist_search/static/description/icon.png create mode 100644 partner_pricelist_search/static/description/index.html create mode 100644 partner_pricelist_search/tests/__init__.py create mode 100644 partner_pricelist_search/tests/test_partner_pricelist_search.py create mode 100644 partner_pricelist_search/views/product_pricelist_views.xml diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst new file mode 100644 index 00000000000..7a002b59bfc --- /dev/null +++ b/partner_pricelist_search/README.rst @@ -0,0 +1,86 @@ +======================== +Partner pricelist search +======================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github + :target: https://github.com/OCA/partner-contact/tree/12.0/partner_pricelist_search + :alt: OCA/partner-contact +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/partner-contact-12-0/partner-contact-12-0-partner_pricelist_search + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/134/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds search by pricelist field option in partners. + +Also add a new smart button called "Customers" in pricelist form view to show +partners with that pricelist. + +**Table of contents** + +.. contents:: + :local: + +Known issues / Roadmap +====================== + +With many partner records the search can be slow because all partners are +computed. + +No grouping is allowed. + +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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + + * Carlos Dauden + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/partner-contact `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/partner_pricelist_search/__init__.py b/partner_pricelist_search/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/partner_pricelist_search/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py new file mode 100644 index 00000000000..84efccb2cc2 --- /dev/null +++ b/partner_pricelist_search/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2021 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) + +{ + "name": "Partner pricelist search", + "version": "12.0.1.0.0", + "author": "Tecnativa," + "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/partner-contact", + "category": "Partner Management", + "depends": [ + "product", + ], + "data": [ + "views/product_pricelist_views.xml", + ], + "installable": True, + "license": "AGPL-3", +} diff --git a/partner_pricelist_search/i18n/es.po b/partner_pricelist_search/i18n/es.po new file mode 100644 index 00000000000..2daa17e34a8 --- /dev/null +++ b/partner_pricelist_search/i18n/es.po @@ -0,0 +1,51 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * partner_pricelist_search +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-01-15 14:06+0000\n" +"PO-Revision-Date: 2021-01-15 15:07+0100\n" +"Last-Translator: Carlos Dauden \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.3\n" + +#. module: partner_pricelist_search +#: model:ir.model,name:partner_pricelist_search.model_res_partner +msgid "Contact" +msgstr "Contacto" + +#. module: partner_pricelist_search +#: model_terms:ir.ui.view,arch_db:partner_pricelist_search.product_pricelist_view +msgid "Customers" +msgstr "Clientes" + +#. module: partner_pricelist_search +#: model:ir.model,name:partner_pricelist_search.model_product_pricelist +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_users__property_product_pricelist +msgid "Pricelist" +msgstr "Tarifa" + +#. module: partner_pricelist_search +#: code:addons/partner_pricelist_search/models/res_partner.py:29 +#, python-format +msgid "Pricelist field do not support search with the operator '%s'." +msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." + +#. module: partner_pricelist_search +#: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist +#: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist +msgid "" +"This pricelist will be used, instead of the default one, for sales to the " +"current partner" +msgstr "" +"Esta tarifa se utilizará, en lugar de la por defecto, para las ventas de la " +"empresa actual" diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot new file mode 100644 index 00000000000..93250fc2546 --- /dev/null +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * partner_pricelist_search +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: partner_pricelist_search +#: model:ir.model,name:partner_pricelist_search.model_res_partner +msgid "Contact" +msgstr "" + +#. module: partner_pricelist_search +#: model_terms:ir.ui.view,arch_db:partner_pricelist_search.product_pricelist_view +msgid "Customers" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model,name:partner_pricelist_search.model_product_pricelist +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_users__property_product_pricelist +msgid "Pricelist" +msgstr "" + +#. module: partner_pricelist_search +#: code:addons/partner_pricelist_search/models/res_partner.py:29 +#, python-format +msgid "Pricelist field do not support search with the operator '%s'." +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist +#: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist +msgid "This pricelist will be used, instead of the default one, for sales to the current partner" +msgstr "" + diff --git a/partner_pricelist_search/models/__init__.py b/partner_pricelist_search/models/__init__.py new file mode 100644 index 00000000000..978a9c74806 --- /dev/null +++ b/partner_pricelist_search/models/__init__.py @@ -0,0 +1,2 @@ +from . import product_pricelist +from . import res_partner diff --git a/partner_pricelist_search/models/product_pricelist.py b/partner_pricelist_search/models/product_pricelist.py new file mode 100644 index 00000000000..35706dd88f3 --- /dev/null +++ b/partner_pricelist_search/models/product_pricelist.py @@ -0,0 +1,21 @@ +# Copyright 2021 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) + +from odoo import models + + +class Pricelist(models.Model): + _inherit = "product.pricelist" + + def show_pricelist_partners(self): + if len(self) == 1: + domain = [("property_product_pricelist", "=", self.id)] + else: + domain = [("property_product_pricelist", "in", self.ids)] + partners = self.env["res.partner"].search(domain) + action = self.env.ref("base.action_partner_form") + res = action.read()[0] + res['domain'] = [ + ('id', 'in', partners.ids), + ] + return res diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py new file mode 100644 index 00000000000..6b1c8275674 --- /dev/null +++ b/partner_pricelist_search/models/res_partner.py @@ -0,0 +1,33 @@ +# Copyright 2021 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class Pricelist(models.Model): + _inherit = "res.partner" + + property_product_pricelist = fields.Many2one( + search="_search_property_product_pricelist") + + @api.model + def _search_property_product_pricelist(self, operator, value): + if operator == "=": + def filter_func(partner): + return partner.property_product_pricelist.id == value + elif operator == "!=": + def filter_func(partner): + return partner.property_product_pricelist.id != value + elif operator == "in": + def filter_func(partner): + return partner.property_product_pricelist.id in value + elif operator == "not in": + def filter_func(partner): + return partner.property_product_pricelist.id not in value + else: + raise UserError(_( + "Pricelist field do not support search with the operator '%s'." + ) % operator) + partners = self.with_context(prefetch_fields=False).search([]) + return [("id", "in", partners.filtered(filter_func).ids)] diff --git a/partner_pricelist_search/readme/CONTRIBUTORS.rst b/partner_pricelist_search/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..af740da8f3f --- /dev/null +++ b/partner_pricelist_search/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Tecnativa `_: + + * Carlos Dauden diff --git a/partner_pricelist_search/readme/DESCRIPTION.rst b/partner_pricelist_search/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..f8ad3983139 --- /dev/null +++ b/partner_pricelist_search/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +This module adds search by pricelist field option in partners. + +Also add a new smart button called "Customers" in pricelist form view to show +partners with that pricelist. diff --git a/partner_pricelist_search/readme/ROADMAP.rst b/partner_pricelist_search/readme/ROADMAP.rst new file mode 100644 index 00000000000..2568d59b2a1 --- /dev/null +++ b/partner_pricelist_search/readme/ROADMAP.rst @@ -0,0 +1,4 @@ +With many partner records the search can be slow because all partners are +computed. + +No grouping is allowed. diff --git a/partner_pricelist_search/static/description/icon.png b/partner_pricelist_search/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html new file mode 100644 index 00000000000..13590990be1 --- /dev/null +++ b/partner_pricelist_search/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +Partner pricelist search + + + + + + diff --git a/partner_pricelist_search/tests/__init__.py b/partner_pricelist_search/tests/__init__.py new file mode 100644 index 00000000000..06c448861fe --- /dev/null +++ b/partner_pricelist_search/tests/__init__.py @@ -0,0 +1 @@ +from . import test_partner_pricelist_search diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py new file mode 100644 index 00000000000..5d0eedbf07b --- /dev/null +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -0,0 +1,77 @@ +# Copyright 2021 Tecnativa - Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) + +from odoo.exceptions import UserError +from odoo.tests import common + + +class TestPartnerPricelistSearch(common.SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.pricelist_1 = cls.env["product.pricelist"].create({ + "name": "Test pricelist 1", + }) + cls.pricelist_2 = cls.env["product.pricelist"].create({ + "name": "Test pricelist 2", + }) + cls.customer_1 = cls.env["res.partner"].create({ + "name": "Test customer 1", + "property_product_pricelist": cls.pricelist_1, + }) + cls.customer_2 = cls.env["res.partner"].create({ + "name": "Test customer 2", + "property_product_pricelist": cls.pricelist_2, + }) + cls.partner_obj = cls.env["res.partner"] + + def test_partner_pricelist_search_equal(self): + """ Test search '=' """ + partners = self.partner_obj.search([ + ("property_product_pricelist", "=", + self.pricelist_1.id) + ]) + self.assertEqual(partners, self.customer_1) + + def test_partner_pricelist_search_in(self): + """ Test search 'in' """ + partners = self.partner_obj.search([ + ("property_product_pricelist", "in", + (self.pricelist_1 | self.pricelist_2).ids) + ]) + self.assertIn(self.customer_1, partners) + self.assertIn(self.customer_2, partners) + + def test_partner_pricelist_search_not_equal(self): + """ Test search 'not equal' """ + partners = self.partner_obj.search([ + ("property_product_pricelist", "!=", + self.pricelist_1.id) + ]) + self.assertNotIn(self.customer_1, partners) + self.assertIn(self.customer_2, partners) + + def test_partner_pricelist_search_not_in(self): + """ Test search 'not in' """ + partners = self.partner_obj.search([ + ("property_product_pricelist", "not in", + (self.pricelist_1 | self.pricelist_2).ids) + ]) + self.assertNotIn(self.customer_1, partners) + self.assertNotIn(self.customer_2, partners) + + def test_partner_pricelist_search_not_implemented(self): + """ Test search not implemented """ + with self.assertRaises(UserError): + self.partner_obj.search([ + ("property_product_pricelist", "ilike", + "pricelist xx") + ]) + + def test_show_pricelist_partners(self): + res = self.pricelist_1.show_pricelist_partners() + self.assertEqual(self.partner_obj.search(res["domain"]), + self.customer_1) + res = (self.pricelist_1 | self.pricelist_2).show_pricelist_partners() + self.assertEqual(self.partner_obj.search(res["domain"]), + (self.customer_1 | self.customer_2)) diff --git a/partner_pricelist_search/views/product_pricelist_views.xml b/partner_pricelist_search/views/product_pricelist_views.xml new file mode 100644 index 00000000000..8c5e95038cd --- /dev/null +++ b/partner_pricelist_search/views/product_pricelist_views.xml @@ -0,0 +1,14 @@ + + + + product.pricelist + + + + + + From 072079dee44fe83ac5cd05bda23c6f5cc481bb25 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Wed, 3 Mar 2021 22:51:10 +0100 Subject: [PATCH 02/10] [IMP] partner_pricelist_search: black, isort, prettier --- partner_pricelist_search/__manifest__.py | 11 +-- .../models/product_pricelist.py | 4 +- .../models/res_partner.py | 18 ++++- .../tests/test_partner_pricelist_search.py | 81 ++++++++++--------- .../views/product_pricelist_views.xml | 14 ++-- 5 files changed, 71 insertions(+), 57 deletions(-) diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index 84efccb2cc2..3447fdae5a0 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -4,16 +4,11 @@ { "name": "Partner pricelist search", "version": "12.0.1.0.0", - "author": "Tecnativa," - "Odoo Community Association (OCA)", + "author": "Tecnativa," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", - "depends": [ - "product", - ], - "data": [ - "views/product_pricelist_views.xml", - ], + "depends": ["product",], + "data": ["views/product_pricelist_views.xml",], "installable": True, "license": "AGPL-3", } diff --git a/partner_pricelist_search/models/product_pricelist.py b/partner_pricelist_search/models/product_pricelist.py index 35706dd88f3..ed2ea12c6e1 100644 --- a/partner_pricelist_search/models/product_pricelist.py +++ b/partner_pricelist_search/models/product_pricelist.py @@ -15,7 +15,7 @@ def show_pricelist_partners(self): partners = self.env["res.partner"].search(domain) action = self.env.ref("base.action_partner_form") res = action.read()[0] - res['domain'] = [ - ('id', 'in', partners.ids), + res["domain"] = [ + ("id", "in", partners.ids), ] return res diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py index 6b1c8275674..aa506603009 100644 --- a/partner_pricelist_search/models/res_partner.py +++ b/partner_pricelist_search/models/res_partner.py @@ -9,25 +9,35 @@ class Pricelist(models.Model): _inherit = "res.partner" property_product_pricelist = fields.Many2one( - search="_search_property_product_pricelist") + search="_search_property_product_pricelist" + ) @api.model def _search_property_product_pricelist(self, operator, value): if operator == "=": + def filter_func(partner): return partner.property_product_pricelist.id == value + elif operator == "!=": + def filter_func(partner): return partner.property_product_pricelist.id != value + elif operator == "in": + def filter_func(partner): return partner.property_product_pricelist.id in value + elif operator == "not in": + def filter_func(partner): return partner.property_product_pricelist.id not in value + else: - raise UserError(_( - "Pricelist field do not support search with the operator '%s'." - ) % operator) + raise UserError( + _("Pricelist field do not support search with the operator '%s'.") + % operator + ) partners = self.with_context(prefetch_fields=False).search([]) return [("id", "in", partners.filtered(filter_func).ids)] diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py index 5d0eedbf07b..435f96ff92b 100644 --- a/partner_pricelist_search/tests/test_partner_pricelist_search.py +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -9,69 +9,74 @@ class TestPartnerPricelistSearch(common.SavepointCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.pricelist_1 = cls.env["product.pricelist"].create({ - "name": "Test pricelist 1", - }) - cls.pricelist_2 = cls.env["product.pricelist"].create({ - "name": "Test pricelist 2", - }) - cls.customer_1 = cls.env["res.partner"].create({ - "name": "Test customer 1", - "property_product_pricelist": cls.pricelist_1, - }) - cls.customer_2 = cls.env["res.partner"].create({ - "name": "Test customer 2", - "property_product_pricelist": cls.pricelist_2, - }) + cls.pricelist_1 = cls.env["product.pricelist"].create( + {"name": "Test pricelist 1",} + ) + cls.pricelist_2 = cls.env["product.pricelist"].create( + {"name": "Test pricelist 2",} + ) + cls.customer_1 = cls.env["res.partner"].create( + {"name": "Test customer 1", "property_product_pricelist": cls.pricelist_1,} + ) + cls.customer_2 = cls.env["res.partner"].create( + {"name": "Test customer 2", "property_product_pricelist": cls.pricelist_2,} + ) cls.partner_obj = cls.env["res.partner"] def test_partner_pricelist_search_equal(self): """ Test search '=' """ - partners = self.partner_obj.search([ - ("property_product_pricelist", "=", - self.pricelist_1.id) - ]) + partners = self.partner_obj.search( + [("property_product_pricelist", "=", self.pricelist_1.id)] + ) self.assertEqual(partners, self.customer_1) def test_partner_pricelist_search_in(self): """ Test search 'in' """ - partners = self.partner_obj.search([ - ("property_product_pricelist", "in", - (self.pricelist_1 | self.pricelist_2).ids) - ]) + partners = self.partner_obj.search( + [ + ( + "property_product_pricelist", + "in", + (self.pricelist_1 | self.pricelist_2).ids, + ) + ] + ) self.assertIn(self.customer_1, partners) self.assertIn(self.customer_2, partners) def test_partner_pricelist_search_not_equal(self): """ Test search 'not equal' """ - partners = self.partner_obj.search([ - ("property_product_pricelist", "!=", - self.pricelist_1.id) - ]) + partners = self.partner_obj.search( + [("property_product_pricelist", "!=", self.pricelist_1.id)] + ) self.assertNotIn(self.customer_1, partners) self.assertIn(self.customer_2, partners) def test_partner_pricelist_search_not_in(self): """ Test search 'not in' """ - partners = self.partner_obj.search([ - ("property_product_pricelist", "not in", - (self.pricelist_1 | self.pricelist_2).ids) - ]) + partners = self.partner_obj.search( + [ + ( + "property_product_pricelist", + "not in", + (self.pricelist_1 | self.pricelist_2).ids, + ) + ] + ) self.assertNotIn(self.customer_1, partners) self.assertNotIn(self.customer_2, partners) def test_partner_pricelist_search_not_implemented(self): """ Test search not implemented """ with self.assertRaises(UserError): - self.partner_obj.search([ - ("property_product_pricelist", "ilike", - "pricelist xx") - ]) + self.partner_obj.search( + [("property_product_pricelist", "ilike", "pricelist xx")] + ) def test_show_pricelist_partners(self): res = self.pricelist_1.show_pricelist_partners() - self.assertEqual(self.partner_obj.search(res["domain"]), - self.customer_1) + self.assertEqual(self.partner_obj.search(res["domain"]), self.customer_1) res = (self.pricelist_1 | self.pricelist_2).show_pricelist_partners() - self.assertEqual(self.partner_obj.search(res["domain"]), - (self.customer_1 | self.customer_2)) + self.assertEqual( + self.partner_obj.search(res["domain"]), (self.customer_1 | self.customer_2) + ) diff --git a/partner_pricelist_search/views/product_pricelist_views.xml b/partner_pricelist_search/views/product_pricelist_views.xml index 8c5e95038cd..0bf277111b9 100644 --- a/partner_pricelist_search/views/product_pricelist_views.xml +++ b/partner_pricelist_search/views/product_pricelist_views.xml @@ -1,13 +1,17 @@ - + product.pricelist - + From 87289372322fe31ff40201131f4640a25e6aa5eb Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Wed, 24 Feb 2021 13:52:54 +0100 Subject: [PATCH 03/10] [MIG] partner_pricelist_search: Migration to v13.0 TT28442 --- partner_pricelist_search/README.rst | 10 +++++----- partner_pricelist_search/__manifest__.py | 8 ++++---- .../i18n/partner_pricelist_search.pot | 13 ++++++------ .../static/description/index.html | 6 +++--- .../tests/test_partner_pricelist_search.py | 8 ++++---- .../views/product_pricelist_views.xml | 20 ++++++++++--------- 6 files changed, 34 insertions(+), 31 deletions(-) diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst index 7a002b59bfc..ed332bf000e 100644 --- a/partner_pricelist_search/README.rst +++ b/partner_pricelist_search/README.rst @@ -14,13 +14,13 @@ Partner pricelist search :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github - :target: https://github.com/OCA/partner-contact/tree/12.0/partner_pricelist_search + :target: https://github.com/OCA/partner-contact/tree/13.0/partner_pricelist_search :alt: OCA/partner-contact .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/partner-contact-12-0/partner-contact-12-0-partner_pricelist_search + :target: https://translation.odoo-community.org/projects/partner-contact-13-0/partner-contact-13-0-partner_pricelist_search :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/134/12.0 + :target: https://runbot.odoo-community.org/runbot/134/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -49,7 +49,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -81,6 +81,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/partner-contact `_ project on GitHub. +This module is part of the `OCA/partner-contact `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index 3447fdae5a0..9dfd9553ee9 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,12 +3,12 @@ { "name": "Partner pricelist search", - "version": "12.0.1.0.0", - "author": "Tecnativa," "Odoo Community Association (OCA)", + "version": "13.0.1.0.0", + "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", - "depends": ["product",], - "data": ["views/product_pricelist_views.xml",], + "depends": ["product"], + "data": ["views/product_pricelist_views.xml"], "installable": True, "license": "AGPL-3", } diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot index 93250fc2546..2431efb6941 100644 --- a/partner_pricelist_search/i18n/partner_pricelist_search.pot +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * partner_pricelist_search +# * partner_pricelist_search # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,7 +31,7 @@ msgid "Pricelist" msgstr "" #. module: partner_pricelist_search -#: code:addons/partner_pricelist_search/models/res_partner.py:29 +#: code:addons/partner_pricelist_search/models/res_partner.py:0 #, python-format msgid "Pricelist field do not support search with the operator '%s'." msgstr "" @@ -39,6 +39,7 @@ msgstr "" #. module: partner_pricelist_search #: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist #: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist -msgid "This pricelist will be used, instead of the default one, for sales to the current partner" +msgid "" +"This pricelist will be used, instead of the default one, for sales to the " +"current partner" msgstr "" - diff --git a/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html index 13590990be1..1744bb361e8 100644 --- a/partner_pricelist_search/static/description/index.html +++ b/partner_pricelist_search/static/description/index.html @@ -367,7 +367,7 @@

Partner pricelist search

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/partner-contact Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/partner-contact Translate me on Weblate Try me on Runbot

This module adds search by pricelist field option in partners.

Also add a new smart button called “Customers” in pricelist form view to show partners with that pricelist.

@@ -395,7 +395,7 @@

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.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -422,7 +422,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/partner-contact project on GitHub.

+

This module is part of the OCA/partner-contact project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py index 435f96ff92b..d33287d817c 100644 --- a/partner_pricelist_search/tests/test_partner_pricelist_search.py +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -10,16 +10,16 @@ class TestPartnerPricelistSearch(common.SavepointCase): def setUpClass(cls): super().setUpClass() cls.pricelist_1 = cls.env["product.pricelist"].create( - {"name": "Test pricelist 1",} + {"name": "Test pricelist 1"} ) cls.pricelist_2 = cls.env["product.pricelist"].create( - {"name": "Test pricelist 2",} + {"name": "Test pricelist 2"} ) cls.customer_1 = cls.env["res.partner"].create( - {"name": "Test customer 1", "property_product_pricelist": cls.pricelist_1,} + {"name": "Test customer 1", "property_product_pricelist": cls.pricelist_1} ) cls.customer_2 = cls.env["res.partner"].create( - {"name": "Test customer 2", "property_product_pricelist": cls.pricelist_2,} + {"name": "Test customer 2", "property_product_pricelist": cls.pricelist_2} ) cls.partner_obj = cls.env["res.partner"] diff --git a/partner_pricelist_search/views/product_pricelist_views.xml b/partner_pricelist_search/views/product_pricelist_views.xml index 0bf277111b9..09e7c9dedee 100644 --- a/partner_pricelist_search/views/product_pricelist_views.xml +++ b/partner_pricelist_search/views/product_pricelist_views.xml @@ -4,15 +4,17 @@ product.pricelist - + +
+
+
From 69e76b6a765bafc627fd6b7c1103894fc895723b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 23 Sep 2021 17:33:11 +0200 Subject: [PATCH 04/10] [MIG] partner_pricelist_search: Migration to 14.0 [UPD] Update partner_pricelist_search.pot [UPD] README.rst Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: partner-contact-14.0/partner-contact-14.0-partner_pricelist_search Translate-URL: https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_pricelist_search/ --- partner_pricelist_search/README.rst | 11 +++++----- partner_pricelist_search/__manifest__.py | 2 +- partner_pricelist_search/i18n/es.po | 20 ++++++++++++++++++- .../i18n/partner_pricelist_search.pot | 20 ++++++++++++++++++- .../readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 7 ++++--- 6 files changed, 50 insertions(+), 11 deletions(-) diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst index ed332bf000e..c4985710ca4 100644 --- a/partner_pricelist_search/README.rst +++ b/partner_pricelist_search/README.rst @@ -14,13 +14,13 @@ Partner pricelist search :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github - :target: https://github.com/OCA/partner-contact/tree/13.0/partner_pricelist_search + :target: https://github.com/OCA/partner-contact/tree/14.0/partner_pricelist_search :alt: OCA/partner-contact .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/partner-contact-13-0/partner-contact-13-0-partner_pricelist_search + :target: https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_pricelist_search :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/134/13.0 + :target: https://runbot.odoo-community.org/runbot/134/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -49,7 +49,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -67,6 +67,7 @@ Contributors * `Tecnativa `_: * Carlos Dauden + * Víctor Martínez Maintainers ~~~~~~~~~~~ @@ -81,6 +82,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/partner-contact `_ project on GitHub. +This module is part of the `OCA/partner-contact `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index 9dfd9553ee9..b9f16ecb271 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Partner pricelist search", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", diff --git a/partner_pricelist_search/i18n/es.po b/partner_pricelist_search/i18n/es.po index 2daa17e34a8..ef44fbd70ee 100644 --- a/partner_pricelist_search/i18n/es.po +++ b/partner_pricelist_search/i18n/es.po @@ -27,6 +27,24 @@ msgstr "Contacto" msgid "Customers" msgstr "Clientes" +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__display_name +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__display_name +msgid "Display Name" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__id +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__id +msgid "ID" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist____last_update +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner____last_update +msgid "Last Modified on" +msgstr "" + #. module: partner_pricelist_search #: model:ir.model,name:partner_pricelist_search.model_product_pricelist #: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist @@ -35,7 +53,7 @@ msgid "Pricelist" msgstr "Tarifa" #. module: partner_pricelist_search -#: code:addons/partner_pricelist_search/models/res_partner.py:29 +#: code:addons/partner_pricelist_search/models/res_partner.py:0 #, python-format msgid "Pricelist field do not support search with the operator '%s'." msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot index 2431efb6941..3549ea12954 100644 --- a/partner_pricelist_search/i18n/partner_pricelist_search.pot +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -23,6 +23,24 @@ msgstr "" msgid "Customers" msgstr "" +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__display_name +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__display_name +msgid "Display Name" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist__id +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__id +msgid "ID" +msgstr "" + +#. module: partner_pricelist_search +#: model:ir.model.fields,field_description:partner_pricelist_search.field_product_pricelist____last_update +#: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner____last_update +msgid "Last Modified on" +msgstr "" + #. module: partner_pricelist_search #: model:ir.model,name:partner_pricelist_search.model_product_pricelist #: model:ir.model.fields,field_description:partner_pricelist_search.field_res_partner__property_product_pricelist diff --git a/partner_pricelist_search/readme/CONTRIBUTORS.rst b/partner_pricelist_search/readme/CONTRIBUTORS.rst index af740da8f3f..0bd598fcf7d 100644 --- a/partner_pricelist_search/readme/CONTRIBUTORS.rst +++ b/partner_pricelist_search/readme/CONTRIBUTORS.rst @@ -1,3 +1,4 @@ * `Tecnativa `_: * Carlos Dauden + * Víctor Martínez diff --git a/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html index 1744bb361e8..c6198f876ad 100644 --- a/partner_pricelist_search/static/description/index.html +++ b/partner_pricelist_search/static/description/index.html @@ -367,7 +367,7 @@

Partner pricelist search

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/partner-contact Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/partner-contact Translate me on Weblate Try me on Runbot

This module adds search by pricelist field option in partners.

Also add a new smart button called “Customers” in pricelist form view to show partners with that pricelist.

@@ -395,7 +395,7 @@

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.

+feedback.

Do not contact contributors directly about support or help with technical issues.

@@ -411,6 +411,7 @@

Contributors

  • Tecnativa:
    • Carlos Dauden
    • +
    • Víctor Martínez
@@ -422,7 +423,7 @@

Maintainers

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/partner-contact project on GitHub.

+

This module is part of the OCA/partner-contact project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

From 4d7b64681f350378318292c259c166432cc4abbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Alix?= Date: Mon, 31 Jan 2022 10:43:42 +0100 Subject: [PATCH 05/10] [FIX] Fix access right issues when using actions partner_pricelist_search 14.0.1.0.1 [IMP] update dotfiles [ci skip] --- partner_pricelist_search/__manifest__.py | 2 +- partner_pricelist_search/models/product_pricelist.py | 8 ++++---- .../tests/test_partner_pricelist_search.py | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index b9f16ecb271..c5e96a854b3 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Partner pricelist search", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", diff --git a/partner_pricelist_search/models/product_pricelist.py b/partner_pricelist_search/models/product_pricelist.py index ed2ea12c6e1..dbb2f267dfc 100644 --- a/partner_pricelist_search/models/product_pricelist.py +++ b/partner_pricelist_search/models/product_pricelist.py @@ -13,9 +13,9 @@ def show_pricelist_partners(self): else: domain = [("property_product_pricelist", "in", self.ids)] partners = self.env["res.partner"].search(domain) - action = self.env.ref("base.action_partner_form") - res = action.read()[0] - res["domain"] = [ + xmlid = "base.action_partner_form" + action = self.env["ir.actions.act_window"]._for_xml_id(xmlid) + action["domain"] = [ ("id", "in", partners.ids), ] - return res + return action diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py index d33287d817c..ac7b95a557e 100644 --- a/partner_pricelist_search/tests/test_partner_pricelist_search.py +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -24,14 +24,14 @@ def setUpClass(cls): cls.partner_obj = cls.env["res.partner"] def test_partner_pricelist_search_equal(self): - """ Test search '=' """ + """Test search '='""" partners = self.partner_obj.search( [("property_product_pricelist", "=", self.pricelist_1.id)] ) self.assertEqual(partners, self.customer_1) def test_partner_pricelist_search_in(self): - """ Test search 'in' """ + """Test search 'in'""" partners = self.partner_obj.search( [ ( @@ -45,7 +45,7 @@ def test_partner_pricelist_search_in(self): self.assertIn(self.customer_2, partners) def test_partner_pricelist_search_not_equal(self): - """ Test search 'not equal' """ + """Test search 'not equal'""" partners = self.partner_obj.search( [("property_product_pricelist", "!=", self.pricelist_1.id)] ) @@ -53,7 +53,7 @@ def test_partner_pricelist_search_not_equal(self): self.assertIn(self.customer_2, partners) def test_partner_pricelist_search_not_in(self): - """ Test search 'not in' """ + """Test search 'not in'""" partners = self.partner_obj.search( [ ( @@ -67,7 +67,7 @@ def test_partner_pricelist_search_not_in(self): self.assertNotIn(self.customer_2, partners) def test_partner_pricelist_search_not_implemented(self): - """ Test search not implemented """ + """Test search not implemented""" with self.assertRaises(UserError): self.partner_obj.search( [("property_product_pricelist", "ilike", "pricelist xx")] From a16388143b75345761b8add661b93e063731bb1c Mon Sep 17 00:00:00 2001 From: david Date: Mon, 3 Oct 2022 08:53:20 +0200 Subject: [PATCH 06/10] [FIX] partner_pricelist_search: speedup search TT39742 --- .../models/res_partner.py | 53 +++++++++---------- .../tests/test_partner_pricelist_search.py | 14 ++--- 2 files changed, 31 insertions(+), 36 deletions(-) diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py index aa506603009..713421fbe93 100644 --- a/partner_pricelist_search/models/res_partner.py +++ b/partner_pricelist_search/models/res_partner.py @@ -1,8 +1,7 @@ # Copyright 2021 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import _, api, fields, models -from odoo.exceptions import UserError +from odoo import api, fields, models class Pricelist(models.Model): @@ -13,31 +12,27 @@ class Pricelist(models.Model): ) @api.model - def _search_property_product_pricelist(self, operator, value): - if operator == "=": - - def filter_func(partner): - return partner.property_product_pricelist.id == value - - elif operator == "!=": - - def filter_func(partner): - return partner.property_product_pricelist.id != value - - elif operator == "in": + def search(self, args, offset=0, limit=None, order=None, count=False): + # Substitute pricelist tuple + partner_domain = [ + (1, "=", 1) + if (isinstance(x, tuple) and x[0] == "property_product_pricelist") + else x + for x in args + ] + return super( + Pricelist, self.with_context(search_partner_domain=partner_domain) + ).search( + args, + offset=offset, + limit=limit, + order=order, + count=count, + ) - def filter_func(partner): - return partner.property_product_pricelist.id in value - - elif operator == "not in": - - def filter_func(partner): - return partner.property_product_pricelist.id not in value - - else: - raise UserError( - _("Pricelist field do not support search with the operator '%s'.") - % operator - ) - partners = self.with_context(prefetch_fields=False).search([]) - return [("id", "in", partners.filtered(filter_func).ids)] + @api.model + def _search_property_product_pricelist(self, operator, value): + domain = self.env.context.get("search_partner_domain", []) + partners = self.with_context(prefetch_fields=False).search(domain) + key = "property_product_pricelist" + return [("id", "in", partners.filtered_domain([(key, operator, value)]).ids)] diff --git a/partner_pricelist_search/tests/test_partner_pricelist_search.py b/partner_pricelist_search/tests/test_partner_pricelist_search.py index ac7b95a557e..051ae10c44a 100644 --- a/partner_pricelist_search/tests/test_partner_pricelist_search.py +++ b/partner_pricelist_search/tests/test_partner_pricelist_search.py @@ -1,7 +1,6 @@ # Copyright 2021 Tecnativa - Carlos Dauden # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) -from odoo.exceptions import UserError from odoo.tests import common @@ -66,12 +65,13 @@ def test_partner_pricelist_search_not_in(self): self.assertNotIn(self.customer_1, partners) self.assertNotIn(self.customer_2, partners) - def test_partner_pricelist_search_not_implemented(self): - """Test search not implemented""" - with self.assertRaises(UserError): - self.partner_obj.search( - [("property_product_pricelist", "ilike", "pricelist xx")] - ) + def test_partner_pricelist_search_ilike(self): + """Test search 'ilike'""" + partners = self.partner_obj.search( + [("property_product_pricelist", "ilike", "Test pricelist 1")] + ) + self.assertIn(self.customer_1, partners) + self.assertNotIn(self.customer_2, partners) def test_show_pricelist_partners(self): res = self.pricelist_1.show_pricelist_partners() From b5c15a85379088dd3332f314b54c9754e049bfec Mon Sep 17 00:00:00 2001 From: sergio-teruel Date: Fri, 14 Oct 2022 10:27:00 +0200 Subject: [PATCH 07/10] [FIX] partner_pricelist_search: Remove list type also from search arguments [UPD] Update partner_pricelist_search.pot partner_pricelist_search 14.0.1.0.2 --- partner_pricelist_search/__manifest__.py | 2 +- .../i18n/partner_pricelist_search.pot | 6 ------ partner_pricelist_search/models/res_partner.py | 8 ++++---- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index c5e96a854b3..b5e191a3b1d 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Partner pricelist search", - "version": "14.0.1.0.1", + "version": "14.0.1.0.2", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", diff --git a/partner_pricelist_search/i18n/partner_pricelist_search.pot b/partner_pricelist_search/i18n/partner_pricelist_search.pot index 3549ea12954..10fa093ef4a 100644 --- a/partner_pricelist_search/i18n/partner_pricelist_search.pot +++ b/partner_pricelist_search/i18n/partner_pricelist_search.pot @@ -48,12 +48,6 @@ msgstr "" msgid "Pricelist" msgstr "" -#. module: partner_pricelist_search -#: code:addons/partner_pricelist_search/models/res_partner.py:0 -#, python-format -msgid "Pricelist field do not support search with the operator '%s'." -msgstr "" - #. module: partner_pricelist_search #: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist #: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py index 713421fbe93..2c383010290 100644 --- a/partner_pricelist_search/models/res_partner.py +++ b/partner_pricelist_search/models/res_partner.py @@ -1,10 +1,10 @@ # Copyright 2021 Tecnativa - Carlos Dauden -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import api, fields, models -class Pricelist(models.Model): +class ResPartner(models.Model): _inherit = "res.partner" property_product_pricelist = fields.Many2one( @@ -16,12 +16,12 @@ def search(self, args, offset=0, limit=None, order=None, count=False): # Substitute pricelist tuple partner_domain = [ (1, "=", 1) - if (isinstance(x, tuple) and x[0] == "property_product_pricelist") + if (isinstance(x, (list, tuple)) and x[0] == "property_product_pricelist") else x for x in args ] return super( - Pricelist, self.with_context(search_partner_domain=partner_domain) + ResPartner, self.with_context(search_partner_domain=partner_domain) ).search( args, offset=offset, From 21f973414c937995a325a9a406c72f30c2e33985 Mon Sep 17 00:00:00 2001 From: Weblate Date: Mon, 17 Oct 2022 10:11:47 +0000 Subject: [PATCH 08/10] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: partner-contact-14.0/partner-contact-14.0-partner_pricelist_search Translate-URL: https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_pricelist_search/ --- partner_pricelist_search/i18n/es.po | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/partner_pricelist_search/i18n/es.po b/partner_pricelist_search/i18n/es.po index ef44fbd70ee..6f736449aa5 100644 --- a/partner_pricelist_search/i18n/es.po +++ b/partner_pricelist_search/i18n/es.po @@ -52,12 +52,6 @@ msgstr "" msgid "Pricelist" msgstr "Tarifa" -#. module: partner_pricelist_search -#: code:addons/partner_pricelist_search/models/res_partner.py:0 -#, python-format -msgid "Pricelist field do not support search with the operator '%s'." -msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." - #. module: partner_pricelist_search #: model:ir.model.fields,help:partner_pricelist_search.field_res_partner__property_product_pricelist #: model:ir.model.fields,help:partner_pricelist_search.field_res_users__property_product_pricelist @@ -67,3 +61,7 @@ msgid "" msgstr "" "Esta tarifa se utilizará, en lugar de la por defecto, para las ventas de la " "empresa actual" + +#, python-format +#~ msgid "Pricelist field do not support search with the operator '%s'." +#~ msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." From c810b76fbe903702f2c2091ec2f53b6a52e9bd6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Mon, 17 Oct 2022 12:18:21 +0200 Subject: [PATCH 09/10] [IMP] partner_pricelist_search: black, isort, prettier --- .../odoo/addons/partner_pricelist_search | 1 + setup/partner_pricelist_search/setup.py | 6 ++++++ 2 files changed, 7 insertions(+) create mode 120000 setup/partner_pricelist_search/odoo/addons/partner_pricelist_search create mode 100644 setup/partner_pricelist_search/setup.py diff --git a/setup/partner_pricelist_search/odoo/addons/partner_pricelist_search b/setup/partner_pricelist_search/odoo/addons/partner_pricelist_search new file mode 120000 index 00000000000..79e3220d1b2 --- /dev/null +++ b/setup/partner_pricelist_search/odoo/addons/partner_pricelist_search @@ -0,0 +1 @@ +../../../../partner_pricelist_search \ No newline at end of file diff --git a/setup/partner_pricelist_search/setup.py b/setup/partner_pricelist_search/setup.py new file mode 100644 index 00000000000..28c57bb6403 --- /dev/null +++ b/setup/partner_pricelist_search/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From 785fc1afcc9d0158380e5d163b1634fd1c670dd2 Mon Sep 17 00:00:00 2001 From: Vince Lieckens Date: Fri, 15 Apr 2022 09:33:58 +0200 Subject: [PATCH 10/10] [MIG] partner_pricelist_search: Migration to 15.0 TT37297 --- partner_pricelist_search/README.rst | 10 +++++----- partner_pricelist_search/__manifest__.py | 2 +- partner_pricelist_search/i18n/es.po | 4 ---- partner_pricelist_search/models/product_pricelist.py | 9 +-------- partner_pricelist_search/models/res_partner.py | 2 +- partner_pricelist_search/static/description/index.html | 8 ++++---- .../tests/test_partner_pricelist_search.py | 3 ++- 7 files changed, 14 insertions(+), 24 deletions(-) diff --git a/partner_pricelist_search/README.rst b/partner_pricelist_search/README.rst index c4985710ca4..f7cf3c2a36c 100644 --- a/partner_pricelist_search/README.rst +++ b/partner_pricelist_search/README.rst @@ -14,13 +14,13 @@ Partner pricelist search :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpartner--contact-lightgray.png?logo=github - :target: https://github.com/OCA/partner-contact/tree/14.0/partner_pricelist_search + :target: https://github.com/OCA/partner-contact/tree/15.0/partner_pricelist_search :alt: OCA/partner-contact .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/partner-contact-14-0/partner-contact-14-0-partner_pricelist_search + :target: https://translation.odoo-community.org/projects/partner-contact-15-0/partner-contact-15-0-partner_pricelist_search :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/134/14.0 + :target: https://runbot.odoo-community.org/runbot/134/15.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -49,7 +49,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -82,6 +82,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/partner-contact `_ project on GitHub. +This module is part of the `OCA/partner-contact `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/partner_pricelist_search/__manifest__.py b/partner_pricelist_search/__manifest__.py index b5e191a3b1d..da2e23e6c28 100644 --- a/partner_pricelist_search/__manifest__.py +++ b/partner_pricelist_search/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Partner pricelist search", - "version": "14.0.1.0.2", + "version": "15.0.1.0.0", "author": "Tecnativa,Odoo Community Association (OCA)", "website": "https://github.com/OCA/partner-contact", "category": "Partner Management", diff --git a/partner_pricelist_search/i18n/es.po b/partner_pricelist_search/i18n/es.po index 6f736449aa5..83c0ce259ea 100644 --- a/partner_pricelist_search/i18n/es.po +++ b/partner_pricelist_search/i18n/es.po @@ -61,7 +61,3 @@ msgid "" msgstr "" "Esta tarifa se utilizará, en lugar de la por defecto, para las ventas de la " "empresa actual" - -#, python-format -#~ msgid "Pricelist field do not support search with the operator '%s'." -#~ msgstr "El campo Tarifa no soporta búsquedas con el operador '%s'." diff --git a/partner_pricelist_search/models/product_pricelist.py b/partner_pricelist_search/models/product_pricelist.py index dbb2f267dfc..d0fbde9ff4f 100644 --- a/partner_pricelist_search/models/product_pricelist.py +++ b/partner_pricelist_search/models/product_pricelist.py @@ -8,14 +8,7 @@ class Pricelist(models.Model): _inherit = "product.pricelist" def show_pricelist_partners(self): - if len(self) == 1: - domain = [("property_product_pricelist", "=", self.id)] - else: - domain = [("property_product_pricelist", "in", self.ids)] - partners = self.env["res.partner"].search(domain) xmlid = "base.action_partner_form" action = self.env["ir.actions.act_window"]._for_xml_id(xmlid) - action["domain"] = [ - ("id", "in", partners.ids), - ] + action["domain"] = [("property_product_pricelist", "in", self.ids)] return action diff --git a/partner_pricelist_search/models/res_partner.py b/partner_pricelist_search/models/res_partner.py index 2c383010290..052f66a65cb 100644 --- a/partner_pricelist_search/models/res_partner.py +++ b/partner_pricelist_search/models/res_partner.py @@ -1,5 +1,5 @@ # Copyright 2021 Tecnativa - Carlos Dauden -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, fields, models diff --git a/partner_pricelist_search/static/description/index.html b/partner_pricelist_search/static/description/index.html index c6198f876ad..8ae9acc1b55 100644 --- a/partner_pricelist_search/static/description/index.html +++ b/partner_pricelist_search/static/description/index.html @@ -3,7 +3,7 @@ - + Partner pricelist search