From 8c3e6070773d6adb77584c1cda6c59d7f8fa7982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20G=C3=B6ttsch?= Date: Tue, 26 May 2026 11:22:13 +0200 Subject: [PATCH] [ADD] website_variant_values_visibility --- website_variant_values_visibility/README.rst | 73 +++ website_variant_values_visibility/__init__.py | 1 + .../__manifest__.py | 16 + website_variant_values_visibility/i18n/de.po | 31 ++ .../models/__init__.py | 1 + .../models/product_attribute_value.py | 16 + .../pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 4 + .../readme/DESCRIPTION.md | 2 + .../readme/HISTORY.md | 1 + .../static/description/icon.png | Bin 0 -> 3904 bytes .../static/description/index.html | 433 ++++++++++++++++++ .../tests/__init__.py | 1 + .../tests/test_product_attribute_value.py | 43 ++ .../views/product_attribute_value_views.xml | 14 + .../views/variant_template.xml | 55 +++ 16 files changed, 694 insertions(+) create mode 100644 website_variant_values_visibility/README.rst create mode 100644 website_variant_values_visibility/__init__.py create mode 100644 website_variant_values_visibility/__manifest__.py create mode 100644 website_variant_values_visibility/i18n/de.po create mode 100644 website_variant_values_visibility/models/__init__.py create mode 100644 website_variant_values_visibility/models/product_attribute_value.py create mode 100644 website_variant_values_visibility/pyproject.toml create mode 100644 website_variant_values_visibility/readme/CONTRIBUTORS.md create mode 100644 website_variant_values_visibility/readme/DESCRIPTION.md create mode 100644 website_variant_values_visibility/readme/HISTORY.md create mode 100644 website_variant_values_visibility/static/description/icon.png create mode 100644 website_variant_values_visibility/static/description/index.html create mode 100644 website_variant_values_visibility/tests/__init__.py create mode 100644 website_variant_values_visibility/tests/test_product_attribute_value.py create mode 100644 website_variant_values_visibility/views/product_attribute_value_views.xml create mode 100644 website_variant_values_visibility/views/variant_template.xml diff --git a/website_variant_values_visibility/README.rst b/website_variant_values_visibility/README.rst new file mode 100644 index 0000000..28b612b --- /dev/null +++ b/website_variant_values_visibility/README.rst @@ -0,0 +1,73 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +================================= +Website Variant Values Visibility +================================= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:3b6aaf2b68e397b27d94f5bb02aabb23fd19e14682b50bac025280482e939614 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/license-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-madmooose%2Fodooapps-lightgray.png?logo=github + :target: https://github.com/madmooose/odooapps/tree/16.0/website_variant_values_visibility + :alt: madmooose/odooapps + +|badge1| |badge2| |badge3| + +This module allows control over the visibility of product variant values +in the e-commerce website. + +**Table of contents** + +.. contents:: + :local: + +Changelog +========= + +- 16.0.1.0.0: Adds visibility control for variant values in e-commerce. + +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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* IFE Gesellschaft für Forschung und Entwicklung +* Niels Göttsch + +Contributors +------------ + +- René Greßmann +- Hiren Lakhani +- Niels Göttsch + +Maintainers +----------- + +This module is part of the `madmooose/odooapps `_ project on GitHub. + +You are welcome to contribute. diff --git a/website_variant_values_visibility/__init__.py b/website_variant_values_visibility/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/website_variant_values_visibility/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/website_variant_values_visibility/__manifest__.py b/website_variant_values_visibility/__manifest__.py new file mode 100644 index 0000000..2ea8f77 --- /dev/null +++ b/website_variant_values_visibility/__manifest__.py @@ -0,0 +1,16 @@ +{ + "name": "Website Variant Values Visibility", + "version": "16.0.1.0.0", + "category": "Product", + "summary": "Adds visibility control for variant values in e-commerce", + "author": "IFE Gesellschaft für Forschung und Entwicklung, Niels Göttsch", + "website": "https://ziemlichoptimal.de", + "depends": ["product", "website_sale"], + "data": [ + "views/product_attribute_value_views.xml", + "views/variant_template.xml", + ], + "installable": True, + "auto_install": False, + "license": "LGPL-3", +} diff --git a/website_variant_values_visibility/i18n/de.po b/website_variant_values_visibility/i18n/de.po new file mode 100644 index 0000000..71a8d4e --- /dev/null +++ b/website_variant_values_visibility/i18n/de.po @@ -0,0 +1,31 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * website_variant_values_visibility +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 17.0+e-20240411\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-12 05:27+0000\n" +"PO-Revision-Date: 2024-06-12 05:27+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: website_variant_values_visibility +#: model:ir.model,name:website_variant_values_visibility.model_product_attribute_value +msgid "Attribute Value" +msgstr "Attributwert" + +#. module: website_variant_values_visibility +#: model:ir.model.fields,help:website_variant_values_visibility.field_product_attribute_value__visible_in_ecommerce +msgid "Determines if the variant value is visible in the e-commerce." +msgstr "Ermittelt, ob der Variantenwert im E-Commerce sichtbar ist." + +#. module: website_variant_values_visibility +#: model:ir.model.fields,field_description:website_variant_values_visibility.field_product_attribute_value__visible_in_ecommerce +msgid "Visible in e-commerce" +msgstr "Sichtbar in E-Commerce" diff --git a/website_variant_values_visibility/models/__init__.py b/website_variant_values_visibility/models/__init__.py new file mode 100644 index 0000000..967ba8a --- /dev/null +++ b/website_variant_values_visibility/models/__init__.py @@ -0,0 +1 @@ +from . import product_attribute_value diff --git a/website_variant_values_visibility/models/product_attribute_value.py b/website_variant_values_visibility/models/product_attribute_value.py new file mode 100644 index 0000000..318708b --- /dev/null +++ b/website_variant_values_visibility/models/product_attribute_value.py @@ -0,0 +1,16 @@ +from odoo import fields, models + + +class ProductAttributeValue(models.Model): + """ + This class extends the functionality of product attribute values in Odoo. + It adds a boolean field to determine if the variant value is visible in e-commerce. + """ + + _inherit = "product.attribute.value" + + visible_in_ecommerce = fields.Boolean( + string="Visible in e-commerce", + default=True, + help="Determines if the variant value is visible in the e-commerce.", + ) diff --git a/website_variant_values_visibility/pyproject.toml b/website_variant_values_visibility/pyproject.toml new file mode 100644 index 0000000..4231d0c --- /dev/null +++ b/website_variant_values_visibility/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/website_variant_values_visibility/readme/CONTRIBUTORS.md b/website_variant_values_visibility/readme/CONTRIBUTORS.md new file mode 100644 index 0000000..acd637d --- /dev/null +++ b/website_variant_values_visibility/readme/CONTRIBUTORS.md @@ -0,0 +1,4 @@ +- René Greßmann +- Hiren Lakhani +- Niels Göttsch + diff --git a/website_variant_values_visibility/readme/DESCRIPTION.md b/website_variant_values_visibility/readme/DESCRIPTION.md new file mode 100644 index 0000000..2fb73d7 --- /dev/null +++ b/website_variant_values_visibility/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module allows control over the visibility of product variant values in the e-commerce website. + diff --git a/website_variant_values_visibility/readme/HISTORY.md b/website_variant_values_visibility/readme/HISTORY.md new file mode 100644 index 0000000..b66ec0d --- /dev/null +++ b/website_variant_values_visibility/readme/HISTORY.md @@ -0,0 +1 @@ +- 16.0.1.0.0: Adds visibility control for variant values in e-commerce. diff --git a/website_variant_values_visibility/static/description/icon.png b/website_variant_values_visibility/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..15a5df57a8ff9d697ce4f5673d67d9524b1266b3 GIT binary patch literal 3904 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 + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Website Variant Values Visibility

+ +

Beta License: LGPL-3 madmooose/odooapps

+

This module allows control over the visibility of product variant values +in the e-commerce website.

+

Table of contents

+ +
+

Changelog

+
    +
  • 16.0.1.0.0: Adds visibility control for variant values in e-commerce.
  • +
+
+
+

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 to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • IFE Gesellschaft für Forschung und Entwicklung
  • +
  • Niels Göttsch
  • +
+
+
+

Contributors

+
    +
  • René Greßmann
  • +
  • Hiren Lakhani
  • +
  • Niels Göttsch
  • +
+
+
+

Maintainers

+

This module is part of the madmooose/odooapps project on GitHub.

+

You are welcome to contribute.

+
+
+
+
+ + diff --git a/website_variant_values_visibility/tests/__init__.py b/website_variant_values_visibility/tests/__init__.py new file mode 100644 index 0000000..4e66d41 --- /dev/null +++ b/website_variant_values_visibility/tests/__init__.py @@ -0,0 +1 @@ +from . import test_product_attribute_value diff --git a/website_variant_values_visibility/tests/test_product_attribute_value.py b/website_variant_values_visibility/tests/test_product_attribute_value.py new file mode 100644 index 0000000..4f446a3 --- /dev/null +++ b/website_variant_values_visibility/tests/test_product_attribute_value.py @@ -0,0 +1,43 @@ +from odoo.tests import TransactionCase + + +class TestProductAttributeValue(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context={**cls.env.context, "tracking_disable": True}) + cls.attribute = cls.env["product.attribute"].create({"name": "Color"}) + cls.value_red = cls.env["product.attribute.value"].create( + {"name": "Red", "attribute_id": cls.attribute.id} + ) + cls.value_blue = cls.env["product.attribute.value"].create( + {"name": "Blue", "attribute_id": cls.attribute.id} + ) + + # --- visible_in_ecommerce field --- + + def test_default_is_true(self): + value = self.env["product.attribute.value"].create( + {"name": "Green", "attribute_id": self.attribute.id} + ) + self.assertTrue(value.visible_in_ecommerce) + + def test_can_be_set_false_on_create(self): + value = self.env["product.attribute.value"].create( + { + "name": "Yellow", + "attribute_id": self.attribute.id, + "visible_in_ecommerce": False, + } + ) + self.assertFalse(value.visible_in_ecommerce) + + def test_write_false(self): + self.value_red.write({"visible_in_ecommerce": False}) + self.assertFalse(self.value_red.visible_in_ecommerce) + + def test_write_toggle(self): + self.value_red.write({"visible_in_ecommerce": False}) + self.assertFalse(self.value_red.visible_in_ecommerce) + self.value_red.write({"visible_in_ecommerce": True}) + self.assertTrue(self.value_red.visible_in_ecommerce) diff --git a/website_variant_values_visibility/views/product_attribute_value_views.xml b/website_variant_values_visibility/views/product_attribute_value_views.xml new file mode 100644 index 0000000..66348a8 --- /dev/null +++ b/website_variant_values_visibility/views/product_attribute_value_views.xml @@ -0,0 +1,14 @@ + + + + + product.attribute.form + product.attribute + + + + + + + + diff --git a/website_variant_values_visibility/views/variant_template.xml b/website_variant_values_visibility/views/variant_template.xml new file mode 100644 index 0000000..634c307 --- /dev/null +++ b/website_variant_values_visibility/views/variant_template.xml @@ -0,0 +1,55 @@ + + + + +