diff --git a/setup/shopinvader_category_image_for_product/odoo/__init__.py b/setup/shopinvader_category_image_for_product/odoo/__init__.py new file mode 100644 index 0000000000..de40ea7ca0 --- /dev/null +++ b/setup/shopinvader_category_image_for_product/odoo/__init__.py @@ -0,0 +1 @@ +__import__('pkg_resources').declare_namespace(__name__) diff --git a/setup/shopinvader_category_image_for_product/odoo/addons/__init__.py b/setup/shopinvader_category_image_for_product/odoo/addons/__init__.py new file mode 100644 index 0000000000..de40ea7ca0 --- /dev/null +++ b/setup/shopinvader_category_image_for_product/odoo/addons/__init__.py @@ -0,0 +1 @@ +__import__('pkg_resources').declare_namespace(__name__) diff --git a/setup/shopinvader_category_image_for_product/odoo/addons/shopinvader_category_image_for_product b/setup/shopinvader_category_image_for_product/odoo/addons/shopinvader_category_image_for_product new file mode 120000 index 0000000000..bbf1a5076a --- /dev/null +++ b/setup/shopinvader_category_image_for_product/odoo/addons/shopinvader_category_image_for_product @@ -0,0 +1 @@ +../../../../shopinvader_category_image_for_product \ No newline at end of file diff --git a/setup/shopinvader_category_image_for_product/setup.py b/setup/shopinvader_category_image_for_product/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/shopinvader_category_image_for_product/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/shopinvader_category_image_for_product/README.rst b/shopinvader_category_image_for_product/README.rst new file mode 100644 index 0000000000..b66094bb64 --- /dev/null +++ b/shopinvader_category_image_for_product/README.rst @@ -0,0 +1,57 @@ +====================================== +Shopinvader category image for product +====================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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-shopinvader%2Fodoo--shopinvader-lightgray.png?logo=github + :target: https://github.com/shopinvader/odoo-shopinvader/tree/10.0/shopinvader_cart_expiry + :alt: shopinvader/odoo-shopinvader + +|badge1| |badge2| |badge3| + +This ShopInvader submodule give the possibility to display the category image for products with no image. + +**Table of contents** + +.. contents:: + :local: + +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 +~~~~~~~ + +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Cédric PIGEON + +Maintainers +~~~~~~~~~~~ + +This module is part of the `shopinvader/odoo-shopinvader `_ project on GitHub. + +You are welcome to contribute. diff --git a/shopinvader_category_image_for_product/__init__.py b/shopinvader_category_image_for_product/__init__.py new file mode 100644 index 0000000000..cde864bae2 --- /dev/null +++ b/shopinvader_category_image_for_product/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/shopinvader_category_image_for_product/__manifest__.py b/shopinvader_category_image_for_product/__manifest__.py new file mode 100644 index 0000000000..0576513fc8 --- /dev/null +++ b/shopinvader_category_image_for_product/__manifest__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Shopinvader category image for product", + "summary": "Shopinvader Display category image for product", + "version": "10.0.1.0.0", + "category": "e-commerce", + "author": "ACSONE SA/NV", + "website": "https://github.com/shopinvader/odoo-shopinvader", + "license": "AGPL-3", + "installable": True, + "depends": [ + "shopinvader", + "shopinvader_search_engine", + "shopinvader_image", + ], + "data": ["data/ir_export.xml"], + "demo": [], +} diff --git a/shopinvader_category_image_for_product/data/ir_export.xml b/shopinvader_category_image_for_product/data/ir_export.xml new file mode 100644 index 0000000000..2a8eed7c9d --- /dev/null +++ b/shopinvader_category_image_for_product/data/ir_export.xml @@ -0,0 +1,9 @@ + + + + + image_categories + + + diff --git a/shopinvader_category_image_for_product/models/__init__.py b/shopinvader_category_image_for_product/models/__init__.py new file mode 100644 index 0000000000..6a236b64ff --- /dev/null +++ b/shopinvader_category_image_for_product/models/__init__.py @@ -0,0 +1 @@ +from . import shopinvader_variant diff --git a/shopinvader_category_image_for_product/models/shopinvader_variant.py b/shopinvader_category_image_for_product/models/shopinvader_variant.py new file mode 100644 index 0000000000..6fbd60a708 --- /dev/null +++ b/shopinvader_category_image_for_product/models/shopinvader_variant.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 ACSONE SA/NV () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models +from odoo.fields import first + + +class ShopinvaderVariant(models.Model): + _name = "shopinvader.variant" + _inherit = ["shopinvader.variant"] + + image_categories = fields.Serialized(compute="_compute_image_categories") + + @api.model + def _get_category_by_backend(self, record): + return record.shopinvader_categ_ids.filtered( + lambda c, v=record: c.record_id == v.categ_id + and c.index_id.backend_id == v.index_id.backend_id + and c.images + ) + + @api.multi + @api.depends( + "shopinvader_categ_ids", + "shopinvader_categ_ids.index_id", + "shopinvader_categ_ids.index_id.backend_id", + "shopinvader_categ_ids.images", + ) + def _compute_image_categories(self): + """ + Compute function for image_categories field. + This field should contains the value of images field into the first + category found (with same backend) + :return: + """ + for record in self: + category = self._get_category_by_backend(record) + record.image_categories = first(category).images or [] diff --git a/shopinvader_category_image_for_product/readme/CONTRIBUTORS.rst b/shopinvader_category_image_for_product/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..fe309b7d39 --- /dev/null +++ b/shopinvader_category_image_for_product/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Cédric PIGEON diff --git a/shopinvader_category_image_for_product/readme/DESCRIPTION.rst b/shopinvader_category_image_for_product/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..3f3e271fbf --- /dev/null +++ b/shopinvader_category_image_for_product/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This addon allows to display the category image when a product has no images.