From 4b23ae9d980ac7a033a617ea91e9e100e00d10ff Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Tue, 15 Sep 2020 16:37:53 +0200 Subject: [PATCH 01/23] Add product_variant_multi_link --- product_variant_multi_link/__init__.py | 1 + product_variant_multi_link/__manifest__.py | 15 ++++ product_variant_multi_link/models/__init__.py | 2 + .../models/product_product.py | 24 ++++++ .../models/product_template_link.py | 66 ++++++++++++++ .../readme/CONTRIBUTORS.rst | 1 + product_variant_multi_link/readme/CREDITS.rst | 4 + .../readme/DESCRIPTION.rst | 1 + product_variant_multi_link/readme/USAGE.rst | 2 + product_variant_multi_link/tests/__init__.py | 1 + .../tests/test_product_template_link.py | 86 +++++++++++++++++++ .../views/product_template_link_view.xml | 82 ++++++++++++++++++ 12 files changed, 285 insertions(+) create mode 100644 product_variant_multi_link/__init__.py create mode 100644 product_variant_multi_link/__manifest__.py create mode 100644 product_variant_multi_link/models/__init__.py create mode 100644 product_variant_multi_link/models/product_product.py create mode 100644 product_variant_multi_link/models/product_template_link.py create mode 100644 product_variant_multi_link/readme/CONTRIBUTORS.rst create mode 100644 product_variant_multi_link/readme/CREDITS.rst create mode 100644 product_variant_multi_link/readme/DESCRIPTION.rst create mode 100644 product_variant_multi_link/readme/USAGE.rst create mode 100644 product_variant_multi_link/tests/__init__.py create mode 100644 product_variant_multi_link/tests/test_product_template_link.py create mode 100644 product_variant_multi_link/views/product_template_link_view.xml diff --git a/product_variant_multi_link/__init__.py b/product_variant_multi_link/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/product_variant_multi_link/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_variant_multi_link/__manifest__.py b/product_variant_multi_link/__manifest__.py new file mode 100644 index 0000000000..0bc378ef45 --- /dev/null +++ b/product_variant_multi_link/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2020 Camptocamp SA (http://www.camptocamp.com) +# Simone Orsi +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Product Multi Links (Variant)", + "version": "13.0.1.0.0", + "category": "Generic Modules", + "author": "Camptocamp SA, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/e-commerce", + "license": "AGPL-3", + "depends": ["product_template_multi_link"], + "data": ["views/product_template_link_view.xml"], + "installable": True, +} diff --git a/product_variant_multi_link/models/__init__.py b/product_variant_multi_link/models/__init__.py new file mode 100644 index 0000000000..93b4097f33 --- /dev/null +++ b/product_variant_multi_link/models/__init__.py @@ -0,0 +1,2 @@ +from . import product_product +from . import product_template_link diff --git a/product_variant_multi_link/models/product_product.py b/product_variant_multi_link/models/product_product.py new file mode 100644 index 0000000000..4f66af11b3 --- /dev/null +++ b/product_variant_multi_link/models/product_product.py @@ -0,0 +1,24 @@ +# Copyright 2020 Camptocamp SA (http://www.camptocamp.com) +# Simone Orsi +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProductProduct(models.Model): + _inherit = "product.product" + + product_variant_link_ids = fields.One2many( + string="Product Variant Links", + comodel_name="product.template.link", + compute="_compute_product_link_ids", + ) + + def _compute_product_link_ids(self): + for record in self: + record.product_variant_link_ids = record._get_variant_links() + + def _get_variant_links(self): + return self.product_template_link_ids.filtered_domain( + ["|", ("left_product_id", "=", self.id), ("right_product_id", "=", self.id)] + ) diff --git a/product_variant_multi_link/models/product_template_link.py b/product_variant_multi_link/models/product_template_link.py new file mode 100644 index 0000000000..b2a0a68d5f --- /dev/null +++ b/product_variant_multi_link/models/product_template_link.py @@ -0,0 +1,66 @@ +# Copyright 2020 Camptocamp SA (http://www.camptocamp.com) +# Simone Orsi +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import _, api, exceptions, fields, models + + +class ProductTemplateLink(models.Model): + _inherit = "product.template.link" + + left_product_id = fields.Many2one( + string="Source Variant", comodel_name="product.product", ondelete="cascade", + ) + right_product_id = fields.Many2one( + string="Linked Variant", comodel_name="product.product", ondelete="cascade", + ) + + def _product_variant_check_enabled(self): + # You might want to turn off the check on variants, here's your chance + return not self.env.context.get("_product_variant_link_bypass_check") + + @api.constrains( + "left_product_tmpl_id", + "right_product_tmpl_id", + "type_id", + "left_product_id", + "right_product_id", + ) + def _check_products(self): + if self._product_variant_check_enabled(): + for rec in self: + # make new fields required here + # to avoid issues w/ existing table and existing records + if not rec.left_product_id or not rec.right_product_id: + raise exceptions.ValidationError( + _("Source and target variants are required!") + ) + super()._check_products() + + def _check_product_not_different(self): + res = super()._check_product_not_different() + if self._product_variant_check_enabled(): + return res and self.left_product_id == self.right_product_id + return res + + def _check_products_query_params(self): + params = super()._check_products_query_params() + if self._product_variant_check_enabled(): + params["main_select_columns"] += ", right_product_id, left_product_id" + params[ + "l2_join_where_clause" + ] += """ + AND right_product_id = l1.left_product_id + AND left_product_id = l1.right_product_id + """ + params[ + "l3_join_where_clause" + ] += """ + AND left_product_id = l1.left_product_id + AND right_product_id = l1.right_product_id + """ + return params + + def _invalidate_links(self): + super()._invalidate_links() + self.env["product.product"].invalidate_cache(["product_variant_link_ids"]) diff --git a/product_variant_multi_link/readme/CONTRIBUTORS.rst b/product_variant_multi_link/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..f583948be8 --- /dev/null +++ b/product_variant_multi_link/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Simone Orsi diff --git a/product_variant_multi_link/readme/CREDITS.rst b/product_variant_multi_link/readme/CREDITS.rst new file mode 100644 index 0000000000..3038e84ea8 --- /dev/null +++ b/product_variant_multi_link/readme/CREDITS.rst @@ -0,0 +1,4 @@ +The development of this module has been financially supported by: + +* Camptocamp +* Cosanum diff --git a/product_variant_multi_link/readme/DESCRIPTION.rst b/product_variant_multi_link/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..45d90f1e86 --- /dev/null +++ b/product_variant_multi_link/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Extends `product_template_multi_link` to link product variants. diff --git a/product_variant_multi_link/readme/USAGE.rst b/product_variant_multi_link/readme/USAGE.rst new file mode 100644 index 0000000000..9df3f55a41 --- /dev/null +++ b/product_variant_multi_link/readme/USAGE.rst @@ -0,0 +1,2 @@ +Create a link as you would do with `product_template_multi_link` +and after setting a template, set a variant for that template. diff --git a/product_variant_multi_link/tests/__init__.py b/product_variant_multi_link/tests/__init__.py new file mode 100644 index 0000000000..93d4230494 --- /dev/null +++ b/product_variant_multi_link/tests/__init__.py @@ -0,0 +1 @@ +from . import test_product_template_link diff --git a/product_variant_multi_link/tests/test_product_template_link.py b/product_variant_multi_link/tests/test_product_template_link.py new file mode 100644 index 0000000000..e218317da9 --- /dev/null +++ b/product_variant_multi_link/tests/test_product_template_link.py @@ -0,0 +1,86 @@ +# Copyright 2020 Camptocamp SA (http://www.camptocamp.com) +# Simone Orsi +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.exceptions import ValidationError +from odoo.tests.common import SavepointCase + + +class TestProductVariantLink(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls.ProductTemplateLink = cls.env["product.template.link"] + cls.product_product_1 = cls.env.ref("product.product_product_1") + cls.product_product_2 = cls.env.ref("product.product_product_2") + cls.link_type = cls.env.ref( + "product_template_multi_link.product_template_link_type_cross_selling" + ) + + def _create_link_default(self): + return self.ProductTemplateLink.create( + { + "left_product_tmpl_id": self.product_product_1.product_tmpl_id.id, + "left_product_id": self.product_product_1.id, + "right_product_tmpl_id": self.product_product_2.product_tmpl_id.id, + "right_product_id": self.product_product_2.id, + "type_id": self.link_type.id, + } + ) + + def test_variants_required(self): + with self.assertRaises(ValidationError) as err: + self.ProductTemplateLink.create( + { + "left_product_tmpl_id": self.product_product_1.product_tmpl_id.id, + "right_product_tmpl_id": self.product_product_2.product_tmpl_id.id, + "type_id": self.link_type.id, + } + ) + self.assertEqual(err.exception.name, "Source and target variants are required!") + + def test_duplicated_link_different_product(self): + link1 = self._create_link_default() + with self.assertRaises(ValidationError), self.env.cr.savepoint(): + link1.copy() + + # create the same link but inverse + with self.assertRaises(ValidationError), self.env.cr.savepoint(): + self.ProductTemplateLink.create( + { + "left_product_tmpl_id": self.product_product_2.product_tmpl_id.id, + "left_product_id": self.product_product_2.id, + "right_product_tmpl_id": self.product_product_1.product_tmpl_id.id, + "right_product_id": self.product_product_1.id, + "type_id": self.link_type.id, + } + ) + + def test_duplicated_link_same_product(self): + with self.assertRaises(ValidationError), self.env.cr.savepoint(): + self.ProductTemplateLink.create( + { + "left_product_tmpl_id": self.product_product_1.product_tmpl_id.id, + "left_product_id": self.product_product_1.id, + "right_product_tmpl_id": self.product_product_1.product_tmpl_id.id, + "right_product_id": self.product_product_1.id, + "type_id": self.link_type.id, + } + ) + + def test_product_variant_link_ids(self): + link1 = self._create_link_default() + self.assertIn(link1, self.product_product_1.product_template_link_ids) + self.assertIn(link1, self.product_product_2.product_template_link_ids) + self.assertIn(link1, self.product_product_1.product_variant_link_ids) + self.assertIn(link1, self.product_product_2.product_variant_link_ids) + + def test_cache_invalidation(self): + link1 = self._create_link_default() + self.assertIn(link1, self.product_product_1.product_variant_link_ids) + self.assertIn(link1, self.product_product_2.product_variant_link_ids) + + link1.unlink() + self.assertNotIn(link1, self.product_product_1.product_variant_link_ids) + self.assertNotIn(link1, self.product_product_2.product_variant_link_ids) diff --git a/product_variant_multi_link/views/product_template_link_view.xml b/product_variant_multi_link/views/product_template_link_view.xml new file mode 100644 index 0000000000..9c3d23b202 --- /dev/null +++ b/product_variant_multi_link/views/product_template_link_view.xml @@ -0,0 +1,82 @@ + + + + product.template.link + + + + + + + + + product.template.link + + + + + + + + + + + + product.template.link + + + + + + + + + + + + product.template.link + + + + + + + + + + + From c96cf3a857f93a13c9eb878138c0f535cae1947b Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 17 Sep 2020 22:09:40 +0000 Subject: [PATCH 02/23] [UPD] Update product_variant_multi_link.pot --- .../i18n/product_variant_multi_link.pot | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 product_variant_multi_link/i18n/product_variant_multi_link.pot diff --git a/product_variant_multi_link/i18n/product_variant_multi_link.pot b/product_variant_multi_link/i18n/product_variant_multi_link.pot new file mode 100644 index 0000000000..0d96ae8b0e --- /dev/null +++ b/product_variant_multi_link/i18n/product_variant_multi_link.pot @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_variant_multi_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.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: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__right_product_id +msgid "Linked Variant" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model,name:product_variant_multi_link.model_product_product +msgid "Product" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_variant_link_ids +msgid "Product Variant Links" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model,name:product_variant_multi_link.model_product_template_link +msgid "Product link" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__left_product_id +msgid "Source Variant" +msgstr "" + +#. module: product_variant_multi_link +#: code:addons/product_variant_multi_link/models/product_template_link.py:0 +#, python-format +msgid "Source and target variants are required!" +msgstr "" + +#. module: product_variant_multi_link +#: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_template_link__search +msgid "Variant" +msgstr "" From b3599f8d633b35e05de25ef580d5074e7173d24e Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 17 Sep 2020 22:37:09 +0000 Subject: [PATCH 03/23] [UPD] README.rst --- product_variant_multi_link/README.rst | 87 ++++ .../static/description/index.html | 434 ++++++++++++++++++ 2 files changed, 521 insertions(+) create mode 100644 product_variant_multi_link/README.rst create mode 100644 product_variant_multi_link/static/description/index.html diff --git a/product_variant_multi_link/README.rst b/product_variant_multi_link/README.rst new file mode 100644 index 0000000000..fbc4b6dbe5 --- /dev/null +++ b/product_variant_multi_link/README.rst @@ -0,0 +1,87 @@ +============================= +Product Multi Links (Variant) +============================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fe--commerce-lightgray.png?logo=github + :target: https://github.com/OCA/e-commerce/tree/13.0/product_variant_multi_link + :alt: OCA/e-commerce +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/e-commerce-13-0/e-commerce-13-0-product_variant_multi_link + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/113/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Extends `product_template_multi_link` to link product variants. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Create a link as you would do with `product_template_multi_link` +and after setting a template, set a variant for that template. + +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 +~~~~~~~ + +* Camptocamp SA + +Contributors +~~~~~~~~~~~~ + +* Simone Orsi + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* Camptocamp +* Cosanum + +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/e-commerce `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_variant_multi_link/static/description/index.html b/product_variant_multi_link/static/description/index.html new file mode 100644 index 0000000000..479a59b47c --- /dev/null +++ b/product_variant_multi_link/static/description/index.html @@ -0,0 +1,434 @@ + + + + + + +Product Multi Links (Variant) + + + + + + From 17f056a65a87171bdda633a7d7f05174499ed0d2 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 17 Sep 2020 22:37:10 +0000 Subject: [PATCH 04/23] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 product_variant_multi_link/static/description/icon.png diff --git a/product_variant_multi_link/static/description/icon.png b/product_variant_multi_link/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 From f351b8b7595c343243afe3a916b755ecb66602e4 Mon Sep 17 00:00:00 2001 From: Bosd Date: Tue, 15 Dec 2020 10:39:51 +0000 Subject: [PATCH 05/23] Added translation using Weblate (Dutch) --- product_variant_multi_link/i18n/nl.po | 51 +++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 product_variant_multi_link/i18n/nl.po diff --git a/product_variant_multi_link/i18n/nl.po b/product_variant_multi_link/i18n/nl.po new file mode 100644 index 0000000000..408770a082 --- /dev/null +++ b/product_variant_multi_link/i18n/nl.po @@ -0,0 +1,51 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_variant_multi_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__right_product_id +msgid "Linked Variant" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model,name:product_variant_multi_link.model_product_product +msgid "Product" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_variant_link_ids +msgid "Product Variant Links" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model,name:product_variant_multi_link.model_product_template_link +msgid "Product link" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__left_product_id +msgid "Source Variant" +msgstr "" + +#. module: product_variant_multi_link +#: code:addons/product_variant_multi_link/models/product_template_link.py:0 +#, python-format +msgid "Source and target variants are required!" +msgstr "" + +#. module: product_variant_multi_link +#: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_template_link__search +msgid "Variant" +msgstr "" From 45b889d61e9fd8d2a00363c30b21330ddeb7c5ba Mon Sep 17 00:00:00 2001 From: Bosd Date: Tue, 15 Dec 2020 10:41:19 +0000 Subject: [PATCH 06/23] Translated using Weblate (Dutch) Currently translated at 100.0% (7 of 7 strings) Translation: e-commerce-13.0/e-commerce-13.0-product_variant_multi_link Translate-URL: https://translation.odoo-community.org/projects/e-commerce-13-0/e-commerce-13-0-product_variant_multi_link/nl/ --- product_variant_multi_link/i18n/nl.po | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/product_variant_multi_link/i18n/nl.po b/product_variant_multi_link/i18n/nl.po index 408770a082..67876ff716 100644 --- a/product_variant_multi_link/i18n/nl.po +++ b/product_variant_multi_link/i18n/nl.po @@ -6,46 +6,48 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-12-15 13:19+0000\n" +"Last-Translator: Bosd \n" "Language-Team: none\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__right_product_id msgid "Linked Variant" -msgstr "" +msgstr "Gelinkte variant" #. module: product_variant_multi_link #: model:ir.model,name:product_variant_multi_link.model_product_product msgid "Product" -msgstr "" +msgstr "Product" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_variant_link_ids msgid "Product Variant Links" -msgstr "" +msgstr "Product Variant Links" #. module: product_variant_multi_link #: model:ir.model,name:product_variant_multi_link.model_product_template_link msgid "Product link" -msgstr "" +msgstr "Product link" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__left_product_id msgid "Source Variant" -msgstr "" +msgstr "Bron variant" #. module: product_variant_multi_link #: code:addons/product_variant_multi_link/models/product_template_link.py:0 #, python-format msgid "Source and target variants are required!" -msgstr "" +msgstr "Bron en doel variant zijn benodigd!" #. module: product_variant_multi_link #: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_template_link__search msgid "Variant" -msgstr "" +msgstr "Variant" From 5f4ffcc87e295411e257be7f561a9decdef56f9a Mon Sep 17 00:00:00 2001 From: Chafique Date: Tue, 2 Feb 2021 18:59:30 +0100 Subject: [PATCH 07/23] [IMP] product_variant_multi_link: black, isort, prettier --- .../models/product_template_link.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/product_variant_multi_link/models/product_template_link.py b/product_variant_multi_link/models/product_template_link.py index b2a0a68d5f..5fa2979aa8 100644 --- a/product_variant_multi_link/models/product_template_link.py +++ b/product_variant_multi_link/models/product_template_link.py @@ -9,10 +9,14 @@ class ProductTemplateLink(models.Model): _inherit = "product.template.link" left_product_id = fields.Many2one( - string="Source Variant", comodel_name="product.product", ondelete="cascade", + string="Source Variant", + comodel_name="product.product", + ondelete="cascade", ) right_product_id = fields.Many2one( - string="Linked Variant", comodel_name="product.product", ondelete="cascade", + string="Linked Variant", + comodel_name="product.product", + ondelete="cascade", ) def _product_variant_check_enabled(self): From 9504b999610fe63251d3e3acd8255d594f12314f Mon Sep 17 00:00:00 2001 From: Chafique Date: Tue, 2 Feb 2021 18:59:30 +0100 Subject: [PATCH 08/23] [MIG] product_variant_multi_link: Migration to 14.0 --- product_variant_multi_link/__manifest__.py | 2 +- .../tests/test_product_template_link.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/product_variant_multi_link/__manifest__.py b/product_variant_multi_link/__manifest__.py index 0bc378ef45..700e3ade7b 100644 --- a/product_variant_multi_link/__manifest__.py +++ b/product_variant_multi_link/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Product Multi Links (Variant)", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "category": "Generic Modules", "author": "Camptocamp SA, Odoo Community Association (OCA)", "website": "https://github.com/OCA/e-commerce", diff --git a/product_variant_multi_link/tests/test_product_template_link.py b/product_variant_multi_link/tests/test_product_template_link.py index e218317da9..ac195168b6 100644 --- a/product_variant_multi_link/tests/test_product_template_link.py +++ b/product_variant_multi_link/tests/test_product_template_link.py @@ -38,7 +38,9 @@ def test_variants_required(self): "type_id": self.link_type.id, } ) - self.assertEqual(err.exception.name, "Source and target variants are required!") + self.assertEqual( + err.exception.args[0], "Source and target variants are required!" + ) def test_duplicated_link_different_product(self): link1 = self._create_link_default() From 9f5792016839ae497bf571ddc7313d76617d8c66 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Fri, 16 Jul 2021 14:04:03 +0000 Subject: [PATCH 09/23] [UPD] Update product_variant_multi_link.pot --- .../i18n/product_variant_multi_link.pot | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/product_variant_multi_link/i18n/product_variant_multi_link.pot b/product_variant_multi_link/i18n/product_variant_multi_link.pot index 0d96ae8b0e..d379005f05 100644 --- a/product_variant_multi_link/i18n/product_variant_multi_link.pot +++ b/product_variant_multi_link/i18n/product_variant_multi_link.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" @@ -13,6 +13,24 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__display_name +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__display_name +msgid "Display Name" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__id +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__id +msgid "ID" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product____last_update +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link____last_update +msgid "Last Modified on" +msgstr "" + #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__right_product_id msgid "Linked Variant" From 28bfdc7c6a2a5932bb304e868e7605f07f1182f1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 16 Jul 2021 14:32:13 +0000 Subject: [PATCH 10/23] [UPD] README.rst --- product_variant_multi_link/README.rst | 10 +++++----- .../static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/product_variant_multi_link/README.rst b/product_variant_multi_link/README.rst index fbc4b6dbe5..dfc16e725b 100644 --- a/product_variant_multi_link/README.rst +++ b/product_variant_multi_link/README.rst @@ -14,13 +14,13 @@ Product Multi Links (Variant) :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fe--commerce-lightgray.png?logo=github - :target: https://github.com/OCA/e-commerce/tree/13.0/product_variant_multi_link + :target: https://github.com/OCA/e-commerce/tree/14.0/product_variant_multi_link :alt: OCA/e-commerce .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/e-commerce-13-0/e-commerce-13-0-product_variant_multi_link + :target: https://translation.odoo-community.org/projects/e-commerce-14-0/e-commerce-14-0-product_variant_multi_link :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/113/13.0 + :target: https://runbot.odoo-community.org/runbot/113/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -44,7 +44,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/e-commerce `_ project on GitHub. +This module is part of the `OCA/e-commerce `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_variant_multi_link/static/description/index.html b/product_variant_multi_link/static/description/index.html index 479a59b47c..c2eabcb8a0 100644 --- a/product_variant_multi_link/static/description/index.html +++ b/product_variant_multi_link/static/description/index.html @@ -367,7 +367,7 @@

Product Multi Links (Variant)

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

Beta License: AGPL-3 OCA/e-commerce Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/e-commerce Translate me on Weblate Try me on Runbot

Extends product_template_multi_link to link product variants.

Table of contents

@@ -393,7 +393,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.

@@ -425,7 +425,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/e-commerce project on GitHub.

+

This module is part of the OCA/e-commerce project on GitHub.

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

From f7c58847a45d6c2c5e8f8c696bb5fedb721fd234 Mon Sep 17 00:00:00 2001 From: Ignacio Buioli Date: Sat, 11 Sep 2021 17:20:11 +0000 Subject: [PATCH 11/23] Added translation using Weblate (Spanish (Argentina)) --- product_variant_multi_link/i18n/es_AR.po | 69 ++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 product_variant_multi_link/i18n/es_AR.po diff --git a/product_variant_multi_link/i18n/es_AR.po b/product_variant_multi_link/i18n/es_AR.po new file mode 100644 index 0000000000..ded77e7ec2 --- /dev/null +++ b/product_variant_multi_link/i18n/es_AR.po @@ -0,0 +1,69 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_variant_multi_link +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__display_name +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__display_name +msgid "Display Name" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__id +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__id +msgid "ID" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product____last_update +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link____last_update +msgid "Last Modified on" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__right_product_id +msgid "Linked Variant" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model,name:product_variant_multi_link.model_product_product +msgid "Product" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_variant_link_ids +msgid "Product Variant Links" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model,name:product_variant_multi_link.model_product_template_link +msgid "Product link" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__left_product_id +msgid "Source Variant" +msgstr "" + +#. module: product_variant_multi_link +#: code:addons/product_variant_multi_link/models/product_template_link.py:0 +#, python-format +msgid "Source and target variants are required!" +msgstr "" + +#. module: product_variant_multi_link +#: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_template_link__search +msgid "Variant" +msgstr "" From 91ca6dbac2604a10f7e50c6e6bf9c708ccc0e801 Mon Sep 17 00:00:00 2001 From: Ignacio Buioli Date: Sat, 11 Sep 2021 18:50:21 +0000 Subject: [PATCH 12/23] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (10 of 10 strings) Translation: e-commerce-14.0/e-commerce-14.0-product_variant_multi_link Translate-URL: https://translation.odoo-community.org/projects/e-commerce-14-0/e-commerce-14-0-product_variant_multi_link/es_AR/ --- product_variant_multi_link/i18n/es_AR.po | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/product_variant_multi_link/i18n/es_AR.po b/product_variant_multi_link/i18n/es_AR.po index ded77e7ec2..759c163a43 100644 --- a/product_variant_multi_link/i18n/es_AR.po +++ b/product_variant_multi_link/i18n/es_AR.po @@ -6,64 +6,66 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2021-09-11 19:33+0000\n" +"Last-Translator: Ignacio Buioli \n" "Language-Team: none\n" "Language: es_AR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__display_name #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__display_name msgid "Display Name" -msgstr "" +msgstr "Mostrar Nombre" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__id #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__id msgid "ID" -msgstr "" +msgstr "ID" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product____last_update #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link____last_update msgid "Last Modified on" -msgstr "" +msgstr "Última modificación en" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__right_product_id msgid "Linked Variant" -msgstr "" +msgstr "Variante Vinculada" #. module: product_variant_multi_link #: model:ir.model,name:product_variant_multi_link.model_product_product msgid "Product" -msgstr "" +msgstr "Producto" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_variant_link_ids msgid "Product Variant Links" -msgstr "" +msgstr "Vínculos de Variante de Producto" #. module: product_variant_multi_link #: model:ir.model,name:product_variant_multi_link.model_product_template_link msgid "Product link" -msgstr "" +msgstr "Enlace de producto" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__left_product_id msgid "Source Variant" -msgstr "" +msgstr "Origen de Variante" #. module: product_variant_multi_link #: code:addons/product_variant_multi_link/models/product_template_link.py:0 #, python-format msgid "Source and target variants are required!" -msgstr "" +msgstr "¡El origen y el objetivo de las variantes son requeridos!" #. module: product_variant_multi_link #: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_template_link__search msgid "Variant" -msgstr "" +msgstr "Variante" From 79d499d2eeec9703844a27a6d9f04ff6c63875ab Mon Sep 17 00:00:00 2001 From: Anna Janiszewska Date: Thu, 7 Jan 2021 15:22:59 +0100 Subject: [PATCH 13/23] [IMP] Add product links smartbutton --- product_variant_multi_link/__manifest__.py | 2 +- .../models/product_product.py | 66 ++++++++++++++++++- .../tests/test_product_template_link.py | 13 ++++ .../views/product_product_view.xml | 25 +++++++ 4 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 product_variant_multi_link/views/product_product_view.xml diff --git a/product_variant_multi_link/__manifest__.py b/product_variant_multi_link/__manifest__.py index 700e3ade7b..9879218b95 100644 --- a/product_variant_multi_link/__manifest__.py +++ b/product_variant_multi_link/__manifest__.py @@ -10,6 +10,6 @@ "website": "https://github.com/OCA/e-commerce", "license": "AGPL-3", "depends": ["product_template_multi_link"], - "data": ["views/product_template_link_view.xml"], + "data": ["views/product_template_link_view.xml", "views/product_product_view.xml"], "installable": True, } diff --git a/product_variant_multi_link/models/product_product.py b/product_variant_multi_link/models/product_product.py index 4f66af11b3..ec9a430c0b 100644 --- a/product_variant_multi_link/models/product_product.py +++ b/product_variant_multi_link/models/product_product.py @@ -2,7 +2,8 @@ # Simone Orsi # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import _, api, fields, models +from odoo.exceptions import AccessError class ProductProduct(models.Model): @@ -14,6 +15,50 @@ class ProductProduct(models.Model): compute="_compute_product_link_ids", ) + product_product_link_count = fields.Integer( + string="Variants Links Count", compute="_compute_product_product_link_count" + ) + + @api.depends("product_variant_link_ids") + def _compute_product_product_link_count(self): + link_model = self.env["product.template.link"] + # Set product_template_link_qty to 0 if user has no access on the model + try: + link_model.check_access_rights("read") + except AccessError: + self.update({"product_product_link_count": 0}) + return + + domain = [ + "|", + ("left_product_id", "in", self.ids), + ("right_product_id", "in", self.ids), + ] + + res_1 = link_model.read_group( + domain=domain, + fields=["left_product_id"], + groupby=["left_product_id"], + ) + res_2 = link_model.read_group( + domain=domain, + fields=["right_product_id"], + groupby=["right_product_id"], + ) + + link_dict = {} + for dic in res_1: + link_id = dic["left_product_id"][0] + link_dict.setdefault(link_id, 0) + link_dict[link_id] += dic["left_product_id_count"] + for dic in res_2: + link_id = dic["right_product_id"][0] + link_dict.setdefault(link_id, 0) + link_dict[link_id] += dic["right_product_id_count"] + + for rec in self: + rec.product_product_link_count = link_dict.get(rec.id, 0) + def _compute_product_link_ids(self): for record in self: record.product_variant_link_ids = record._get_variant_links() @@ -22,3 +67,22 @@ def _get_variant_links(self): return self.product_template_link_ids.filtered_domain( ["|", ("left_product_id", "=", self.id), ("right_product_id", "=", self.id)] ) + + def show_product_product_links(self): + self.ensure_one() + + return { + "name": _("Product links"), + "type": "ir.actions.act_window", + "view_mode": "tree,form", + "res_model": "product.template.link", + "domain": [ + "|", + ("left_product_id", "=", self.id), + ("right_product_id", "=", self.id), + ], + "context": { + "search_default_groupby_type": True, + "default_left_product_id": self.id, + }, + } diff --git a/product_variant_multi_link/tests/test_product_template_link.py b/product_variant_multi_link/tests/test_product_template_link.py index ac195168b6..180ecfea3e 100644 --- a/product_variant_multi_link/tests/test_product_template_link.py +++ b/product_variant_multi_link/tests/test_product_template_link.py @@ -86,3 +86,16 @@ def test_cache_invalidation(self): link1.unlink() self.assertNotIn(link1, self.product_product_1.product_variant_link_ids) self.assertNotIn(link1, self.product_product_2.product_variant_link_ids) + + def test_product_variant_links(self): + link1 = self._create_link_default() + self.assertIn(link1, self.product_product_1.product_variant_link_ids) + self.assertIn(link1, self.product_product_2.product_variant_link_ids) + self.assertEqual(self.product_product_1.product_product_link_count, 1) + self.assertEqual(self.product_product_2.product_product_link_count, 1) + + link1.unlink() + self.assertNotIn(link1, self.product_product_1.product_variant_link_ids) + self.assertNotIn(link1, self.product_product_2.product_variant_link_ids) + self.assertEqual(self.product_product_1.product_product_link_count, 0) + self.assertEqual(self.product_product_1.product_product_link_count, 0) diff --git a/product_variant_multi_link/views/product_product_view.xml b/product_variant_multi_link/views/product_product_view.xml new file mode 100644 index 0000000000..b9ba6ae470 --- /dev/null +++ b/product_variant_multi_link/views/product_product_view.xml @@ -0,0 +1,25 @@ + + + + product.product.multilinks.button + product.product + + +
+ +
+
+
+
From 8bebba7ad4c0a74eabd7428a9b6868e82271eb86 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 2 Dec 2021 09:10:21 +0000 Subject: [PATCH 14/23] [UPD] Update product_variant_multi_link.pot --- .../i18n/product_variant_multi_link.pot | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/product_variant_multi_link/i18n/product_variant_multi_link.pot b/product_variant_multi_link/i18n/product_variant_multi_link.pot index d379005f05..b3d109670e 100644 --- a/product_variant_multi_link/i18n/product_variant_multi_link.pot +++ b/product_variant_multi_link/i18n/product_variant_multi_link.pot @@ -41,6 +41,11 @@ msgstr "" msgid "Product" msgstr "" +#. module: product_variant_multi_link +#: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_product_form_inherit_multilinks +msgid "Product Links" +msgstr "" + #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_variant_link_ids msgid "Product Variant Links" @@ -51,6 +56,13 @@ msgstr "" msgid "Product link" msgstr "" +#. module: product_variant_multi_link +#: code:addons/product_variant_multi_link/models/product_product.py:0 +#: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_product_form_inherit_multilinks +#, python-format +msgid "Product links" +msgstr "" + #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__left_product_id msgid "Source Variant" @@ -66,3 +78,8 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_template_link__search msgid "Variant" msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_product_link_count +msgid "Variants Links Count" +msgstr "" From ed7b72738db5750c94a29197205df6513822b1ee Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 2 Dec 2021 09:29:07 +0000 Subject: [PATCH 15/23] product_variant_multi_link 14.0.1.1.0 --- product_variant_multi_link/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_variant_multi_link/__manifest__.py b/product_variant_multi_link/__manifest__.py index 9879218b95..9068995eb3 100644 --- a/product_variant_multi_link/__manifest__.py +++ b/product_variant_multi_link/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Product Multi Links (Variant)", - "version": "14.0.1.0.0", + "version": "14.0.1.1.0", "category": "Generic Modules", "author": "Camptocamp SA, Odoo Community Association (OCA)", "website": "https://github.com/OCA/e-commerce", From 4ed61bf8ba8668a6fbb84450288946f6d844292c Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Thu, 2 Dec 2021 09:29:21 +0000 Subject: [PATCH 16/23] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: e-commerce-14.0/e-commerce-14.0-product_variant_multi_link Translate-URL: https://translation.odoo-community.org/projects/e-commerce-14-0/e-commerce-14-0-product_variant_multi_link/ --- product_variant_multi_link/i18n/es_AR.po | 17 ++++++++++++ product_variant_multi_link/i18n/nl.po | 35 ++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/product_variant_multi_link/i18n/es_AR.po b/product_variant_multi_link/i18n/es_AR.po index 759c163a43..a8a60e4fcc 100644 --- a/product_variant_multi_link/i18n/es_AR.po +++ b/product_variant_multi_link/i18n/es_AR.po @@ -44,6 +44,11 @@ msgstr "Variante Vinculada" msgid "Product" msgstr "Producto" +#. module: product_variant_multi_link +#: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_product_form_inherit_multilinks +msgid "Product Links" +msgstr "" + #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_variant_link_ids msgid "Product Variant Links" @@ -54,6 +59,13 @@ msgstr "Vínculos de Variante de Producto" msgid "Product link" msgstr "Enlace de producto" +#. module: product_variant_multi_link +#: code:addons/product_variant_multi_link/models/product_product.py:0 +#: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_product_form_inherit_multilinks +#, python-format +msgid "Product links" +msgstr "" + #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__left_product_id msgid "Source Variant" @@ -69,3 +81,8 @@ msgstr "¡El origen y el objetivo de las variantes son requeridos!" #: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_template_link__search msgid "Variant" msgstr "Variante" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_product_link_count +msgid "Variants Links Count" +msgstr "" diff --git a/product_variant_multi_link/i18n/nl.po b/product_variant_multi_link/i18n/nl.po index 67876ff716..9171b8da40 100644 --- a/product_variant_multi_link/i18n/nl.po +++ b/product_variant_multi_link/i18n/nl.po @@ -16,6 +16,24 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 4.3.2\n" +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__display_name +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__display_name +msgid "Display Name" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__id +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__id +msgid "ID" +msgstr "" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product____last_update +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link____last_update +msgid "Last Modified on" +msgstr "" + #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__right_product_id msgid "Linked Variant" @@ -26,6 +44,11 @@ msgstr "Gelinkte variant" msgid "Product" msgstr "Product" +#. module: product_variant_multi_link +#: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_product_form_inherit_multilinks +msgid "Product Links" +msgstr "" + #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_variant_link_ids msgid "Product Variant Links" @@ -36,6 +59,13 @@ msgstr "Product Variant Links" msgid "Product link" msgstr "Product link" +#. module: product_variant_multi_link +#: code:addons/product_variant_multi_link/models/product_product.py:0 +#: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_product_form_inherit_multilinks +#, python-format +msgid "Product links" +msgstr "" + #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__left_product_id msgid "Source Variant" @@ -51,3 +81,8 @@ msgstr "Bron en doel variant zijn benodigd!" #: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_template_link__search msgid "Variant" msgstr "Variant" + +#. module: product_variant_multi_link +#: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_product_link_count +msgid "Variants Links Count" +msgstr "" From 4ac3de9d82e93380f9106063433fc544f04b8432 Mon Sep 17 00:00:00 2001 From: Ignacio Buioli Date: Sun, 5 Dec 2021 19:12:25 +0000 Subject: [PATCH 17/23] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (13 of 13 strings) Translation: e-commerce-14.0/e-commerce-14.0-product_variant_multi_link Translate-URL: https://translation.odoo-community.org/projects/e-commerce-14-0/e-commerce-14-0-product_variant_multi_link/es_AR/ --- product_variant_multi_link/i18n/es_AR.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/product_variant_multi_link/i18n/es_AR.po b/product_variant_multi_link/i18n/es_AR.po index a8a60e4fcc..880f76e387 100644 --- a/product_variant_multi_link/i18n/es_AR.po +++ b/product_variant_multi_link/i18n/es_AR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2021-09-11 19:33+0000\n" +"PO-Revision-Date: 2021-12-05 21:37+0000\n" "Last-Translator: Ignacio Buioli \n" "Language-Team: none\n" "Language: es_AR\n" @@ -47,7 +47,7 @@ msgstr "Producto" #. module: product_variant_multi_link #: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_product_form_inherit_multilinks msgid "Product Links" -msgstr "" +msgstr "Vínculos de Producto" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_variant_link_ids @@ -64,7 +64,7 @@ msgstr "Enlace de producto" #: model_terms:ir.ui.view,arch_db:product_variant_multi_link.product_product_form_inherit_multilinks #, python-format msgid "Product links" -msgstr "" +msgstr "Vínculos de producto" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_template_link__left_product_id @@ -85,4 +85,4 @@ msgstr "Variante" #. module: product_variant_multi_link #: model:ir.model.fields,field_description:product_variant_multi_link.field_product_product__product_product_link_count msgid "Variants Links Count" -msgstr "" +msgstr "Cuenta de los Vínculos de Variantes" From f9e88cf73e700490fc53bc4094e8ee97a645ed6a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 12:36:31 +0000 Subject: [PATCH 18/23] [UPD] README.rst --- product_variant_multi_link/README.rst | 15 ++++--- .../static/description/index.html | 42 ++++++++++--------- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/product_variant_multi_link/README.rst b/product_variant_multi_link/README.rst index dfc16e725b..321683bfd3 100644 --- a/product_variant_multi_link/README.rst +++ b/product_variant_multi_link/README.rst @@ -2,10 +2,13 @@ Product Multi Links (Variant) ============================= -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:21a44b08f1399703431e97ac3de321d96e37f44b978cb5fb109c1ad6d3f23abc + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Product Multi Links (Variant) .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/e-commerce-14-0/e-commerce-14-0-product_variant_multi_link :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/113/14.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/e-commerce&target_branch=14.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| Extends `product_template_multi_link` to link product variants. @@ -43,7 +46,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 +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/product_variant_multi_link/static/description/index.html b/product_variant_multi_link/static/description/index.html index c2eabcb8a0..d2fd9bbd0f 100644 --- a/product_variant_multi_link/static/description/index.html +++ b/product_variant_multi_link/static/description/index.html @@ -1,20 +1,20 @@ - + - + Product Multi Links (Variant)