From a8ec98471a4ebf622e2861dfeccf3c6f62e5d0ee Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Tue, 5 Sep 2023 15:32:11 +0200 Subject: [PATCH 01/42] [ADD] fs_product_multi_image: a drop-in replacement of storage_image_product --- fs_product_multi_image/README.rst | 35 +++ fs_product_multi_image/__init__.py | 1 + fs_product_multi_image/__manifest__.py | 25 ++ fs_product_multi_image/models/__init__.py | 7 + .../models/fs_product_category_image.py | 24 ++ .../models/fs_product_image.py | 50 ++++ fs_product_multi_image/models/image_tag.py | 27 ++ .../models/product_category.py | 19 ++ .../models/product_product.py | 68 +++++ .../models/product_template.py | 32 +++ .../models/product_template_attribute_line.py | 31 +++ .../readme/CONTRIBUTORS.rst | 7 + fs_product_multi_image/readme/DESCRIPTION.rst | 4 + fs_product_multi_image/readme/USAGE.rst | 13 + .../security/fs_product_category_image.xml | 34 +++ .../security/fs_product_image.xml | 34 +++ .../static/description/icon.png | Bin 0 -> 9455 bytes fs_product_multi_image/tests/__init__.py | 1 + .../tests/test_fs_product_multi_image.py | 259 ++++++++++++++++++ .../views/fs_product_category_image.xml | 21 ++ .../views/fs_product_image.xml | 32 +++ .../views/product_category.xml | 35 +++ .../views/product_product.xml | 57 ++++ .../views/product_template.xml | 49 ++++ 24 files changed, 865 insertions(+) create mode 100644 fs_product_multi_image/README.rst create mode 100644 fs_product_multi_image/__init__.py create mode 100644 fs_product_multi_image/__manifest__.py create mode 100644 fs_product_multi_image/models/__init__.py create mode 100644 fs_product_multi_image/models/fs_product_category_image.py create mode 100644 fs_product_multi_image/models/fs_product_image.py create mode 100644 fs_product_multi_image/models/image_tag.py create mode 100644 fs_product_multi_image/models/product_category.py create mode 100644 fs_product_multi_image/models/product_product.py create mode 100644 fs_product_multi_image/models/product_template.py create mode 100644 fs_product_multi_image/models/product_template_attribute_line.py create mode 100644 fs_product_multi_image/readme/CONTRIBUTORS.rst create mode 100644 fs_product_multi_image/readme/DESCRIPTION.rst create mode 100644 fs_product_multi_image/readme/USAGE.rst create mode 100644 fs_product_multi_image/security/fs_product_category_image.xml create mode 100644 fs_product_multi_image/security/fs_product_image.xml create mode 100644 fs_product_multi_image/static/description/icon.png create mode 100644 fs_product_multi_image/tests/__init__.py create mode 100644 fs_product_multi_image/tests/test_fs_product_multi_image.py create mode 100644 fs_product_multi_image/views/fs_product_category_image.xml create mode 100644 fs_product_multi_image/views/fs_product_image.xml create mode 100644 fs_product_multi_image/views/product_category.xml create mode 100644 fs_product_multi_image/views/product_product.xml create mode 100644 fs_product_multi_image/views/product_template.xml diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst new file mode 100644 index 0000000000..38929e8775 --- /dev/null +++ b/fs_product_multi_image/README.rst @@ -0,0 +1,35 @@ +**This file is going to be generated by oca-gen-addon-readme.** + +*Manual changes will be overwritten.* + +Please provide content in the ``readme`` directory: + +* **DESCRIPTION.rst** (required) +* INSTALL.rst (optional) +* CONFIGURE.rst (optional) +* **USAGE.rst** (optional, highly recommended) +* DEVELOP.rst (optional) +* ROADMAP.rst (optional) +* HISTORY.rst (optional, recommended) +* **CONTRIBUTORS.rst** (optional, highly recommended) +* CREDITS.rst (optional) + +Content of this README will also be drawn from the addon manifest, +from keys such as name, authors, maintainers, development_status, +and license. + +A good, one sentence summary in the manifest is also highly recommended. + + +Automatic changelog generation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +`HISTORY.rst` can be auto generated using `towncrier `_. + +Just put towncrier compatible changelog fragments into `readme/newsfragments` +and the changelog file will be automatically generated and updated when a new fragment is added. + +Please refer to `towncrier` documentation to know more. + +NOTE: the changelog will be automatically generated when using `/ocabot merge $option`. +If you need to run it manually, refer to `OCA/maintainer-tools README `_. diff --git a/fs_product_multi_image/__init__.py b/fs_product_multi_image/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/fs_product_multi_image/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py new file mode 100644 index 0000000000..43d7a70013 --- /dev/null +++ b/fs_product_multi_image/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Fs Product Multi Image", + "summary": """ + Manage multi images from extenal file system on product""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "ACSONE SA/NV,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/storage", + "depends": ["fs_base_multi_image", "product", "sales_team", "image_tag"], + "data": [ + "security/fs_product_category_image.xml", + "views/fs_product_category_image.xml", + "views/product_category.xml", + "security/fs_product_image.xml", + "views/fs_product_image.xml", + "views/product_product.xml", + "views/product_template.xml", + ], + "demo": [], + "maintainers": ["lmignon"], + "development_status": "Alpha", +} diff --git a/fs_product_multi_image/models/__init__.py b/fs_product_multi_image/models/__init__.py new file mode 100644 index 0000000000..17c75c0abd --- /dev/null +++ b/fs_product_multi_image/models/__init__.py @@ -0,0 +1,7 @@ +from . import fs_product_category_image +from . import fs_product_image +from . import image_tag +from . import product_category +from . import product_template +from . import product_product +from . import product_template_attribute_line diff --git a/fs_product_multi_image/models/fs_product_category_image.py b/fs_product_multi_image/models/fs_product_category_image.py new file mode 100644 index 0000000000..d0075cfd68 --- /dev/null +++ b/fs_product_multi_image/models/fs_product_category_image.py @@ -0,0 +1,24 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class FsProductCategoryImage(models.Model): + _name = "fs.product.category.image" + _inherit = "fs.image.relation.mixin" + _description = "Product Category Image" + + product_categ_id = fields.Many2one( + comodel_name="product.category", + string="Product Category", + ondelete="cascade", + index=True, + ) + + tag_id = fields.Many2one( + "image.tag", + string="Tag", + domain=[("apply_on", "=", "category")], + index=True, + ) diff --git a/fs_product_multi_image/models/fs_product_image.py b/fs_product_multi_image/models/fs_product_image.py new file mode 100644 index 0000000000..e5584be3a5 --- /dev/null +++ b/fs_product_multi_image/models/fs_product_image.py @@ -0,0 +1,50 @@ +# Copyright 2023 ACSONE SA/NV +# Copyright 2018 Akretion (http://www.akretion.com). +# @author Raphaël Reverdy +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class FsProductImage(models.Model): + _name = "fs.product.image" + _inherit = "fs.image.relation.mixin" + _description = "Product Image" + + product_tmpl_id = fields.Many2one( + comodel_name="product.template", + string="Product Template", + ondelete="cascade", + index=True, + ) + attribute_value_ids = fields.Many2many( + "product.attribute.value", + string="Attributes", + domain="[('id', 'in', available_attribute_value_ids)]", + ) + # This field will list all attribute value used by the template + # in order to filter the attribute value available for the current image + available_attribute_value_ids = fields.Many2many( + "product.attribute.value", + string="Available Attributes", + compute="_compute_available_attribute", + ) + tag_id = fields.Many2one( + "image.tag", + string="Tag", + domain=[("apply_on", "=", "product")], + index=True, + ) + + @api.depends("product_tmpl_id.attribute_line_ids.value_ids") + def _compute_available_attribute(self): + for rec in self: + rec.available_attribute_value_ids = rec.product_tmpl_id.mapped( + "attribute_line_ids.value_ids" + ) + + def _match_variant(self, variant): + variant_attribute_values = variant.mapped( + "product_template_attribute_value_ids.product_attribute_value_id" + ) + return not bool(self.attribute_value_ids - variant_attribute_values) diff --git a/fs_product_multi_image/models/image_tag.py b/fs_product_multi_image/models/image_tag.py new file mode 100644 index 0000000000..e608eb21d2 --- /dev/null +++ b/fs_product_multi_image/models/image_tag.py @@ -0,0 +1,27 @@ +# Copyright 2023 ACSONE SA/NV +# Copyright 2018 Akretion (http://www.akretion.com). +# @author Raphaël Reverdy +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + + +from odoo import api, fields, models + + +class ImageTag(models.Model): + _inherit = "image.tag" + + @api.model + def _get_default_apply_on(self): + active_model = self.env.context.get("active_model") + return ( + "product" + if active_model == "product.image.relation" + else "category" + if active_model == "category.image.relation" + else super()._get_default_apply_on() + ) + + apply_on = fields.Selection( + selection_add=[("product", "Product"), ("category", "Category")], + ondelete={"product": "cascade", "category": "cascade"}, + ) diff --git a/fs_product_multi_image/models/product_category.py b/fs_product_multi_image/models/product_category.py new file mode 100644 index 0000000000..e40c91a35a --- /dev/null +++ b/fs_product_multi_image/models/product_category.py @@ -0,0 +1,19 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + +from odoo.addons.fs_image.fields import FSImage + + +class ProductCategory(models.Model): + + _inherit = "product.category" + + image_ids = fields.One2many( + string="Images", + comodel_name="fs.product.category.image", + inverse_name="product_categ_id", + ) + image = FSImage(related="image_ids.image", readonly=True, store=False) + image_medium = FSImage(related="image_ids.image_medium", readonly=True, store=False) diff --git a/fs_product_multi_image/models/product_product.py b/fs_product_multi_image/models/product_product.py new file mode 100644 index 0000000000..7ea6e87b29 --- /dev/null +++ b/fs_product_multi_image/models/product_product.py @@ -0,0 +1,68 @@ +# Copyright 2017 Akretion (http://www.akretion.com). +# @author Sébastien BEAU +# Copyright 2021 Camptocamp SA (http://www.camptocamp.com) +# @author Simone Orsi +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from odoo import api, fields, models + +from odoo.addons.fs_image.fields import FSImage + + +class ProductProduct(models.Model): + _inherit = "product.product" + + variant_image_ids = fields.Many2many( + "fs.product.image", + compute="_compute_variant_image_ids", + store=True, + string="Variant Images", + ) + main_image_id = fields.Many2one( + string="Main Image", + comodel_name="fs.product.image", + compute="_compute_main_image_id", + # Store it to improve perfs + store=True, + ) + image = FSImage(related="main_image_id.image", readonly=True, store=False) + image_medium = FSImage( + related="main_image_id.image_medium", readonly=True, store=False + ) + + @api.depends( + "product_tmpl_id.image_ids", + "product_tmpl_id.image_ids.sequence", + "product_tmpl_id.image_ids.attribute_value_ids", + "product_template_attribute_value_ids", + ) + def _compute_variant_image_ids(self): + for variant in self: + img_relations = set() + # Not sure sorting is needed here + sorted_image_relations = variant.image_ids.sorted( + key=lambda i: (i.sequence, i.id) + ) + for image_rel in sorted_image_relations: + if image_rel._match_variant(variant): + img_relations.add(image_rel.id) + variant.variant_image_ids = list(img_relations) if img_relations else False + + @api.depends("variant_image_ids", "variant_image_ids.sequence") + def _compute_main_image_id(self): + for record in self: + record.main_image_id = record._get_main_image() + + def _select_main_image(self, images): + return fields.first(images.sorted(key=lambda i: (i.sequence, i.id))).id + + def _get_main_image(self): + match_image = self.variant_image_ids.filtered( + lambda i: i.attribute_value_ids + == self.mapped( + "product_template_attribute_value_ids.product_attribute_value_id" + ) + ) + if match_image: + return self._select_main_image(match_image) + return self._select_main_image(self.variant_image_ids) diff --git a/fs_product_multi_image/models/product_template.py b/fs_product_multi_image/models/product_template.py new file mode 100644 index 0000000000..38b749d97a --- /dev/null +++ b/fs_product_multi_image/models/product_template.py @@ -0,0 +1,32 @@ +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + +from odoo.addons.fs_image.fields import FSImage + + +class ProductTemplate(models.Model): + + _inherit = "product.template" + + image_ids = fields.One2many( + string="Images", comodel_name="fs.product.image", inverse_name="product_tmpl_id" + ) + main_image_id = fields.Many2one( + string="Main Image", + comodel_name="fs.product.image", + compute="_compute_main_image_id", + # Store it to improve perfs + store=True, + ) + image = FSImage(related="main_image_id.image", readonly=True, store=False) + image_medium = FSImage( + related="main_image_id.image_medium", readonly=True, store=False + ) + + @api.depends("image_ids", "image_ids.sequence") + def _compute_main_image_id(self): + for record in self: + image_ids = record.image_ids.sorted(key=lambda i: (i.sequence, i.id)) + record.main_image_id = image_ids and image_ids[0] or None diff --git a/fs_product_multi_image/models/product_template_attribute_line.py b/fs_product_multi_image/models/product_template_attribute_line.py new file mode 100644 index 0000000000..b6b6915066 --- /dev/null +++ b/fs_product_multi_image/models/product_template_attribute_line.py @@ -0,0 +1,31 @@ +# Copyright 2023 ACSONE SA/NV +# Copyright 2017 Akretion (http://www.akretion.com). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import models + + +class ProductTemplateAttributeLine(models.Model): + + _inherit = "product.template.attribute.line" + + def write(self, values): + res = super().write(values) + if "value_ids" in values: + product_image_attribute_value_ids = self.product_tmpl_id.image_ids.mapped( + "attribute_value_ids" + ).filtered(lambda x: x.attribute_id == self.attribute_id) + available_attribute_values_ids = self.value_ids + to_remove = product_image_attribute_value_ids.filtered( + lambda x: x not in available_attribute_values_ids + ) + if to_remove: + for image in self.product_tmpl_id.image_ids: + image.attribute_value_ids -= to_remove + return res + + def unlink(self): + for line in self: + for image in line.product_tmpl_id.image_ids: + image.attribute_value_ids -= line.value_ids + return super().unlink() diff --git a/fs_product_multi_image/readme/CONTRIBUTORS.rst b/fs_product_multi_image/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..33d0863bc0 --- /dev/null +++ b/fs_product_multi_image/readme/CONTRIBUTORS.rst @@ -0,0 +1,7 @@ +* Laurent Mignon +* Raphaël Reverdy +* Denis Roussel +* Quentin Groulard +* `Camptocamp `_ + + * Iván Todorovich diff --git a/fs_product_multi_image/readme/DESCRIPTION.rst b/fs_product_multi_image/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..b1ae446b13 --- /dev/null +++ b/fs_product_multi_image/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +Attach images to products and categories and store them on an external +filesystem instead of the database. + +This addon is a drop-in replacement for the **storage_image_product** addon. diff --git a/fs_product_multi_image/readme/USAGE.rst b/fs_product_multi_image/readme/USAGE.rst new file mode 100644 index 0000000000..43c2b473dd --- /dev/null +++ b/fs_product_multi_image/readme/USAGE.rst @@ -0,0 +1,13 @@ +On the category and product form, a new tab allows you to add images to the +related object. The images can be specific to the model or you can use an +existing one. + +On the link forms, you can add an image tag in addition to the image. In +the specific case of the product template, you can also specify for which +variant attribute values the image is valid. + +On the product variant form, the image tag will be automatically filled whith +the image tag of the product template for the same variant attribute values. + +In every case, a main image is computed and used as the default image for the +object. It depends on the sequence of the images (first one is the main one). diff --git a/fs_product_multi_image/security/fs_product_category_image.xml b/fs_product_multi_image/security/fs_product_category_image.xml new file mode 100644 index 0000000000..20c6ec6d6b --- /dev/null +++ b/fs_product_multi_image/security/fs_product_category_image.xml @@ -0,0 +1,34 @@ + + + + + + fs.product.category.image access read + + + + + + + + + fs.product.category.image access system admin + + + + + + + + + fs.product.category.image access sales manager + + + + + + + + + diff --git a/fs_product_multi_image/security/fs_product_image.xml b/fs_product_multi_image/security/fs_product_image.xml new file mode 100644 index 0000000000..4ecbabac5d --- /dev/null +++ b/fs_product_multi_image/security/fs_product_image.xml @@ -0,0 +1,34 @@ + + + + + + fs.product.image access read + + + + + + + + + fs.product.image access erp manager + + + + + + + + + fs.product.image access sales manager + + + + + + + + + diff --git a/fs_product_multi_image/static/description/icon.png b/fs_product_multi_image/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 zcmW++2RxMjAAjx~&dlBk9S+%}OXg)AGE&Cb*&}d0jUxM@u(PQx^-s)697TX`ehR4?GS^qbkof1cslKgkU)h65qZ9Oc=ml_0temigYLJfnz{IDzUf>bGs4N!v3=Z3jMq&A#7%rM5eQ#dc?k~! zVpnB`o+K7|Al`Q_U;eD$B zfJtP*jH`siUq~{KE)`jP2|#TUEFGRryE2`i0**z#*^6~AI|YzIWy$Cu#CSLW3q=GA z6`?GZymC;dCPk~rBS%eCb`5OLr;RUZ;D`}um=H)BfVIq%7VhiMr)_#G0N#zrNH|__ zc+blN2UAB0=617@>_u;MPHN;P;N#YoE=)R#i$k_`UAA>WWCcEVMh~L_ zj--gtp&|K1#58Yz*AHCTMziU1Jzt_jG0I@qAOHsk$2}yTmVkBp_eHuY$A9)>P6o~I z%aQ?!(GqeQ-Y+b0I(m9pwgi(IIZZzsbMv+9w{PFtd_<_(LA~0H(xz{=FhLB@(1&qHA5EJw1>>=%q2f&^X>IQ{!GJ4e9U z&KlB)z(84HmNgm2hg2C0>WM{E(DdPr+EeU_N@57;PC2&DmGFW_9kP&%?X4}+xWi)( z;)z%wI5>D4a*5XwD)P--sPkoY(a~WBw;E~AW`Yue4kFa^LM3X`8x|}ZUeMnqr}>kH zG%WWW>3ml$Yez?i%)2pbKPI7?5o?hydokgQyZsNEr{a|mLdt;X2TX(#B1j35xPnPW z*bMSSOauW>o;*=kO8ojw91VX!qoOQb)zHJ!odWB}d+*K?#sY_jqPdg{Sm2HdYzdEx zOGVPhVRTGPtv0o}RfVP;Nd(|CB)I;*t&QO8h zFfekr30S!-LHmV_Su-W+rEwYXJ^;6&3|L$mMC8*bQptyOo9;>Qb9Q9`ySe3%V$A*9 zeKEe+b0{#KWGp$F+tga)0RtI)nhMa-K@JS}2krK~n8vJ=Ngm?R!9G<~RyuU0d?nz# z-5EK$o(!F?hmX*2Yt6+coY`6jGbb7tF#6nHA zuKk=GGJ;ZwON1iAfG$E#Y7MnZVmrY|j0eVI(DN_MNFJmyZ|;w4tf@=CCDZ#5N_0K= z$;R~bbk?}TpfDjfB&aiQ$VA}s?P}xPERJG{kxk5~R`iRS(SK5d+Xs9swCozZISbnS zk!)I0>t=A<-^z(cmSFz3=jZ23u13X><0b)P)^1T_))Kr`e!-pb#q&J*Q`p+B6la%C zuVl&0duN<;uOsB3%T9Fp8t{ED108<+W(nOZd?gDnfNBC3>M8WE61$So|P zVvqH0SNtDTcsUdzaMDpT=Ty0pDHHNL@Z0w$Y`XO z2M-_r1S+GaH%pz#Uy0*w$Vdl=X=rQXEzO}d6J^R6zjM1u&c9vYLvLp?W7w(?np9x1 zE_0JSAJCPB%i7p*Wvg)pn5T`8k3-uR?*NT|J`eS#_#54p>!p(mLDvmc-3o0mX*mp_ zN*AeS<>#^-{S%W<*mz^!X$w_2dHWpcJ6^j64qFBft-o}o_Vx80o0>}Du;>kLts;$8 zC`7q$QI(dKYG`Wa8#wl@V4jVWBRGQ@1dr-hstpQL)Tl+aqVpGpbSfN>5i&QMXfiZ> zaA?T1VGe?rpQ@;+pkrVdd{klI&jVS@I5_iz!=UMpTsa~mBga?1r}aRBm1WS;TT*s0f0lY=JBl66Upy)-k4J}lh=P^8(SXk~0xW=T9v*B|gzIhN z>qsO7dFd~mgxAy4V?&)=5ieYq?zi?ZEoj)&2o)RLy=@hbCRcfT5jigwtQGE{L*8<@Yd{zg;CsL5mvzfDY}P-wos_6PfprFVaeqNE%h zKZhLtcQld;ZD+>=nqN~>GvROfueSzJD&BE*}XfU|H&(FssBqY=hPCt`d zH?@s2>I(|;fcW&YM6#V#!kUIP8$Nkdh0A(bEVj``-AAyYgwY~jB zT|I7Bf@%;7aL7Wf4dZ%VqF$eiaC38OV6oy3Z#TER2G+fOCd9Iaoy6aLYbPTN{XRPz z;U!V|vBf%H!}52L2gH_+j;`bTcQRXB+y9onc^wLm5wi3-Be}U>k_u>2Eg$=k!(l@I zcCg+flakT2Nej3i0yn+g+}%NYb?ta;R?(g5SnwsQ49U8Wng8d|{B+lyRcEDvR3+`O{zfmrmvFrL6acVP%yG98X zo&+VBg@px@i)%o?dG(`T;n*$S5*rnyiR#=wW}}GsAcfyQpE|>a{=$Hjg=-*_K;UtD z#z-)AXwSRY?OPefw^iI+ z)AXz#PfEjlwTes|_{sB?4(O@fg0AJ^g8gP}ex9Ucf*@_^J(s_5jJV}c)s$`Myn|Kd z$6>}#q^n{4vN@+Os$m7KV+`}c%4)4pv@06af4-x5#wj!KKb%caK{A&Y#Rfs z-po?Dcb1({W=6FKIUirH&(yg=*6aLCekcKwyfK^JN5{wcA3nhO(o}SK#!CINhI`-I z1)6&n7O&ZmyFMuNwvEic#IiOAwNkR=u5it{B9n2sAJV5pNhar=j5`*N!Na;c7g!l$ z3aYBqUkqqTJ=Re-;)s!EOeij=7SQZ3Hq}ZRds%IM*PtM$wV z@;rlc*NRK7i3y5BETSKuumEN`Xu_8GP1Ri=OKQ$@I^ko8>H6)4rjiG5{VBM>B|%`&&s^)jS|-_95&yc=GqjNo{zFkw%%HHhS~e=s zD#sfS+-?*t|J!+ozP6KvtOl!R)@@-z24}`9{QaVLD^9VCSR2b`b!KC#o;Ki<+wXB6 zx3&O0LOWcg4&rv4QG0)4yb}7BFSEg~=IR5#ZRj8kg}dS7_V&^%#Do==#`u zpy6{ox?jWuR(;pg+f@mT>#HGWHAJRRDDDv~@(IDw&R>9643kK#HN`!1vBJHnC+RM&yIh8{gG2q zA%e*U3|N0XSRa~oX-3EAneep)@{h2vvd3Xvy$7og(sayr@95+e6~Xvi1tUqnIxoIH zVWo*OwYElb#uyW{Imam6f2rGbjR!Y3`#gPqkv57dB6K^wRGxc9B(t|aYDGS=m$&S!NmCtrMMaUg(c zc2qC=2Z`EEFMW-me5B)24AqF*bV5Dr-M5ig(l-WPS%CgaPzs6p_gnCIvTJ=Y<6!gT zVt@AfYCzjjsMEGi=rDQHo0yc;HqoRNnNFeWZgcm?f;cp(6CNylj36DoL(?TS7eU#+ z7&mfr#y))+CJOXQKUMZ7QIdS9@#-}7y2K1{8)cCt0~-X0O!O?Qx#E4Og+;A2SjalQ zs7r?qn0H044=sDN$SRG$arw~n=+T_DNdSrarmu)V6@|?1-ZB#hRn`uilTGPJ@fqEy zGt(f0B+^JDP&f=r{#Y_wi#AVDf-y!RIXU^0jXsFpf>=Ji*TeqSY!H~AMbJdCGLhC) zn7Rx+sXw6uYj;WRYrLd^5IZq@6JI1C^YkgnedZEYy<&4(z%Q$5yv#Boo{AH8n$a zhb4Y3PWdr269&?V%uI$xMcUrMzl=;w<_nm*qr=c3Rl@i5wWB;e-`t7D&c-mcQl7x! zZWB`UGcw=Y2=}~wzrfLx=uet<;m3~=8I~ZRuzvMQUQdr+yTV|ATf1Uuomr__nDf=X zZ3WYJtHp_ri(}SQAPjv+Y+0=fH4krOP@S&=zZ-t1jW1o@}z;xk8 z(Nz1co&El^HK^NrhVHa-_;&88vTU>_J33=%{if;BEY*J#1n59=07jrGQ#IP>@u#3A z;!q+E1Rj3ZJ+!4bq9F8PXJ@yMgZL;>&gYA0%_Kbi8?S=XGM~dnQZQ!yBSgcZhY96H zrWnU;k)qy`rX&&xlDyA%(a1Hhi5CWkmg(`Gb%m(HKi-7Z!LKGRP_B8@`7&hdDy5n= z`OIxqxiVfX@OX1p(mQu>0Ai*v_cTMiw4qRt3~NBvr9oBy0)r>w3p~V0SCm=An6@3n)>@z!|o-$HvDK z|3D2ZMJkLE5loMKl6R^ez@Zz%S$&mbeoqH5`Bb){Ei21q&VP)hWS2tjShfFtGE+$z zzCR$P#uktu+#!w)cX!lWN1XU%K-r=s{|j?)Akf@q#3b#{6cZCuJ~gCxuMXRmI$nGtnH+-h z+GEi!*X=AP<|fG`1>MBdTb?28JYc=fGvAi2I<$B(rs$;eoJCyR6_bc~p!XR@O-+sD z=eH`-ye})I5ic1eL~TDmtfJ|8`0VJ*Yr=hNCd)G1p2MMz4C3^Mj?7;!w|Ly%JqmuW zlIEW^Ft%z?*|fpXda>Jr^1noFZEwFgVV%|*XhH@acv8rdGxeEX{M$(vG{Zw+x(ei@ zmfXb22}8-?Fi`vo-YVrTH*C?a8%M=Hv9MqVH7H^J$KsD?>!SFZ;ZsvnHr_gn=7acz z#W?0eCdVhVMWN12VV^$>WlQ?f;P^{(&pYTops|btm6aj>_Uz+hqpGwB)vWp0Cf5y< zft8-je~nn?W11plq}N)4A{l8I7$!ks_x$PXW-2XaRFswX_BnF{R#6YIwMhAgd5F9X zGmwdadS6(a^fjHtXg8=l?Rc0Sm%hk6E9!5cLVloEy4eh(=FwgP`)~I^5~pBEWo+F6 zSf2ncyMurJN91#cJTy_u8Y}@%!bq1RkGC~-bV@SXRd4F{R-*V`bS+6;W5vZ(&+I<9$;-V|eNfLa5n-6% z2(}&uGRF;p92eS*sE*oR$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^WYu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k&YOi-3|1QKB z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zl&#s4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@QS0TEL_?njX|@vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fvjSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8ul%rG z-wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnHGH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01Fmx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}26NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_NhT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV*vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+QP?#mov zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/fs_product_multi_image/tests/__init__.py b/fs_product_multi_image/tests/__init__.py new file mode 100644 index 0000000000..c686b22ff1 --- /dev/null +++ b/fs_product_multi_image/tests/__init__.py @@ -0,0 +1 @@ +from . import test_fs_product_multi_image diff --git a/fs_product_multi_image/tests/test_fs_product_multi_image.py b/fs_product_multi_image/tests/test_fs_product_multi_image.py new file mode 100644 index 0000000000..aabcdd6702 --- /dev/null +++ b/fs_product_multi_image/tests/test_fs_product_multi_image.py @@ -0,0 +1,259 @@ +# Copyright 2017 Akretion (http://www.akretion.com). +# Copyright 2023 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import base64 +import io + +from PIL import Image + +from odoo.tests.common import TransactionCase + + +class TestFsProductMultiImage(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls.white_image = cls._create_image(16, 16, color="#FFFFFF") + cls.black_image = cls._create_image(16, 16, color="#000000") + cls.logo_image = cls._create_image(16, 16, color="#FFA500") + cls.template = cls.env.ref("product.product_product_4_product_template") + cls.product_a = cls.env.ref("product.product_product_4") + cls.product_b = cls.env.ref("product.product_product_4b") + cls.product_c = cls.env.ref("product.product_product_4c") + cls.image_white = cls.env["fs.image"].create( + { + "image": { + "filename": "white.png", + "content": base64.b64encode(cls.white_image), + } + } + ) + cls.image_logo = cls.env["fs.image"].create( + { + "image": { + "filename": "logo.png", + "content": base64.b64encode(cls.logo_image), + } + } + ) + cls.image_black = cls.env["fs.image"].create( + { + "image": { + "filename": "black.png", + "content": base64.b64encode(cls.black_image), + } + } + ) + + def setUp(self): + super().setUp() + self.temp_dir = self.env["fs.storage"].create( + { + "name": "Temp FS Storage", + "protocol": "memory", + "code": "mem_dir", + "directory_path": "/tmp/", + "model_xmlids": "fs_product_multi_image.model_fs_product_category_image," + "fs_product_multi_image.model_fs_product_image", + } + ) + + @classmethod + def _create_image(cls, width, height, color="#4169E1", img_format="PNG"): + f = io.BytesIO() + Image.new("RGB", (width, height), color).save(f, img_format) + f.seek(0) + return f.read() + + def test_available_attribute_value(self): + # The template have already 5 attribute values + # see demo data of ipad + image = self.env["fs.product.image"].new({"product_tmpl_id": self.template.id}) + self.assertEqual(len(image.available_attribute_value_ids), 5) + + def test_add_image_for_all_variant(self): + self.assertEqual(len(self.product_a.variant_image_ids), 0) + image = self.env["fs.product.image"].create( + { + "product_tmpl_id": self.template.id, + "specific_image": { + "filename": "white.png", + "content": base64.b64encode(self.white_image), + }, + } + ) + self.assertEqual(self.product_a.image.getvalue(), self.white_image) + self.assertEqual(self.product_a.variant_image_ids, image) + self.assertEqual(self.product_a.main_image_id, image) + self.assertEqual(self.product_b.image.getvalue(), self.white_image) + self.assertEqual(self.product_b.variant_image_ids, image) + self.assertEqual(self.product_b.main_image_id, image) + self.assertEqual(self.product_c.image.getvalue(), self.white_image) + self.assertEqual(self.product_c.variant_image_ids, image) + self.assertEqual(self.product_c.main_image_id, image) + + def test_add_image_for_white_variant(self): + image = self.env["fs.product.image"].create( + { + "product_tmpl_id": self.template.id, + "image_id": self.image_white.id, + "attribute_value_ids": [ + (6, 0, [self.env.ref("product.product_attribute_value_3").id]) + ], + } + ) + # White product should have the image + self.assertEqual(self.product_a.variant_image_ids, image) + self.assertEqual(self.product_a.main_image_id, image) + self.assertEqual(self.product_c.variant_image_ids, image) + self.assertEqual(self.product_c.main_image_id, image) + # Black product should not have the image + self.assertEqual(len(self.product_b.variant_image_ids), 0) + self.assertFalse(self.product_b.main_image_id) + + def _create_multiple_images(self): + logo = self.env["fs.product.image"].create( + { + "product_tmpl_id": self.template.id, + "image_id": self.image_logo.id, + "sequence": 10, + "link_existing": True, + } + ) + image_wh = self.env["fs.product.image"].create( + { + "product_tmpl_id": self.template.id, + "image_id": self.image_white.id, + "attribute_value_ids": [ + (6, 0, [self.env.ref("product.product_attribute_value_3").id]) + ], + "sequence": 2, + "link_existing": True, + } + ) + image_bk = self.env["fs.product.image"].create( + { + "product_tmpl_id": self.template.id, + "image_id": self.image_black.id, + "attribute_value_ids": [ + (6, 0, [self.env.ref("product.product_attribute_value_4").id]) + ], + "sequence": 1, + "link_existing": True, + } + ) + return logo, image_wh, image_bk + + def test_add_image_for_white_and_black_variant(self): + logo, image_wh, image_bk = self._create_multiple_images() + # White product should have the white image and the logo + self.assertEqual(self.product_a.variant_image_ids, image_wh + logo) + self.assertEqual(self.product_c.variant_image_ids, image_wh + logo) + # Black product should have the black image and the logo + self.assertEqual(self.product_b.variant_image_ids, image_bk + logo) + + def _test_main_images(self, expected): + for image, products in expected: + for prod in products: + self.assertEqual(prod.image.getvalue(), image) + + def test_main_image_and_urls(self): + logo, image_wh, image_bk = self._create_multiple_images() + # Template should have the one w/ lower sequence + expected = ((self.black_image, self.template),) + self._test_main_images(expected) + # Should have different main images + expected = ( + (self.white_image, self.product_a + self.product_c), + (self.black_image, self.product_b), + ) + self._test_main_images(expected) + # Change image order, change main image + logo.sequence = 0 + image_wh.sequence = 10 + expected = ((self.logo_image, self.template),) + self._test_main_images(expected) + expected = ( + (self.logo_image, self.product_a + self.product_c), + (self.logo_image, self.product_b), + ) + self._test_main_images(expected) + + def test_main_image_attribute(self): + """ + Attach the image to the template and check the first image of the + variant is the one with same attributes + """ + self.env["fs.product.image"].create( + { + "product_tmpl_id": self.template.id, + "image_id": self.image_logo.id, + "sequence": 1, + "link_existing": True, + } + ) + self.env["fs.product.image"].create( + { + "product_tmpl_id": self.template.id, + "image_id": self.image_white.id, + "attribute_value_ids": [ + ( + 6, + 0, + [ + self.env.ref("product.product_attribute_value_4").id, + self.env.ref("product.product_attribute_value_1").id, + ], + ) + ], + "sequence": 10, + "link_existing": True, + } + ) + # The variant should not take the only with the lowest sequence but + # the one with same attributes + expected = ((self.white_image, self.product_b),) + self._test_main_images(expected) + expected = ((self.logo_image, self.product_c + self.product_a),) + self._test_main_images(expected) + + def test_drop_template_attribute_value_propagation_to_image(self): + black_image = self.env["fs.product.image"].create( + { + "product_tmpl_id": self.template.id, + "image_id": self.image_black.id, + "attribute_value_ids": [ + ( + 6, + 0, + [ + self.env.ref("product.product_attribute_value_4").id, + self.env.ref("product.product_attribute_value_1").id, + ], + ) + ], + "sequence": 10, + "link_existing": True, + } + ) + # Remove Color black from variant tab: + self.template.attribute_line_ids.sudo().filtered( + lambda x: x.display_name == "Color" + ).value_ids -= self.env.ref("product.product_attribute_value_4") + # Attribute black is removed from image: + self.assertTrue( + self.env.ref("product.product_attribute_value_4") + not in black_image.attribute_value_ids + ) + + # Remove Leg attribute line from variant tab: + self.template.attribute_line_ids.sudo().filtered( + lambda x: x.display_name == "Legs" + ).unlink() + # Product image attribute values from Legs are removed: + self.assertTrue( + self.env.ref("product.product_attribute_value_1") + not in black_image.attribute_value_ids + ) diff --git a/fs_product_multi_image/views/fs_product_category_image.xml b/fs_product_multi_image/views/fs_product_category_image.xml new file mode 100644 index 0000000000..acaba220aa --- /dev/null +++ b/fs_product_multi_image/views/fs_product_category_image.xml @@ -0,0 +1,21 @@ + + + + + + product.category.fs.image.form + fs.product.category.image + + primary + + + + + + + + diff --git a/fs_product_multi_image/views/fs_product_image.xml b/fs_product_multi_image/views/fs_product_image.xml new file mode 100644 index 0000000000..e60cf84bda --- /dev/null +++ b/fs_product_multi_image/views/fs_product_image.xml @@ -0,0 +1,32 @@ + + + + + + fs.product.image.form + fs.product.image + + primary + + + + + + + + + + diff --git a/fs_product_multi_image/views/product_category.xml b/fs_product_multi_image/views/product_category.xml new file mode 100644 index 0000000000..c4e3757fd2 --- /dev/null +++ b/fs_product_multi_image/views/product_category.xml @@ -0,0 +1,35 @@ + + + + + + product.category.form + product.category + + +
+ +
+ + + + + + + + + + + +
+
+ + + +
diff --git a/fs_product_multi_image/views/product_product.xml b/fs_product_multi_image/views/product_product.xml new file mode 100644 index 0000000000..b7534f26ad --- /dev/null +++ b/fs_product_multi_image/views/product_product.xml @@ -0,0 +1,57 @@ + + + + + product.product + + + + + kanban_image('product.product', 'image_medium', record.id.raw_value) + + + + + product.product + + + + 1 + + + + + + +

+ If you need to edit the images, do it from the product template. +

+ +
+
+
+
+ + product.product + + + + 1 + + + + + + +
diff --git a/fs_product_multi_image/views/product_template.xml b/fs_product_multi_image/views/product_template.xml new file mode 100644 index 0000000000..7298ae3583 --- /dev/null +++ b/fs_product_multi_image/views/product_template.xml @@ -0,0 +1,49 @@ + + + + + product.template + + + + + 1 + + + + + + + + + + + + + + + + + + + product.template + + + + + kanban_image('product.template', 'image_medium', record.id.raw_value) + + + + From e035126ff19af1eac424356156b568d8b1c431c8 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Sun, 24 Sep 2023 07:58:37 +0000 Subject: [PATCH 02/42] [UPD] Update fs_product_multi_image.pot --- .../i18n/fs_product_multi_image.pot | 210 ++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 fs_product_multi_image/i18n/fs_product_multi_image.pot diff --git a/fs_product_multi_image/i18n/fs_product_multi_image.pot b/fs_product_multi_image/i18n/fs_product_multi_image.pot new file mode 100644 index 0000000000..77c5698989 --- /dev/null +++ b/fs_product_multi_image/i18n/fs_product_multi_image.pot @@ -0,0 +1,210 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fs_product_multi_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_image_tag__apply_on +msgid "Apply On" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__attribute_value_ids +msgid "Attributes" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__available_attribute_value_ids +msgid "Available Attributes" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__category +msgid "Category" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_uid +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_uid +msgid "Created by" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_date +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_date +msgid "Created on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__display_name +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__display_name +msgid "Display Name" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__id +msgid "ID" +msgstr "" + +#. module: fs_product_multi_image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view +msgid "If you need to edit the images, do it from the product template." +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +msgid "Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium +msgid "Image 128" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_image_tag +msgid "Image Tag" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_ids +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_ids +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_ids +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_category_form_view +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view +msgid "Images" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update +msgid "Last Modified on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_date +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_date +msgid "Last Updated on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__link_existing +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__link_existing +msgid "Link Existing" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_id +msgid "Linked image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__main_image_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__main_image_id +msgid "Main Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__mimetype +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__mimetype +msgid "Mimetype" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__name +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__name +msgid "Name" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_template +#: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__product +msgid "Product" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_category +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__product_categ_id +msgid "Product Category" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_fs_product_category_image +msgid "Product Category Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_fs_product_image +msgid "Product Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__product_tmpl_id +msgid "Product Template" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_template_attribute_line +msgid "Product Template Attribute Line" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_product +msgid "Product Variant" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__sequence +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__sequence +msgid "Sequence" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image +msgid "Specific Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium +msgid "Specific Image 128" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__tag_id +msgid "Tag" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__variant_image_ids +msgid "Variant Images" +msgstr "" From 549410ae43d875911dfb26961693c4566dad9d9b Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 24 Sep 2023 08:01:25 +0000 Subject: [PATCH 03/42] [BOT] post-merge updates --- fs_product_multi_image/README.rst | 128 ++++- .../static/description/index.html | 452 ++++++++++++++++++ 2 files changed, 556 insertions(+), 24 deletions(-) create mode 100644 fs_product_multi_image/static/description/index.html diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index 38929e8775..8c4eb9e286 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -1,35 +1,115 @@ -**This file is going to be generated by oca-gen-addon-readme.** +====================== +Fs Product Multi Image +====================== -*Manual changes will be overwritten.* +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:bf3233ffeb46c6ee5d359f599b9a2a9cbbea6a8076f9acb078ccb18c8cb726dd + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -Please provide content in the ``readme`` directory: +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |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%2Fstorage-lightgray.png?logo=github + :target: https://github.com/OCA/storage/tree/16.0/fs_product_multi_image + :alt: OCA/storage +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/storage&target_branch=16.0 + :alt: Try me on Runboat -* **DESCRIPTION.rst** (required) -* INSTALL.rst (optional) -* CONFIGURE.rst (optional) -* **USAGE.rst** (optional, highly recommended) -* DEVELOP.rst (optional) -* ROADMAP.rst (optional) -* HISTORY.rst (optional, recommended) -* **CONTRIBUTORS.rst** (optional, highly recommended) -* CREDITS.rst (optional) +|badge1| |badge2| |badge3| |badge4| |badge5| -Content of this README will also be drawn from the addon manifest, -from keys such as name, authors, maintainers, development_status, -and license. +Attach images to products and categories and store them on an external +filesystem instead of the database. -A good, one sentence summary in the manifest is also highly recommended. +This addon is a drop-in replacement for the **storage_image_product** addon. +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ -Automatic changelog generation -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**Table of contents** -`HISTORY.rst` can be auto generated using `towncrier `_. +.. contents:: + :local: -Just put towncrier compatible changelog fragments into `readme/newsfragments` -and the changelog file will be automatically generated and updated when a new fragment is added. +Usage +===== -Please refer to `towncrier` documentation to know more. +On the category and product form, a new tab allows you to add images to the +related object. The images can be specific to the model or you can use an +existing one. -NOTE: the changelog will be automatically generated when using `/ocabot merge $option`. -If you need to run it manually, refer to `OCA/maintainer-tools README `_. +On the link forms, you can add an image tag in addition to the image. In +the specific case of the product template, you can also specify for which +variant attribute values the image is valid. + +On the product variant form, the image tag will be automatically filled whith +the image tag of the product template for the same variant attribute values. + +In every case, a main image is computed and used as the default image for the +object. It depends on the sequence of the images (first one is the main one). + +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 +~~~~~~~ + +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Laurent Mignon +* Raphaël Reverdy +* Denis Roussel +* Quentin Groulard +* `Camptocamp `_ + + * Iván Todorovich + +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. + +.. |maintainer-lmignon| image:: https://github.com/lmignon.png?size=40px + :target: https://github.com/lmignon + :alt: lmignon + +Current `maintainer `__: + +|maintainer-lmignon| + +This module is part of the `OCA/storage `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html new file mode 100644 index 0000000000..70a670336b --- /dev/null +++ b/fs_product_multi_image/static/description/index.html @@ -0,0 +1,452 @@ + + + + + + +Fs Product Multi Image + + + +
+

Fs Product Multi Image

+ + +

Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

+

Attach images to products and categories and store them on an external +filesystem instead of the database.

+

This addon is a drop-in replacement for the storage_image_product addon.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Usage

+

On the category and product form, a new tab allows you to add images to the +related object. The images can be specific to the model or you can use an +existing one.

+

On the link forms, you can add an image tag in addition to the image. In +the specific case of the product template, you can also specify for which +variant attribute values the image is valid.

+

On the product variant form, the image tag will be automatically filled whith +the image tag of the product template for the same variant attribute values.

+

In every case, a main image is computed and used as the default image for the +object. It depends on the sequence of the images (first one is the main one).

+
+
+

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

+
    +
  • ACSONE SA/NV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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.

+

Current maintainer:

+

lmignon

+

This module is part of the OCA/storage project on GitHub.

+

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

+
+
+
+ + From 53fcec72f9648275a93fc7746a84145072fe3a0b Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Mon, 25 Sep 2023 12:11:13 +0200 Subject: [PATCH 04/42] [IMP] image_tag: Removes dependency on sale module --- fs_product_multi_image/__manifest__.py | 5 +++-- .../tests/test_fs_product_multi_image.py | 8 +++++++- fs_product_multi_image/views/image_tag.xml | 10 ++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 fs_product_multi_image/views/image_tag.xml diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index 43d7a70013..d3d72e215c 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -12,10 +12,11 @@ "depends": ["fs_base_multi_image", "product", "sales_team", "image_tag"], "data": [ "security/fs_product_category_image.xml", - "views/fs_product_category_image.xml", - "views/product_category.xml", "security/fs_product_image.xml", + "views/fs_product_category_image.xml", "views/fs_product_image.xml", + "views/image_tag.xml", + "views/product_category.xml", "views/product_product.xml", "views/product_template.xml", ], diff --git a/fs_product_multi_image/tests/test_fs_product_multi_image.py b/fs_product_multi_image/tests/test_fs_product_multi_image.py index aabcdd6702..7d4ecfffd2 100644 --- a/fs_product_multi_image/tests/test_fs_product_multi_image.py +++ b/fs_product_multi_image/tests/test_fs_product_multi_image.py @@ -46,6 +46,9 @@ def setUpClass(cls): } } ) + cls.is_sale_addon_installed = cls.env["ir.module.module"].search( + [("name", "=", "sale"), ("state", "=", "installed")] + ) def setUp(self): super().setUp() @@ -71,7 +74,10 @@ def test_available_attribute_value(self): # The template have already 5 attribute values # see demo data of ipad image = self.env["fs.product.image"].new({"product_tmpl_id": self.template.id}) - self.assertEqual(len(image.available_attribute_value_ids), 5) + expected = 4 + if self.is_sale_addon_installed: + expected += 1 + self.assertEqual(len(image.available_attribute_value_ids), expected) def test_add_image_for_all_variant(self): self.assertEqual(len(self.product_a.variant_image_ids), 0) diff --git a/fs_product_multi_image/views/image_tag.xml b/fs_product_multi_image/views/image_tag.xml new file mode 100644 index 0000000000..925ab53167 --- /dev/null +++ b/fs_product_multi_image/views/image_tag.xml @@ -0,0 +1,10 @@ + + + + + From 0c4b6e4dfb639802d8346f4d3e01d28516f46f17 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Mon, 25 Sep 2023 10:56:02 +0000 Subject: [PATCH 05/42] [UPD] Update fs_product_multi_image.pot --- fs_product_multi_image/i18n/fs_product_multi_image.pot | 1 + 1 file changed, 1 insertion(+) diff --git a/fs_product_multi_image/i18n/fs_product_multi_image.pot b/fs_product_multi_image/i18n/fs_product_multi_image.pot index 77c5698989..13735c0a3d 100644 --- a/fs_product_multi_image/i18n/fs_product_multi_image.pot +++ b/fs_product_multi_image/i18n/fs_product_multi_image.pot @@ -82,6 +82,7 @@ msgstr "" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_image_tag +#: model:ir.ui.menu,name:fs_product_multi_image.menu_image_tag msgid "Image Tag" msgstr "" From 24b15a3e5cb34e5c1bda345fe67683302f8d37f0 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 25 Sep 2023 10:59:47 +0000 Subject: [PATCH 06/42] [BOT] post-merge updates --- fs_product_multi_image/README.rst | 2 +- fs_product_multi_image/__manifest__.py | 2 +- fs_product_multi_image/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index 8c4eb9e286..e37c06b8a2 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -7,7 +7,7 @@ Fs Product Multi Image !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:bf3233ffeb46c6ee5d359f599b9a2a9cbbea6a8076f9acb078ccb18c8cb726dd + !! source digest: sha256:04191dc8bd79efbbdc6817de4322bcbee0438dce6f1d5b09e77c15513e3b64b7 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index d3d72e215c..d33ceb9cf3 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -5,7 +5,7 @@ "name": "Fs Product Multi Image", "summary": """ Manage multi images from extenal file system on product""", - "version": "16.0.1.0.0", + "version": "16.0.1.0.1", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/storage", diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index 70a670336b..4bd645afb8 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -367,7 +367,7 @@

Fs Product Multi Image

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:bf3233ffeb46c6ee5d359f599b9a2a9cbbea6a8076f9acb078ccb18c8cb726dd +!! source digest: sha256:04191dc8bd79efbbdc6817de4322bcbee0438dce6f1d5b09e77c15513e3b64b7 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

Attach images to products and categories and store them on an external From 60de873f27ef1e37711e32ee5b543dc87569a236 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Wed, 4 Oct 2023 09:22:31 +0200 Subject: [PATCH 07/42] [FIX] fs_product_multi_image: Sort variant_image_ids by sequence Ensures the variant_image_ids are sorted by sequence and name. Before this change, the order was random and could change between runs. --- .../models/product_product.py | 14 ++++++-------- .../readme/newsfragments/.gitignore | 0 .../readme/newsfragments/282.bugfix | 2 ++ .../tests/test_fs_product_multi_image.py | 17 +++++++++++++++++ 4 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 fs_product_multi_image/readme/newsfragments/.gitignore create mode 100644 fs_product_multi_image/readme/newsfragments/282.bugfix diff --git a/fs_product_multi_image/models/product_product.py b/fs_product_multi_image/models/product_product.py index 7ea6e87b29..12b6a9cf71 100644 --- a/fs_product_multi_image/models/product_product.py +++ b/fs_product_multi_image/models/product_product.py @@ -38,15 +38,13 @@ class ProductProduct(models.Model): ) def _compute_variant_image_ids(self): for variant in self: - img_relations = set() - # Not sure sorting is needed here - sorted_image_relations = variant.image_ids.sorted( - key=lambda i: (i.sequence, i.id) + variant_image_ids = variant.image_ids.filtered( + lambda i: i._match_variant(variant) ) - for image_rel in sorted_image_relations: - if image_rel._match_variant(variant): - img_relations.add(image_rel.id) - variant.variant_image_ids = list(img_relations) if img_relations else False + variant_image_ids = variant_image_ids.sorted( + key=lambda i: (i.sequence, i.name) + ) + variant.variant_image_ids = variant_image_ids @api.depends("variant_image_ids", "variant_image_ids.sequence") def _compute_main_image_id(self): diff --git a/fs_product_multi_image/readme/newsfragments/.gitignore b/fs_product_multi_image/readme/newsfragments/.gitignore new file mode 100644 index 0000000000..e69de29bb2 diff --git a/fs_product_multi_image/readme/newsfragments/282.bugfix b/fs_product_multi_image/readme/newsfragments/282.bugfix new file mode 100644 index 0000000000..91473571d8 --- /dev/null +++ b/fs_product_multi_image/readme/newsfragments/282.bugfix @@ -0,0 +1,2 @@ +Ensures the variant_image_ids are sorted by sequence and name. Before this +change, the order was random and could change between runs. diff --git a/fs_product_multi_image/tests/test_fs_product_multi_image.py b/fs_product_multi_image/tests/test_fs_product_multi_image.py index 7d4ecfffd2..4d58f43116 100644 --- a/fs_product_multi_image/tests/test_fs_product_multi_image.py +++ b/fs_product_multi_image/tests/test_fs_product_multi_image.py @@ -160,6 +160,23 @@ def test_add_image_for_white_and_black_variant(self): # Black product should have the black image and the logo self.assertEqual(self.product_b.variant_image_ids, image_bk + logo) + def test_image_variant_sequence(self): + logo, image_wh, image_bk = self._create_multiple_images() + # White product should have the white image and the logo + self.assertEqual(self.product_a.variant_image_ids, image_wh + logo) + # white product should have images sorted by sequence + self.assertListEqual( + self.product_a.variant_image_ids.mapped("sequence"), + [image_wh.sequence, logo.sequence], + ) + # change sequence + image_wh.sequence = 20 + logo.sequence = 10 + self.assertListEqual( + self.product_a.variant_image_ids.mapped("sequence"), + [logo.sequence, image_wh.sequence], + ) + def _test_main_images(self, expected): for image, products in expected: for prod in products: From b42fdb1d7861213d9c62249c66d788b06043d761 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 4 Oct 2023 07:52:30 +0000 Subject: [PATCH 08/42] [BOT] post-merge updates --- fs_product_multi_image/README.rst | 13 ++++++- fs_product_multi_image/__manifest__.py | 2 +- fs_product_multi_image/readme/HISTORY.rst | 7 ++++ .../readme/newsfragments/282.bugfix | 2 - .../static/description/index.html | 37 +++++++++++++------ 5 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 fs_product_multi_image/readme/HISTORY.rst delete mode 100644 fs_product_multi_image/readme/newsfragments/282.bugfix diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index e37c06b8a2..d29c858bf6 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -7,7 +7,7 @@ Fs Product Multi Image !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:04191dc8bd79efbbdc6817de4322bcbee0438dce6f1d5b09e77c15513e3b64b7 + !! source digest: sha256:df1c70da592eb6cbd718959231d1bb4aa9ca1f4d69c4a81baf5b3d9a794d01a7 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png @@ -60,6 +60,17 @@ the image tag of the product template for the same variant attribute values. In every case, a main image is computed and used as the default image for the object. It depends on the sequence of the images (first one is the main one). +Changelog +========= + +16.0.1.0.2 (2023-10-04) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- Ensures the variant_image_ids are sorted by sequence and name. Before this + change, the order was random and could change between runs. (`#282 `_) + Bug Tracker =========== diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index d33ceb9cf3..a615745dc3 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -5,7 +5,7 @@ "name": "Fs Product Multi Image", "summary": """ Manage multi images from extenal file system on product""", - "version": "16.0.1.0.1", + "version": "16.0.1.0.2", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/storage", diff --git a/fs_product_multi_image/readme/HISTORY.rst b/fs_product_multi_image/readme/HISTORY.rst new file mode 100644 index 0000000000..3e28f368c6 --- /dev/null +++ b/fs_product_multi_image/readme/HISTORY.rst @@ -0,0 +1,7 @@ +16.0.1.0.2 (2023-10-04) +~~~~~~~~~~~~~~~~~~~~~~~ + +**Bugfixes** + +- Ensures the variant_image_ids are sorted by sequence and name. Before this + change, the order was random and could change between runs. (`#282 `_) diff --git a/fs_product_multi_image/readme/newsfragments/282.bugfix b/fs_product_multi_image/readme/newsfragments/282.bugfix deleted file mode 100644 index 91473571d8..0000000000 --- a/fs_product_multi_image/readme/newsfragments/282.bugfix +++ /dev/null @@ -1,2 +0,0 @@ -Ensures the variant_image_ids are sorted by sequence and name. Before this -change, the order was random and could change between runs. diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index 4bd645afb8..20916af812 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -367,7 +367,7 @@

Fs Product Multi Image

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:04191dc8bd79efbbdc6817de4322bcbee0438dce6f1d5b09e77c15513e3b64b7 +!! source digest: sha256:df1c70da592eb6cbd718959231d1bb4aa9ca1f4d69c4a81baf5b3d9a794d01a7 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

Attach images to products and categories and store them on an external @@ -383,11 +383,15 @@

Fs Product Multi Image

+
+

Changelog

+
+

16.0.1.0.2 (2023-10-04)

+

Bugfixes

+
    +
  • Ensures the variant_image_ids are sorted by sequence and name. Before this +change, the order was random and could change between runs. (#282)
  • +
+
+
-

Bug Tracker

+

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 @@ -414,15 +429,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • ACSONE SA/NV
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose From c7cac4175743bc9588d11fbcf4b4d86345e57d5c Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Thu, 26 Oct 2023 19:39:55 +0000 Subject: [PATCH 09/42] Added translation using Weblate (Spanish) --- fs_product_multi_image/i18n/es.po | 212 ++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 fs_product_multi_image/i18n/es.po diff --git a/fs_product_multi_image/i18n/es.po b/fs_product_multi_image/i18n/es.po new file mode 100644 index 0000000000..9156828bfe --- /dev/null +++ b/fs_product_multi_image/i18n/es.po @@ -0,0 +1,212 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fs_product_multi_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\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: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_image_tag__apply_on +msgid "Apply On" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__attribute_value_ids +msgid "Attributes" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__available_attribute_value_ids +msgid "Available Attributes" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__category +msgid "Category" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_uid +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_uid +msgid "Created by" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_date +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_date +msgid "Created on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__display_name +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__display_name +msgid "Display Name" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__id +msgid "ID" +msgstr "" + +#. module: fs_product_multi_image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view +msgid "If you need to edit the images, do it from the product template." +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +msgid "Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium +msgid "Image 128" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_image_tag +#: model:ir.ui.menu,name:fs_product_multi_image.menu_image_tag +msgid "Image Tag" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_ids +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_ids +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_ids +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_category_form_view +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view +msgid "Images" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update +msgid "Last Modified on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_date +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_date +msgid "Last Updated on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__link_existing +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__link_existing +msgid "Link Existing" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_id +msgid "Linked image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__main_image_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__main_image_id +msgid "Main Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__mimetype +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__mimetype +msgid "Mimetype" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__name +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__name +msgid "Name" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_template +#: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__product +msgid "Product" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_category +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__product_categ_id +msgid "Product Category" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_fs_product_category_image +msgid "Product Category Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_fs_product_image +msgid "Product Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__product_tmpl_id +msgid "Product Template" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_template_attribute_line +msgid "Product Template Attribute Line" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_product +msgid "Product Variant" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__sequence +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__sequence +msgid "Sequence" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image +msgid "Specific Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium +msgid "Specific Image 128" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__tag_id +msgid "Tag" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__variant_image_ids +msgid "Variant Images" +msgstr "" From f6cf5769b8abcd306e126a3a59bafbe339217971 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Thu, 26 Oct 2023 19:43:13 +0000 Subject: [PATCH 10/42] Translated using Weblate (Spanish) Currently translated at 100.0% (33 of 33 strings) Translation: storage-16.0/storage-16.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image/es/ --- fs_product_multi_image/i18n/es.po | 69 ++++++++++++++++--------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/fs_product_multi_image/i18n/es.po b/fs_product_multi_image/i18n/es.po index 9156828bfe..97d7b84544 100644 --- a/fs_product_multi_image/i18n/es.po +++ b/fs_product_multi_image/i18n/es.po @@ -6,62 +6,65 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-10-29 00:15+0000\n" +"Last-Translator: Ivorra78 \n" "Language-Team: none\n" "Language: es\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.17\n" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_image_tag__apply_on msgid "Apply On" -msgstr "" +msgstr "Aplicar en" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__attribute_value_ids msgid "Attributes" -msgstr "" +msgstr "Atributos" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__available_attribute_value_ids msgid "Available Attributes" -msgstr "" +msgstr "Atributos Disponibles" #. module: fs_product_multi_image #: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__category msgid "Category" -msgstr "" +msgstr "Categoría" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_uid #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_uid msgid "Created by" -msgstr "" +msgstr "Creado por" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_date #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_date msgid "Created on" -msgstr "" +msgstr "Creado el" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__display_name #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__display_name msgid "Display Name" -msgstr "" +msgstr "Mostrar Nombre" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__id #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__id msgid "ID" -msgstr "" +msgstr "ID (identificación)" #. module: fs_product_multi_image #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view msgid "If you need to edit the images, do it from the product template." msgstr "" +"Si necesita editar las imágenes, hágalo desde la plantilla del producto." #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image @@ -70,7 +73,7 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image msgid "Image" -msgstr "" +msgstr "Imagen" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_medium @@ -79,13 +82,13 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium msgid "Image 128" -msgstr "" +msgstr "Imagen 128" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_image_tag #: model:ir.ui.menu,name:fs_product_multi_image.menu_image_tag msgid "Image Tag" -msgstr "" +msgstr "Etiqueta de la Imagen" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_ids @@ -95,118 +98,118 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Images" -msgstr "" +msgstr "Imágenes" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update msgid "Last Modified on" -msgstr "" +msgstr "Última Modificación el" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Actualizado por Última vez por" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_date #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_date msgid "Last Updated on" -msgstr "" +msgstr "Última Actualización el" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__link_existing #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__link_existing msgid "Link Existing" -msgstr "" +msgstr "Enlace Existente" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_id #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_id msgid "Linked image" -msgstr "" +msgstr "Imagen vinculada" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__main_image_id #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__main_image_id msgid "Main Image" -msgstr "" +msgstr "Imagen Principal" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__mimetype #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__mimetype msgid "Mimetype" -msgstr "" +msgstr "Tipo Mimo" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__name #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__name msgid "Name" -msgstr "" +msgstr "Nombre" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_template #: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__product msgid "Product" -msgstr "" +msgstr "Producto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_category #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__product_categ_id msgid "Product Category" -msgstr "" +msgstr "Categoría de Producto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_fs_product_category_image msgid "Product Category Image" -msgstr "" +msgstr "Imagen de Categoría de Producto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_fs_product_image msgid "Product Image" -msgstr "" +msgstr "Imagen del Producto" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__product_tmpl_id msgid "Product Template" -msgstr "" +msgstr "Plantilla del Producto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_template_attribute_line msgid "Product Template Attribute Line" -msgstr "" +msgstr "Plantilla de Línea de Atributo de Producto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_product msgid "Product Variant" -msgstr "" +msgstr "Variante del Producto" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__sequence #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__sequence msgid "Sequence" -msgstr "" +msgstr "Secuencia" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image msgid "Specific Image" -msgstr "" +msgstr "Imagen Específica" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium msgid "Specific Image 128" -msgstr "" +msgstr "Imagen Específica 128" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__tag_id msgid "Tag" -msgstr "" +msgstr "Etiqueta" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__variant_image_ids msgid "Variant Images" -msgstr "" +msgstr "Imágenes de Variante" From 66dcc2b0973e3356fc969ce9dfc4dbb65a855b46 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 27 Nov 2023 16:46:53 +0000 Subject: [PATCH 11/42] Added translation using Weblate (Italian) --- fs_product_multi_image/i18n/it.po | 212 ++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 fs_product_multi_image/i18n/it.po diff --git a/fs_product_multi_image/i18n/it.po b/fs_product_multi_image/i18n/it.po new file mode 100644 index 0000000000..b3c32ae480 --- /dev/null +++ b/fs_product_multi_image/i18n/it.po @@ -0,0 +1,212 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fs_product_multi_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\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: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_image_tag__apply_on +msgid "Apply On" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__attribute_value_ids +msgid "Attributes" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__available_attribute_value_ids +msgid "Available Attributes" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__category +msgid "Category" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_uid +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_uid +msgid "Created by" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_date +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_date +msgid "Created on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__display_name +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__display_name +msgid "Display Name" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__id +msgid "ID" +msgstr "" + +#. module: fs_product_multi_image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view +msgid "If you need to edit the images, do it from the product template." +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +msgid "Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium +msgid "Image 128" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_image_tag +#: model:ir.ui.menu,name:fs_product_multi_image.menu_image_tag +msgid "Image Tag" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_ids +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_ids +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_ids +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_category_form_view +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view +msgid "Images" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update +msgid "Last Modified on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_date +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_date +msgid "Last Updated on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__link_existing +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__link_existing +msgid "Link Existing" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_id +msgid "Linked image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__main_image_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__main_image_id +msgid "Main Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__mimetype +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__mimetype +msgid "Mimetype" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__name +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__name +msgid "Name" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_template +#: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__product +msgid "Product" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_category +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__product_categ_id +msgid "Product Category" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_fs_product_category_image +msgid "Product Category Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_fs_product_image +msgid "Product Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__product_tmpl_id +msgid "Product Template" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_template_attribute_line +msgid "Product Template Attribute Line" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_product +msgid "Product Variant" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__sequence +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__sequence +msgid "Sequence" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image +msgid "Specific Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium +msgid "Specific Image 128" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__tag_id +msgid "Tag" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__variant_image_ids +msgid "Variant Images" +msgstr "" From bf10a4a4b07082627fcf9f3615756b6cae566f06 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 29 Nov 2023 18:15:34 +0000 Subject: [PATCH 12/42] Translated using Weblate (Italian) Currently translated at 100.0% (33 of 33 strings) Translation: storage-16.0/storage-16.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image/it/ --- fs_product_multi_image/i18n/it.po | 70 ++++++++++++++++--------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/fs_product_multi_image/i18n/it.po b/fs_product_multi_image/i18n/it.po index b3c32ae480..099b8a3686 100644 --- a/fs_product_multi_image/i18n/it.po +++ b/fs_product_multi_image/i18n/it.po @@ -6,62 +6,64 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-11-29 20:33+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\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.17\n" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_image_tag__apply_on msgid "Apply On" -msgstr "" +msgstr "Applica a" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__attribute_value_ids msgid "Attributes" -msgstr "" +msgstr "Attributi" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__available_attribute_value_ids msgid "Available Attributes" -msgstr "" +msgstr "Attributi disponibili" #. module: fs_product_multi_image #: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__category msgid "Category" -msgstr "" +msgstr "Categoria" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_uid #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_uid msgid "Created by" -msgstr "" +msgstr "Creato da" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_date #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_date msgid "Created on" -msgstr "" +msgstr "Creato il" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__display_name #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__display_name msgid "Display Name" -msgstr "" +msgstr "Nome visualizzato" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__id #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__id msgid "ID" -msgstr "" +msgstr "ID" #. module: fs_product_multi_image #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view msgid "If you need to edit the images, do it from the product template." -msgstr "" +msgstr "Se è necessario modificare le immagini, farlo dal modello prodotto." #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image @@ -70,7 +72,7 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image msgid "Image" -msgstr "" +msgstr "Immgine" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_medium @@ -79,13 +81,13 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium msgid "Image 128" -msgstr "" +msgstr "Immagine 128" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_image_tag #: model:ir.ui.menu,name:fs_product_multi_image.menu_image_tag msgid "Image Tag" -msgstr "" +msgstr "Etichetta immagine" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_ids @@ -95,118 +97,118 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Images" -msgstr "" +msgstr "Immagini" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update msgid "Last Modified on" -msgstr "" +msgstr "Ultima modifica il" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Ultimo aggiornamento di" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_date #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_date msgid "Last Updated on" -msgstr "" +msgstr "Ultimo aggiornamento il" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__link_existing #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__link_existing msgid "Link Existing" -msgstr "" +msgstr "Collegamento esistente" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_id #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_id msgid "Linked image" -msgstr "" +msgstr "Immagine collegata" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__main_image_id #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__main_image_id msgid "Main Image" -msgstr "" +msgstr "Immagine principale" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__mimetype #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__mimetype msgid "Mimetype" -msgstr "" +msgstr "Tipo MIME" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__name #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__name msgid "Name" -msgstr "" +msgstr "Nome" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_template #: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__product msgid "Product" -msgstr "" +msgstr "Prodotto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_category #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__product_categ_id msgid "Product Category" -msgstr "" +msgstr "Categoria Prodotto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_fs_product_category_image msgid "Product Category Image" -msgstr "" +msgstr "Immagine categoria prodotto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_fs_product_image msgid "Product Image" -msgstr "" +msgstr "Immagine prodotto" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__product_tmpl_id msgid "Product Template" -msgstr "" +msgstr "Modello prodotto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_template_attribute_line msgid "Product Template Attribute Line" -msgstr "" +msgstr "Riga attributo modello prodotto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_product msgid "Product Variant" -msgstr "" +msgstr "Variante prodotto" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__sequence #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__sequence msgid "Sequence" -msgstr "" +msgstr "Sequenza" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image msgid "Specific Image" -msgstr "" +msgstr "Immagine specifica" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium msgid "Specific Image 128" -msgstr "" +msgstr "Immagine specifica 128" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__tag_id msgid "Tag" -msgstr "" +msgstr "Etichetta" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__variant_image_ids msgid "Variant Images" -msgstr "" +msgstr "Immagine variante" From 4711e0a9091fd4877a1b8c55e89b80f2533f71e4 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 6 Dec 2023 07:28:49 +0000 Subject: [PATCH 13/42] Translated using Weblate (Italian) Currently translated at 100.0% (33 of 33 strings) Translation: storage-16.0/storage-16.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image/it/ --- fs_product_multi_image/i18n/it.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs_product_multi_image/i18n/it.po b/fs_product_multi_image/i18n/it.po index 099b8a3686..0edcafdd8d 100644 --- a/fs_product_multi_image/i18n/it.po +++ b/fs_product_multi_image/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-11-29 20:33+0000\n" +"PO-Revision-Date: 2023-12-06 09:33+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -157,7 +157,7 @@ msgstr "Prodotto" #: model:ir.model,name:fs_product_multi_image.model_product_category #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__product_categ_id msgid "Product Category" -msgstr "Categoria Prodotto" +msgstr "Categoria prodotto" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_fs_product_category_image From 010784d776b25cdf41aeb92bb88a982345aa9608 Mon Sep 17 00:00:00 2001 From: mymage Date: Tue, 12 Dec 2023 08:40:40 +0000 Subject: [PATCH 14/42] Translated using Weblate (Italian) Currently translated at 100.0% (33 of 33 strings) Translation: storage-16.0/storage-16.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image/it/ --- fs_product_multi_image/i18n/it.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs_product_multi_image/i18n/it.po b/fs_product_multi_image/i18n/it.po index 0edcafdd8d..9cf0e39f51 100644 --- a/fs_product_multi_image/i18n/it.po +++ b/fs_product_multi_image/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-12-06 09:33+0000\n" +"PO-Revision-Date: 2023-12-12 11:33+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -72,7 +72,7 @@ msgstr "Se è necessario modificare le immagini, farlo dal modello prodotto." #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image msgid "Image" -msgstr "Immgine" +msgstr "Immagine" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_medium From c7775a5523492b63fdb508308df83f2a83bf9ff2 Mon Sep 17 00:00:00 2001 From: Benjamin Willig Date: Wed, 17 Jan 2024 09:19:56 +0100 Subject: [PATCH 15/42] [FIX] updated image and image_medium label to prevent odoo warning with same label for image/image_1920 and image_medium/image_128 for product.template and product.product --- fs_product_multi_image/views/product_template.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/fs_product_multi_image/views/product_template.xml b/fs_product_multi_image/views/product_template.xml index 7298ae3583..39f4b96c7a 100644 --- a/fs_product_multi_image/views/product_template.xml +++ b/fs_product_multi_image/views/product_template.xml @@ -13,6 +13,7 @@ From 801958ec679d79dc337a5b589735dc5df7c019aa Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 17 Jan 2024 11:00:24 +0000 Subject: [PATCH 16/42] [UPD] Update fs_product_multi_image.pot --- .../i18n/fs_product_multi_image.pot | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/fs_product_multi_image/i18n/fs_product_multi_image.pot b/fs_product_multi_image/i18n/fs_product_multi_image.pot index 13735c0a3d..1e50d186ba 100644 --- a/fs_product_multi_image/i18n/fs_product_multi_image.pot +++ b/fs_product_multi_image/i18n/fs_product_multi_image.pot @@ -63,11 +63,7 @@ msgid "If you need to edit the images, do it from the product template." msgstr "" #. module: fs_product_multi_image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Image" msgstr "" @@ -77,7 +73,16 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium -msgid "Image 128" +msgid "Image (128)" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +msgid "Image (original)" msgstr "" #. module: fs_product_multi_image @@ -196,7 +201,7 @@ msgstr "" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium -msgid "Specific Image 128" +msgid "Specific Image (128)" msgstr "" #. module: fs_product_multi_image From 1db624f82adf4be6c287d7328d5a22ef4af15a59 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 17 Jan 2024 11:03:00 +0000 Subject: [PATCH 17/42] [BOT] post-merge updates --- fs_product_multi_image/README.rst | 2 +- fs_product_multi_image/__manifest__.py | 2 +- fs_product_multi_image/static/description/index.html | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index d29c858bf6..e455dccb9f 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -7,7 +7,7 @@ Fs Product Multi Image !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:df1c70da592eb6cbd718959231d1bb4aa9ca1f4d69c4a81baf5b3d9a794d01a7 + !! source digest: sha256:008960826fc58759cb1f3dacc03349bd06f1207f472afb51b6351095bdbf9c8f !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index a615745dc3..6901f213dc 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -5,7 +5,7 @@ "name": "Fs Product Multi Image", "summary": """ Manage multi images from extenal file system on product""", - "version": "16.0.1.0.2", + "version": "16.0.1.0.3", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/storage", diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index 20916af812..7b6e1df1f6 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -1,4 +1,3 @@ - @@ -367,7 +366,7 @@

Fs Product Multi Image

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:df1c70da592eb6cbd718959231d1bb4aa9ca1f4d69c4a81baf5b3d9a794d01a7 +!! source digest: sha256:008960826fc58759cb1f3dacc03349bd06f1207f472afb51b6351095bdbf9c8f !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

Attach images to products and categories and store them on an external From e8a29a8d39b68128c94a65e998188911bf198a1d Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 17 Jan 2024 11:03:13 +0000 Subject: [PATCH 18/42] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: storage-16.0/storage-16.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image/ --- fs_product_multi_image/i18n/es.po | 29 ++++++++++++++++++++--------- fs_product_multi_image/i18n/it.po | 29 ++++++++++++++++++++--------- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/fs_product_multi_image/i18n/es.po b/fs_product_multi_image/i18n/es.po index 97d7b84544..c0fe33e968 100644 --- a/fs_product_multi_image/i18n/es.po +++ b/fs_product_multi_image/i18n/es.po @@ -67,11 +67,7 @@ msgstr "" "Si necesita editar las imágenes, hágalo desde la plantilla del producto." #. module: fs_product_multi_image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Image" msgstr "Imagen" @@ -81,8 +77,17 @@ msgstr "Imagen" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium -msgid "Image 128" -msgstr "Imagen 128" +msgid "Image (128)" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +msgid "Image (original)" +msgstr "" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_image_tag @@ -200,8 +205,8 @@ msgstr "Imagen Específica" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium -msgid "Specific Image 128" -msgstr "Imagen Específica 128" +msgid "Specific Image (128)" +msgstr "" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id @@ -213,3 +218,9 @@ msgstr "Etiqueta" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__variant_image_ids msgid "Variant Images" msgstr "Imágenes de Variante" + +#~ msgid "Image 128" +#~ msgstr "Imagen 128" + +#~ msgid "Specific Image 128" +#~ msgstr "Imagen Específica 128" diff --git a/fs_product_multi_image/i18n/it.po b/fs_product_multi_image/i18n/it.po index 9cf0e39f51..650aecd488 100644 --- a/fs_product_multi_image/i18n/it.po +++ b/fs_product_multi_image/i18n/it.po @@ -66,11 +66,7 @@ msgid "If you need to edit the images, do it from the product template." msgstr "Se è necessario modificare le immagini, farlo dal modello prodotto." #. module: fs_product_multi_image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Image" msgstr "Immagine" @@ -80,8 +76,17 @@ msgstr "Immagine" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium -msgid "Image 128" -msgstr "Immagine 128" +msgid "Image (128)" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +msgid "Image (original)" +msgstr "" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_image_tag @@ -199,8 +204,8 @@ msgstr "Immagine specifica" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium -msgid "Specific Image 128" -msgstr "Immagine specifica 128" +msgid "Specific Image (128)" +msgstr "" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id @@ -212,3 +217,9 @@ msgstr "Etichetta" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__variant_image_ids msgid "Variant Images" msgstr "Immagine variante" + +#~ msgid "Image 128" +#~ msgstr "Immagine 128" + +#~ msgid "Specific Image 128" +#~ msgstr "Immagine specifica 128" From 1ea074b6f85ca562994968e3ad48dfffb02e8a1b Mon Sep 17 00:00:00 2001 From: mymage Date: Thu, 18 Jan 2024 08:51:22 +0000 Subject: [PATCH 19/42] Translated using Weblate (Italian) Currently translated at 100.0% (34 of 34 strings) Translation: storage-16.0/storage-16.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image/it/ --- fs_product_multi_image/i18n/it.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs_product_multi_image/i18n/it.po b/fs_product_multi_image/i18n/it.po index 650aecd488..0b7b0f28ac 100644 --- a/fs_product_multi_image/i18n/it.po +++ b/fs_product_multi_image/i18n/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-12-12 11:33+0000\n" +"PO-Revision-Date: 2024-01-18 11:33+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -77,7 +77,7 @@ msgstr "Immagine" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium msgid "Image (128)" -msgstr "" +msgstr "Immagine 128" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image @@ -86,7 +86,7 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image msgid "Image (original)" -msgstr "" +msgstr "Immagine (originale)" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_image_tag @@ -205,7 +205,7 @@ msgstr "Immagine specifica" #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium msgid "Specific Image (128)" -msgstr "" +msgstr "Immagine specifica (128)" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id From 564640faba7fd09a570efb036d3acbbba1abbff8 Mon Sep 17 00:00:00 2001 From: Benjamin Willig Date: Tue, 23 Jan 2024 11:07:57 +0100 Subject: [PATCH 20/42] [FIX] prevent an exception when adding new virtual records, unable to compare integer and NewId --- fs_product_multi_image/models/product_template.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs_product_multi_image/models/product_template.py b/fs_product_multi_image/models/product_template.py index 38b749d97a..f080db1b9e 100644 --- a/fs_product_multi_image/models/product_template.py +++ b/fs_product_multi_image/models/product_template.py @@ -28,5 +28,7 @@ class ProductTemplate(models.Model): @api.depends("image_ids", "image_ids.sequence") def _compute_main_image_id(self): for record in self: - image_ids = record.image_ids.sorted(key=lambda i: (i.sequence, i.id)) + image_ids = record.image_ids.sorted( + key=lambda i: f"{i.sequence},{str(i.id)}" + ) record.main_image_id = image_ids and image_ids[0] or None From 960f5cdb43daaca7845ac5fe8390da19d28d4dc4 Mon Sep 17 00:00:00 2001 From: Benjamin Willig Date: Tue, 23 Jan 2024 11:13:38 +0100 Subject: [PATCH 21/42] [ADD] new widget to allow image upload through drag and drop or file selection --- .../views/fs_product_image.xml | 29 +++++++++++++++++++ .../views/product_template.xml | 6 +++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/fs_product_multi_image/views/fs_product_image.xml b/fs_product_multi_image/views/fs_product_image.xml index e60cf84bda..0fd3fa8b54 100644 --- a/fs_product_multi_image/views/fs_product_image.xml +++ b/fs_product_multi_image/views/fs_product_image.xml @@ -29,4 +29,33 @@ + + fs.product.image.kanban + fs.product.image + + primary + + + + + +

+ Image +
+ + +
+ +
+
+ + + diff --git a/fs_product_multi_image/views/product_template.xml b/fs_product_multi_image/views/product_template.xml index 39f4b96c7a..e5e6aa6ffc 100644 --- a/fs_product_multi_image/views/product_template.xml +++ b/fs_product_multi_image/views/product_template.xml @@ -20,7 +20,11 @@ - + From 84c55600066e5aedc34220737812a97daf0eac60 Mon Sep 17 00:00:00 2001 From: Benjamin Willig Date: Tue, 23 Jan 2024 15:16:44 +0100 Subject: [PATCH 22/42] [ADD] allow user to select where he want to store the image --- fs_product_multi_image/views/product_template.xml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/fs_product_multi_image/views/product_template.xml b/fs_product_multi_image/views/product_template.xml index e5e6aa6ffc..b2af520227 100644 --- a/fs_product_multi_image/views/product_template.xml +++ b/fs_product_multi_image/views/product_template.xml @@ -20,11 +20,7 @@ - + From e9ef823ae8f45a700e831293cb12b3a6b8b3671d Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 25 Jan 2024 17:20:41 +0000 Subject: [PATCH 23/42] [UPD] Update fs_product_multi_image.pot --- fs_product_multi_image/i18n/fs_product_multi_image.pot | 1 + 1 file changed, 1 insertion(+) diff --git a/fs_product_multi_image/i18n/fs_product_multi_image.pot b/fs_product_multi_image/i18n/fs_product_multi_image.pot index 1e50d186ba..7d4543be0d 100644 --- a/fs_product_multi_image/i18n/fs_product_multi_image.pot +++ b/fs_product_multi_image/i18n/fs_product_multi_image.pot @@ -63,6 +63,7 @@ msgid "If you need to edit the images, do it from the product template." msgstr "" #. module: fs_product_multi_image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.fs_product_image_kanban_view #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Image" msgstr "" From de8571f790a13fca8c010f318c4a12dfb7e19a1d Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 25 Jan 2024 17:23:12 +0000 Subject: [PATCH 24/42] [BOT] post-merge updates --- fs_product_multi_image/README.rst | 2 +- fs_product_multi_image/__manifest__.py | 2 +- fs_product_multi_image/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index e455dccb9f..f57b60481e 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -7,7 +7,7 @@ Fs Product Multi Image !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:008960826fc58759cb1f3dacc03349bd06f1207f472afb51b6351095bdbf9c8f + !! source digest: sha256:bed699bf549014b6928170fad28e6d6f5a68c7a3c5a50d3eed4ae6cb91291bc1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index 6901f213dc..a900ddf8f8 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -5,7 +5,7 @@ "name": "Fs Product Multi Image", "summary": """ Manage multi images from extenal file system on product""", - "version": "16.0.1.0.3", + "version": "16.0.1.1.0", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/storage", diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index 7b6e1df1f6..9b52971fc6 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -366,7 +366,7 @@

Fs Product Multi Image

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:008960826fc58759cb1f3dacc03349bd06f1207f472afb51b6351095bdbf9c8f +!! source digest: sha256:bed699bf549014b6928170fad28e6d6f5a68c7a3c5a50d3eed4ae6cb91291bc1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

Attach images to products and categories and store them on an external From 638235d63d8093016258f0e7368bae5d5cefdd71 Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 25 Jan 2024 17:23:22 +0000 Subject: [PATCH 25/42] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: storage-16.0/storage-16.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image/ --- fs_product_multi_image/i18n/es.po | 1 + fs_product_multi_image/i18n/it.po | 1 + 2 files changed, 2 insertions(+) diff --git a/fs_product_multi_image/i18n/es.po b/fs_product_multi_image/i18n/es.po index c0fe33e968..5ec1368d26 100644 --- a/fs_product_multi_image/i18n/es.po +++ b/fs_product_multi_image/i18n/es.po @@ -67,6 +67,7 @@ msgstr "" "Si necesita editar las imágenes, hágalo desde la plantilla del producto." #. module: fs_product_multi_image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.fs_product_image_kanban_view #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Image" msgstr "Imagen" diff --git a/fs_product_multi_image/i18n/it.po b/fs_product_multi_image/i18n/it.po index 0b7b0f28ac..cba13ec583 100644 --- a/fs_product_multi_image/i18n/it.po +++ b/fs_product_multi_image/i18n/it.po @@ -66,6 +66,7 @@ msgid "If you need to edit the images, do it from the product template." msgstr "Se è necessario modificare le immagini, farlo dal modello prodotto." #. module: fs_product_multi_image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.fs_product_image_kanban_view #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Image" msgstr "Immagine" From a1406a2a8fff46433b855fbae6c0481a861b73aa Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Sat, 27 Jan 2024 11:49:07 +0000 Subject: [PATCH 26/42] Translated using Weblate (Spanish) Currently translated at 100.0% (34 of 34 strings) Translation: storage-16.0/storage-16.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image/es/ --- fs_product_multi_image/i18n/es.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs_product_multi_image/i18n/es.po b/fs_product_multi_image/i18n/es.po index 5ec1368d26..940cf8fb33 100644 --- a/fs_product_multi_image/i18n/es.po +++ b/fs_product_multi_image/i18n/es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2023-10-29 00:15+0000\n" +"PO-Revision-Date: 2024-01-27 14:36+0000\n" "Last-Translator: Ivorra78 \n" "Language-Team: none\n" "Language: es\n" @@ -79,7 +79,7 @@ msgstr "Imagen" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium msgid "Image (128)" -msgstr "" +msgstr "Imagen (128)" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image @@ -88,7 +88,7 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image msgid "Image (original)" -msgstr "" +msgstr "Imagen (original)" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_image_tag @@ -207,7 +207,7 @@ msgstr "Imagen Específica" #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium msgid "Specific Image (128)" -msgstr "" +msgstr "Imagen Específica (128)" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id From ccce9b176e8b4c97da4a61ed14a7dfd0ec747914 Mon Sep 17 00:00:00 2001 From: Benjamin Willig Date: Mon, 29 Jan 2024 16:56:24 +0100 Subject: [PATCH 27/42] [FIX] do not display kanban img tag if the record has not been create or there will be an owl error --- fs_product_multi_image/views/fs_product_image.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/fs_product_multi_image/views/fs_product_image.xml b/fs_product_multi_image/views/fs_product_image.xml index 0fd3fa8b54..002e85635f 100644 --- a/fs_product_multi_image/views/fs_product_image.xml +++ b/fs_product_multi_image/views/fs_product_image.xml @@ -45,6 +45,7 @@

Image From ed7e32c6dda54a20dbe0b0511cfb7ca0f86e5a21 Mon Sep 17 00:00:00 2001 From: "Benjamin Willig (ACSONE)" Date: Mon, 19 Feb 2024 08:16:57 +0000 Subject: [PATCH 28/42] Added translation using Weblate (French) --- fs_product_multi_image/i18n/fr.po | 218 ++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 fs_product_multi_image/i18n/fr.po diff --git a/fs_product_multi_image/i18n/fr.po b/fs_product_multi_image/i18n/fr.po new file mode 100644 index 0000000000..1f370b29c9 --- /dev/null +++ b/fs_product_multi_image/i18n/fr.po @@ -0,0 +1,218 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * fs_product_multi_image +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: fr\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: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_image_tag__apply_on +msgid "Apply On" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__attribute_value_ids +msgid "Attributes" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__available_attribute_value_ids +msgid "Available Attributes" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__category +msgid "Category" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_uid +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_uid +msgid "Created by" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_date +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_date +msgid "Created on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__display_name +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__display_name +msgid "Display Name" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__id +msgid "ID" +msgstr "" + +#. module: fs_product_multi_image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view +msgid "If you need to edit the images, do it from the product template." +msgstr "" + +#. module: fs_product_multi_image +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.fs_product_image_kanban_view +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view +msgid "Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium +msgid "Image (128)" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image +msgid "Image (original)" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_image_tag +#: model:ir.ui.menu,name:fs_product_multi_image.menu_image_tag +msgid "Image Tag" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_ids +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_ids +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_ids +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_category_form_view +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view +#: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view +msgid "Images" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update +msgid "Last Modified on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_date +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_date +msgid "Last Updated on" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__link_existing +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__link_existing +msgid "Link Existing" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_id +msgid "Linked image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__main_image_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__main_image_id +msgid "Main Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__mimetype +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__mimetype +msgid "Mimetype" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__name +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__name +msgid "Name" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_template +#: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__product +msgid "Product" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_category +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__product_categ_id +msgid "Product Category" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_fs_product_category_image +msgid "Product Category Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_fs_product_image +msgid "Product Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__product_tmpl_id +msgid "Product Template" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_template_attribute_line +msgid "Product Template Attribute Line" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model,name:fs_product_multi_image.model_product_product +msgid "Product Variant" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__sequence +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__sequence +msgid "Sequence" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image +msgid "Specific Image" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium +msgid "Specific Image (128)" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id +#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__tag_id +msgid "Tag" +msgstr "" + +#. module: fs_product_multi_image +#: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__variant_image_ids +msgid "Variant Images" +msgstr "" From 8c628f9ce875cdfead65613fe9ca7fcc83ea5d4e Mon Sep 17 00:00:00 2001 From: "Benjamin Willig (ACSONE)" Date: Mon, 19 Feb 2024 08:17:19 +0000 Subject: [PATCH 29/42] Translated using Weblate (French) Currently translated at 76.4% (26 of 34 strings) Translation: storage-16.0/storage-16.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image/fr/ --- fs_product_multi_image/i18n/fr.po | 56 ++++++++++++++++--------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/fs_product_multi_image/i18n/fr.po b/fs_product_multi_image/i18n/fr.po index 1f370b29c9..6e27c17cc3 100644 --- a/fs_product_multi_image/i18n/fr.po +++ b/fs_product_multi_image/i18n/fr.po @@ -6,51 +6,53 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-02-19 10:34+0000\n" +"Last-Translator: \"Benjamin Willig (ACSONE)\" \n" "Language-Team: none\n" "Language: fr\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.17\n" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_image_tag__apply_on msgid "Apply On" -msgstr "" +msgstr "Appliqué à" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__attribute_value_ids msgid "Attributes" -msgstr "" +msgstr "Attributs" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__available_attribute_value_ids msgid "Available Attributes" -msgstr "" +msgstr "Attributs disponibles" #. module: fs_product_multi_image #: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__category msgid "Category" -msgstr "" +msgstr "Catégorie" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_uid #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_uid msgid "Created by" -msgstr "" +msgstr "Créé par" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__create_date #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__create_date msgid "Created on" -msgstr "" +msgstr "Créé le" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__display_name #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__display_name msgid "Display Name" -msgstr "" +msgstr "Nom Affiché" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__id @@ -61,13 +63,13 @@ msgstr "" #. module: fs_product_multi_image #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view msgid "If you need to edit the images, do it from the product template." -msgstr "" +msgstr "Pour éditer l'image, rendez vous sur la fiche template de produit." #. module: fs_product_multi_image #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.fs_product_image_kanban_view #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Image" -msgstr "" +msgstr "Image" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_medium @@ -76,7 +78,7 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image_medium msgid "Image (128)" -msgstr "" +msgstr "Image (128)" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image @@ -85,13 +87,13 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__image msgid "Image (original)" -msgstr "" +msgstr "Image (originale)" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_image_tag #: model:ir.ui.menu,name:fs_product_multi_image.menu_image_tag msgid "Image Tag" -msgstr "" +msgstr "Tag d'image" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_category__image_ids @@ -101,7 +103,7 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_normal_form_view #: model_terms:ir.ui.view,arch_db:fs_product_multi_image.product_template_only_form_view msgid "Images" -msgstr "" +msgstr "Images" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update @@ -125,19 +127,19 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__link_existing #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__link_existing msgid "Link Existing" -msgstr "" +msgstr "Lier une image existante" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__image_id #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__image_id msgid "Linked image" -msgstr "" +msgstr "Image liée" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__main_image_id #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_template__main_image_id msgid "Main Image" -msgstr "" +msgstr "Image principale" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__mimetype @@ -149,34 +151,34 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__name #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__name msgid "Name" -msgstr "" +msgstr "Nom" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_template #: model:ir.model.fields.selection,name:fs_product_multi_image.selection__image_tag__apply_on__product msgid "Product" -msgstr "" +msgstr "Produit" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_category #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__product_categ_id msgid "Product Category" -msgstr "" +msgstr "Catégorie de produit" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_fs_product_category_image msgid "Product Category Image" -msgstr "" +msgstr "Catégorie d'image de produit" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_fs_product_image msgid "Product Image" -msgstr "" +msgstr "Image produit" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__product_tmpl_id msgid "Product Template" -msgstr "" +msgstr "Template d'article" #. module: fs_product_multi_image #: model:ir.model,name:fs_product_multi_image.model_product_template_attribute_line @@ -192,25 +194,25 @@ msgstr "" #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__sequence #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__sequence msgid "Sequence" -msgstr "" +msgstr "Séquence" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image msgid "Specific Image" -msgstr "" +msgstr "Image spécifique" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__specific_image_medium #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__specific_image_medium msgid "Specific Image (128)" -msgstr "" +msgstr "Image spécifique (128)" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__tag_id #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__tag_id msgid "Tag" -msgstr "" +msgstr "Tag" #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_product_product__variant_image_ids From 3e055a77868d0d0b6945c3a7ec502cff6dc644c1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 21 Feb 2024 10:59:37 +0000 Subject: [PATCH 30/42] [BOT] post-merge updates --- fs_product_multi_image/README.rst | 2 +- fs_product_multi_image/__manifest__.py | 2 +- fs_product_multi_image/static/description/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index f57b60481e..5a582bb65f 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -7,7 +7,7 @@ Fs Product Multi Image !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:bed699bf549014b6928170fad28e6d6f5a68c7a3c5a50d3eed4ae6cb91291bc1 + !! source digest: sha256:395303e3e6bbfd77d4aa109ccfda96ceecd111fa11d146beeb941f147963995d !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index a900ddf8f8..58e12f3429 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -5,7 +5,7 @@ "name": "Fs Product Multi Image", "summary": """ Manage multi images from extenal file system on product""", - "version": "16.0.1.1.0", + "version": "16.0.1.1.1", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/storage", diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index 9b52971fc6..4e8e5bdeae 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -366,7 +366,7 @@

Fs Product Multi Image

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:bed699bf549014b6928170fad28e6d6f5a68c7a3c5a50d3eed4ae6cb91291bc1 +!! source digest: sha256:395303e3e6bbfd77d4aa109ccfda96ceecd111fa11d146beeb941f147963995d !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

Attach images to products and categories and store them on an external From cd946c7f7f32a02a1474203d34ce531a4a28b774 Mon Sep 17 00:00:00 2001 From: chien Date: Thu, 29 Feb 2024 10:27:55 +0700 Subject: [PATCH 31/42] [IMP] fs_product_multi_image: pre-commit auto fixes --- fs_product_multi_image/README.rst | 58 ++++++++++--------- .../models/product_category.py | 1 - .../models/product_template.py | 1 - .../models/product_template_attribute_line.py | 1 - fs_product_multi_image/pyproject.toml | 3 + fs_product_multi_image/readme/CONTRIBUTORS.md | 6 ++ .../readme/CONTRIBUTORS.rst | 7 --- .../{DESCRIPTION.rst => DESCRIPTION.md} | 3 +- fs_product_multi_image/readme/HISTORY.md | 7 +++ fs_product_multi_image/readme/HISTORY.rst | 7 --- fs_product_multi_image/readme/USAGE.md | 15 +++++ fs_product_multi_image/readme/USAGE.rst | 13 ----- .../static/description/index.html | 35 ++++++----- 13 files changed, 84 insertions(+), 73 deletions(-) create mode 100644 fs_product_multi_image/pyproject.toml create mode 100644 fs_product_multi_image/readme/CONTRIBUTORS.md delete mode 100644 fs_product_multi_image/readme/CONTRIBUTORS.rst rename fs_product_multi_image/readme/{DESCRIPTION.rst => DESCRIPTION.md} (92%) create mode 100644 fs_product_multi_image/readme/HISTORY.md delete mode 100644 fs_product_multi_image/readme/HISTORY.rst create mode 100644 fs_product_multi_image/readme/USAGE.md delete mode 100644 fs_product_multi_image/readme/USAGE.rst diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index 5a582bb65f..e361d9ac62 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -17,13 +17,13 @@ Fs Product Multi Image :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstorage-lightgray.png?logo=github - :target: https://github.com/OCA/storage/tree/16.0/fs_product_multi_image + :target: https://github.com/OCA/storage/tree/17.0/fs_product_multi_image :alt: OCA/storage .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/storage-16-0/storage-16-0-fs_product_multi_image + :target: https://translation.odoo-community.org/projects/storage-17-0/storage-17-0-fs_product_multi_image :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/storage&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/storage&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -31,7 +31,8 @@ Fs Product Multi Image Attach images to products and categories and store them on an external filesystem instead of the database. -This addon is a drop-in replacement for the **storage_image_product** addon. +This addon is a drop-in replacement for the **storage_image_product** +addon. .. IMPORTANT:: This is an alpha version, the data model and design can change at any time without warning. @@ -46,30 +47,33 @@ This addon is a drop-in replacement for the **storage_image_product** addon. Usage ===== -On the category and product form, a new tab allows you to add images to the -related object. The images can be specific to the model or you can use an -existing one. +On the category and product form, a new tab allows you to add images to +the related object. The images can be specific to the model or you can +use an existing one. On the link forms, you can add an image tag in addition to the image. In -the specific case of the product template, you can also specify for which -variant attribute values the image is valid. +the specific case of the product template, you can also specify for +which variant attribute values the image is valid. -On the product variant form, the image tag will be automatically filled whith -the image tag of the product template for the same variant attribute values. +On the product variant form, the image tag will be automatically filled +whith the image tag of the product template for the same variant +attribute values. -In every case, a main image is computed and used as the default image for the -object. It depends on the sequence of the images (first one is the main one). +In every case, a main image is computed and used as the default image +for the object. It depends on the sequence of the images (first one is +the main one). Changelog ========= 16.0.1.0.2 (2023-10-04) -~~~~~~~~~~~~~~~~~~~~~~~ +----------------------- **Bugfixes** -- Ensures the variant_image_ids are sorted by sequence and name. Before this - change, the order was random and could change between runs. (`#282 `_) +- Ensures the variant_image_ids are sorted by sequence and name. Before + this change, the order was random and could change between runs. + (`#282 `__) Bug Tracker =========== @@ -77,7 +81,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -85,23 +89,23 @@ Credits ======= Authors -~~~~~~~ +------- * ACSONE SA/NV Contributors -~~~~~~~~~~~~ +------------ -* Laurent Mignon -* Raphaël Reverdy -* Denis Roussel -* Quentin Groulard -* `Camptocamp `_ +- Laurent Mignon +- Raphaël Reverdy +- Denis Roussel +- Quentin Groulard +- `Camptocamp `__ - * Iván Todorovich + - Iván Todorovich Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -121,6 +125,6 @@ Current `maintainer `__: |maintainer-lmignon| -This module is part of the `OCA/storage `_ project on GitHub. +This module is part of the `OCA/storage `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fs_product_multi_image/models/product_category.py b/fs_product_multi_image/models/product_category.py index e40c91a35a..5d3ba03887 100644 --- a/fs_product_multi_image/models/product_category.py +++ b/fs_product_multi_image/models/product_category.py @@ -7,7 +7,6 @@ class ProductCategory(models.Model): - _inherit = "product.category" image_ids = fields.One2many( diff --git a/fs_product_multi_image/models/product_template.py b/fs_product_multi_image/models/product_template.py index f080db1b9e..b052c47302 100644 --- a/fs_product_multi_image/models/product_template.py +++ b/fs_product_multi_image/models/product_template.py @@ -7,7 +7,6 @@ class ProductTemplate(models.Model): - _inherit = "product.template" image_ids = fields.One2many( diff --git a/fs_product_multi_image/models/product_template_attribute_line.py b/fs_product_multi_image/models/product_template_attribute_line.py index b6b6915066..13886628f5 100644 --- a/fs_product_multi_image/models/product_template_attribute_line.py +++ b/fs_product_multi_image/models/product_template_attribute_line.py @@ -6,7 +6,6 @@ class ProductTemplateAttributeLine(models.Model): - _inherit = "product.template.attribute.line" def write(self, values): diff --git a/fs_product_multi_image/pyproject.toml b/fs_product_multi_image/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/fs_product_multi_image/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/fs_product_multi_image/readme/CONTRIBUTORS.md b/fs_product_multi_image/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..b67df1469f --- /dev/null +++ b/fs_product_multi_image/readme/CONTRIBUTORS.md @@ -0,0 +1,6 @@ +- Laurent Mignon \<\> +- Raphaël Reverdy \<\> +- Denis Roussel \<\> +- Quentin Groulard \<\> +- [Camptocamp](https://www.camptocamp.com) + - Iván Todorovich \<\> diff --git a/fs_product_multi_image/readme/CONTRIBUTORS.rst b/fs_product_multi_image/readme/CONTRIBUTORS.rst deleted file mode 100644 index 33d0863bc0..0000000000 --- a/fs_product_multi_image/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,7 +0,0 @@ -* Laurent Mignon -* Raphaël Reverdy -* Denis Roussel -* Quentin Groulard -* `Camptocamp `_ - - * Iván Todorovich diff --git a/fs_product_multi_image/readme/DESCRIPTION.rst b/fs_product_multi_image/readme/DESCRIPTION.md similarity index 92% rename from fs_product_multi_image/readme/DESCRIPTION.rst rename to fs_product_multi_image/readme/DESCRIPTION.md index b1ae446b13..28ccd6d7d7 100644 --- a/fs_product_multi_image/readme/DESCRIPTION.rst +++ b/fs_product_multi_image/readme/DESCRIPTION.md @@ -1,4 +1,5 @@ Attach images to products and categories and store them on an external filesystem instead of the database. -This addon is a drop-in replacement for the **storage_image_product** addon. +This addon is a drop-in replacement for the **storage_image_product** +addon. diff --git a/fs_product_multi_image/readme/HISTORY.md b/fs_product_multi_image/readme/HISTORY.md new file mode 100644 index 0000000000..91997edda7 --- /dev/null +++ b/fs_product_multi_image/readme/HISTORY.md @@ -0,0 +1,7 @@ +## 16.0.1.0.2 (2023-10-04) + +**Bugfixes** + +- Ensures the variant_image_ids are sorted by sequence and name. Before + this change, the order was random and could change between runs. + ([\#282](https://github.com/OCA/storage/issues/282)) diff --git a/fs_product_multi_image/readme/HISTORY.rst b/fs_product_multi_image/readme/HISTORY.rst deleted file mode 100644 index 3e28f368c6..0000000000 --- a/fs_product_multi_image/readme/HISTORY.rst +++ /dev/null @@ -1,7 +0,0 @@ -16.0.1.0.2 (2023-10-04) -~~~~~~~~~~~~~~~~~~~~~~~ - -**Bugfixes** - -- Ensures the variant_image_ids are sorted by sequence and name. Before this - change, the order was random and could change between runs. (`#282 `_) diff --git a/fs_product_multi_image/readme/USAGE.md b/fs_product_multi_image/readme/USAGE.md new file mode 100644 index 0000000000..b5c4257f94 --- /dev/null +++ b/fs_product_multi_image/readme/USAGE.md @@ -0,0 +1,15 @@ +On the category and product form, a new tab allows you to add images to +the related object. The images can be specific to the model or you can +use an existing one. + +On the link forms, you can add an image tag in addition to the image. In +the specific case of the product template, you can also specify for +which variant attribute values the image is valid. + +On the product variant form, the image tag will be automatically filled +whith the image tag of the product template for the same variant +attribute values. + +In every case, a main image is computed and used as the default image +for the object. It depends on the sequence of the images (first one is +the main one). diff --git a/fs_product_multi_image/readme/USAGE.rst b/fs_product_multi_image/readme/USAGE.rst deleted file mode 100644 index 43c2b473dd..0000000000 --- a/fs_product_multi_image/readme/USAGE.rst +++ /dev/null @@ -1,13 +0,0 @@ -On the category and product form, a new tab allows you to add images to the -related object. The images can be specific to the model or you can use an -existing one. - -On the link forms, you can add an image tag in addition to the image. In -the specific case of the product template, you can also specify for which -variant attribute values the image is valid. - -On the product variant form, the image tag will be automatically filled whith -the image tag of the product template for the same variant attribute values. - -In every case, a main image is computed and used as the default image for the -object. It depends on the sequence of the images (first one is the main one). diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index 4e8e5bdeae..33031b6eda 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -1,3 +1,4 @@ + @@ -368,10 +369,11 @@

Fs Product Multi Image

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:395303e3e6bbfd77d4aa109ccfda96ceecd111fa11d146beeb941f147963995d !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

+

Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

Attach images to products and categories and store them on an external filesystem instead of the database.

-

This addon is a drop-in replacement for the storage_image_product addon.

+

This addon is a drop-in replacement for the storage_image_product +addon.

Important

This is an alpha version, the data model and design can change at any time without warning. @@ -397,16 +399,18 @@

Fs Product Multi Image

Usage

-

On the category and product form, a new tab allows you to add images to the -related object. The images can be specific to the model or you can use an -existing one.

+

On the category and product form, a new tab allows you to add images to +the related object. The images can be specific to the model or you can +use an existing one.

On the link forms, you can add an image tag in addition to the image. In -the specific case of the product template, you can also specify for which -variant attribute values the image is valid.

-

On the product variant form, the image tag will be automatically filled whith -the image tag of the product template for the same variant attribute values.

-

In every case, a main image is computed and used as the default image for the -object. It depends on the sequence of the images (first one is the main one).

+the specific case of the product template, you can also specify for +which variant attribute values the image is valid.

+

On the product variant form, the image tag will be automatically filled +whith the image tag of the product template for the same variant +attribute values.

+

In every case, a main image is computed and used as the default image +for the object. It depends on the sequence of the images (first one is +the main one).

Changelog

@@ -414,8 +418,9 @@

Changelog

16.0.1.0.2 (2023-10-04)

Bugfixes

    -
  • Ensures the variant_image_ids are sorted by sequence and name. Before this -change, the order was random and could change between runs. (#282)
  • +
  • Ensures the variant_image_ids are sorted by sequence and name. Before +this change, the order was random and could change between runs. +(#282)
@@ -424,7 +429,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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -457,7 +462,7 @@

Maintainers

promote its widespread use.

Current maintainer:

lmignon

-

This module is part of the OCA/storage project on GitHub.

+

This module is part of the OCA/storage project on GitHub.

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

From a62dec53d611a7be92914a6fbaac1414d5c53ac2 Mon Sep 17 00:00:00 2001 From: chien Date: Fri, 1 Mar 2024 15:23:42 +0700 Subject: [PATCH 32/42] [MIG] fs_product_multi_image: Migration to 17.0 --- fs_product_multi_image/README.rst | 2 ++ fs_product_multi_image/__manifest__.py | 2 +- .../models/product_product.py | 2 +- fs_product_multi_image/readme/CONTRIBUTORS.md | 1 + .../static/description/index.html | 2 +- .../tests/test_fs_product_multi_image.py | 19 ++++++------ .../views/fs_product_image.xml | 2 +- .../views/product_template.xml | 31 ++++++++++++------- 8 files changed, 36 insertions(+), 25 deletions(-) diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index e361d9ac62..be001ac278 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -104,6 +104,8 @@ Contributors - Iván Todorovich +- Nguyen Minh Chien + Maintainers ----------- diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index 58e12f3429..5babaf20dc 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -5,7 +5,7 @@ "name": "Fs Product Multi Image", "summary": """ Manage multi images from extenal file system on product""", - "version": "16.0.1.1.1", + "version": "17.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/storage", diff --git a/fs_product_multi_image/models/product_product.py b/fs_product_multi_image/models/product_product.py index 12b6a9cf71..a4fbbef167 100644 --- a/fs_product_multi_image/models/product_product.py +++ b/fs_product_multi_image/models/product_product.py @@ -39,7 +39,7 @@ class ProductProduct(models.Model): def _compute_variant_image_ids(self): for variant in self: variant_image_ids = variant.image_ids.filtered( - lambda i: i._match_variant(variant) + lambda i, v=variant: i._match_variant(v) ) variant_image_ids = variant_image_ids.sorted( key=lambda i: (i.sequence, i.name) diff --git a/fs_product_multi_image/readme/CONTRIBUTORS.md b/fs_product_multi_image/readme/CONTRIBUTORS.md index b67df1469f..59ab62bb12 100644 --- a/fs_product_multi_image/readme/CONTRIBUTORS.md +++ b/fs_product_multi_image/readme/CONTRIBUTORS.md @@ -4,3 +4,4 @@ - Quentin Groulard \<\> - [Camptocamp](https://www.camptocamp.com) - Iván Todorovich \<\> +- Nguyen Minh Chien \<\> diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index 33031b6eda..dbd839cf31 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -1,4 +1,3 @@ - @@ -451,6 +450,7 @@

Contributors

  • Iván Todorovich <ivan.todorovich@gmail.com>
  • +
  • Nguyen Minh Chien <chien@trobz.com>
  • diff --git a/fs_product_multi_image/tests/test_fs_product_multi_image.py b/fs_product_multi_image/tests/test_fs_product_multi_image.py index 4d58f43116..e736cddb25 100644 --- a/fs_product_multi_image/tests/test_fs_product_multi_image.py +++ b/fs_product_multi_image/tests/test_fs_product_multi_image.py @@ -52,16 +52,15 @@ def setUpClass(cls): def setUp(self): super().setUp() - self.temp_dir = self.env["fs.storage"].create( - { - "name": "Temp FS Storage", - "protocol": "memory", - "code": "mem_dir", - "directory_path": "/tmp/", - "model_xmlids": "fs_product_multi_image.model_fs_product_category_image," - "fs_product_multi_image.model_fs_product_image", - } - ) + vals = { + "name": "Temp FS Storage", + "protocol": "memory", + "code": "mem_dir", + "directory_path": "/tmp/", + "model_xmlids": "fs_product_multi_image.model_fs_product_category_image," + "fs_product_multi_image.model_fs_product_image", + } + self.temp_dir = self.env["fs.storage"].create(vals) @classmethod def _create_image(cls, width, height, color="#4169E1", img_format="PNG"): diff --git a/fs_product_multi_image/views/fs_product_image.xml b/fs_product_multi_image/views/fs_product_image.xml index 002e85635f..67c436b359 100644 --- a/fs_product_multi_image/views/fs_product_image.xml +++ b/fs_product_multi_image/views/fs_product_image.xml @@ -23,7 +23,7 @@ name="attribute_value_ids" widget="many2many_tags" domain="[('id', 'in', available_attribute_value_ids)]" - attrs="{'invisible': [('available_attribute_value_ids', '=', [])]}" + invisible="not available_attribute_value_ids" /> diff --git a/fs_product_multi_image/views/product_template.xml b/fs_product_multi_image/views/product_template.xml index b2af520227..98b4f0d2bf 100644 --- a/fs_product_multi_image/views/product_template.xml +++ b/fs_product_multi_image/views/product_template.xml @@ -20,17 +20,26 @@ - - - - - - - + + + + + + + + + + + From dde5088f148791aa73893afba2351274e663845b Mon Sep 17 00:00:00 2001 From: oca-ci Date: Fri, 3 May 2024 07:55:43 +0000 Subject: [PATCH 33/42] [UPD] Update fs_product_multi_image.pot --- fs_product_multi_image/i18n/fs_product_multi_image.pot | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/fs_product_multi_image/i18n/fs_product_multi_image.pot b/fs_product_multi_image/i18n/fs_product_multi_image.pot index 7d4543be0d..459353c89a 100644 --- a/fs_product_multi_image/i18n/fs_product_multi_image.pot +++ b/fs_product_multi_image/i18n/fs_product_multi_image.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 17.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -102,12 +102,6 @@ msgstr "" msgid "Images" msgstr "" -#. module: fs_product_multi_image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update -msgid "Last Modified on" -msgstr "" - #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid From ac0c787835a0f5294a3ccb1fcbb5b252c1a5abd5 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Fri, 3 May 2024 07:57:55 +0000 Subject: [PATCH 34/42] [BOT] post-merge updates --- fs_product_multi_image/README.rst | 2 +- fs_product_multi_image/static/description/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index be001ac278..02670270d3 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -7,7 +7,7 @@ Fs Product Multi Image !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:395303e3e6bbfd77d4aa109ccfda96ceecd111fa11d146beeb941f147963995d + !! source digest: sha256:5a6fdaf9e702439dce0eb7c278476e6c2c2f707ff7831ec88e0b523084f57f12 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index dbd839cf31..05e78d31f5 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -366,7 +366,7 @@

    Fs Product Multi Image

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:395303e3e6bbfd77d4aa109ccfda96ceecd111fa11d146beeb941f147963995d +!! source digest: sha256:5a6fdaf9e702439dce0eb7c278476e6c2c2f707ff7831ec88e0b523084f57f12 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

    Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

    Attach images to products and categories and store them on an external From 32f2ac82f7a6fa768e45877f72c74ee4e00f77b7 Mon Sep 17 00:00:00 2001 From: Weblate Date: Fri, 3 May 2024 11:10:49 +0000 Subject: [PATCH 35/42] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: storage-17.0/storage-17.0-fs_product_multi_image Translate-URL: https://translation.odoo-community.org/projects/storage-17-0/storage-17-0-fs_product_multi_image/ --- fs_product_multi_image/i18n/es.po | 9 +++------ fs_product_multi_image/i18n/fr.po | 6 ------ fs_product_multi_image/i18n/it.po | 9 +++------ 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/fs_product_multi_image/i18n/es.po b/fs_product_multi_image/i18n/es.po index 940cf8fb33..835fd39972 100644 --- a/fs_product_multi_image/i18n/es.po +++ b/fs_product_multi_image/i18n/es.po @@ -106,12 +106,6 @@ msgstr "Etiqueta de la Imagen" msgid "Images" msgstr "Imágenes" -#. module: fs_product_multi_image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update -msgid "Last Modified on" -msgstr "Última Modificación el" - #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid @@ -220,6 +214,9 @@ msgstr "Etiqueta" msgid "Variant Images" msgstr "Imágenes de Variante" +#~ msgid "Last Modified on" +#~ msgstr "Última Modificación el" + #~ msgid "Image 128" #~ msgstr "Imagen 128" diff --git a/fs_product_multi_image/i18n/fr.po b/fs_product_multi_image/i18n/fr.po index 6e27c17cc3..f3ca216836 100644 --- a/fs_product_multi_image/i18n/fr.po +++ b/fs_product_multi_image/i18n/fr.po @@ -105,12 +105,6 @@ msgstr "Tag d'image" msgid "Images" msgstr "Images" -#. module: fs_product_multi_image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update -msgid "Last Modified on" -msgstr "" - #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid diff --git a/fs_product_multi_image/i18n/it.po b/fs_product_multi_image/i18n/it.po index cba13ec583..4317e94e1b 100644 --- a/fs_product_multi_image/i18n/it.po +++ b/fs_product_multi_image/i18n/it.po @@ -105,12 +105,6 @@ msgstr "Etichetta immagine" msgid "Images" msgstr "Immagini" -#. module: fs_product_multi_image -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image____last_update -#: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image____last_update -msgid "Last Modified on" -msgstr "Ultima modifica il" - #. module: fs_product_multi_image #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_category_image__write_uid #: model:ir.model.fields,field_description:fs_product_multi_image.field_fs_product_image__write_uid @@ -219,6 +213,9 @@ msgstr "Etichetta" msgid "Variant Images" msgstr "Immagine variante" +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" + #~ msgid "Image 128" #~ msgstr "Immagine 128" From b87eff100c0c05ca858a6f7ffcfe2a8cf92c37c1 Mon Sep 17 00:00:00 2001 From: Benjamin Willig Date: Wed, 15 May 2024 09:41:53 +0200 Subject: [PATCH 36/42] [CHG] display kanban view by default for product images --- .../views/product_template.xml | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/fs_product_multi_image/views/product_template.xml b/fs_product_multi_image/views/product_template.xml index 98b4f0d2bf..eebe4cdf0d 100644 --- a/fs_product_multi_image/views/product_template.xml +++ b/fs_product_multi_image/views/product_template.xml @@ -20,26 +20,20 @@ - - - - - - - - - - - + + + + + + + + + + From 4b01693006cd8886193dda4925cf5852160529fe Mon Sep 17 00:00:00 2001 From: Benjamin Willig Date: Mon, 29 Jan 2024 16:31:43 +0100 Subject: [PATCH 37/42] [CHG] use list.addNew to add relation records instead of calling the ORM explicitely --- fs_product_multi_image/views/fs_product_image.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs_product_multi_image/views/fs_product_image.xml b/fs_product_multi_image/views/fs_product_image.xml index 67c436b359..4374b3d113 100644 --- a/fs_product_multi_image/views/fs_product_image.xml +++ b/fs_product_multi_image/views/fs_product_image.xml @@ -38,7 +38,7 @@ /> primary - + From 241d41c15605a18b2690cfab391384896e2e3a9b Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 28 Oct 2024 09:11:44 +0000 Subject: [PATCH 38/42] [BOT] post-merge updates --- fs_product_multi_image/README.rst | 2 +- fs_product_multi_image/__manifest__.py | 2 +- .../static/description/index.html | 13 ++++++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index 02670270d3..af2f6d51b8 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -7,7 +7,7 @@ Fs Product Multi Image !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:5a6fdaf9e702439dce0eb7c278476e6c2c2f707ff7831ec88e0b523084f57f12 + !! source digest: sha256:2d1fc8950739d3fffb7905f447d83e880514ddbb5462a53291f601b46bef4737 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index 5babaf20dc..270d485936 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -5,7 +5,7 @@ "name": "Fs Product Multi Image", "summary": """ Manage multi images from extenal file system on product""", - "version": "17.0.1.0.0", + "version": "17.0.1.0.1", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/storage", diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index 05e78d31f5..fa92a02fba 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -8,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -274,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -300,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -366,7 +367,7 @@

    Fs Product Multi Image

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:5a6fdaf9e702439dce0eb7c278476e6c2c2f707ff7831ec88e0b523084f57f12 +!! source digest: sha256:2d1fc8950739d3fffb7905f447d83e880514ddbb5462a53291f601b46bef4737 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

    Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

    Attach images to products and categories and store them on an external @@ -456,7 +457,9 @@

    Contributors

    Maintainers

    This module is maintained by the OCA.

    -Odoo Community Association + +Odoo Community Association +

    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.

    From ef38c33be90b588007b6f7e449581b23d1e70b78 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Thu, 20 Feb 2025 12:56:52 +0100 Subject: [PATCH 39/42] [IMP] fs_product_multi_image: pre-commit autofixes --- .../security/fs_product_category_image.xml | 2 -- fs_product_multi_image/security/fs_product_image.xml | 2 -- .../views/fs_product_category_image.xml | 2 -- fs_product_multi_image/views/fs_product_image.xml | 10 ++++------ fs_product_multi_image/views/image_tag.xml | 1 - fs_product_multi_image/views/product_category.xml | 4 ---- 6 files changed, 4 insertions(+), 17 deletions(-) diff --git a/fs_product_multi_image/security/fs_product_category_image.xml b/fs_product_multi_image/security/fs_product_category_image.xml index 20c6ec6d6b..68ae816f55 100644 --- a/fs_product_multi_image/security/fs_product_category_image.xml +++ b/fs_product_multi_image/security/fs_product_category_image.xml @@ -2,7 +2,6 @@ - fs.product.category.image access read @@ -30,5 +29,4 @@ - diff --git a/fs_product_multi_image/security/fs_product_image.xml b/fs_product_multi_image/security/fs_product_image.xml index 4ecbabac5d..884cc4d6fd 100644 --- a/fs_product_multi_image/security/fs_product_image.xml +++ b/fs_product_multi_image/security/fs_product_image.xml @@ -2,7 +2,6 @@ - fs.product.image access read @@ -30,5 +29,4 @@ - diff --git a/fs_product_multi_image/views/fs_product_category_image.xml b/fs_product_multi_image/views/fs_product_category_image.xml index acaba220aa..e7cfd37d8d 100644 --- a/fs_product_multi_image/views/fs_product_category_image.xml +++ b/fs_product_multi_image/views/fs_product_category_image.xml @@ -2,7 +2,6 @@ - product.category.fs.image.form fs.product.category.image @@ -17,5 +16,4 @@ - diff --git a/fs_product_multi_image/views/fs_product_image.xml b/fs_product_multi_image/views/fs_product_image.xml index 4374b3d113..b1365777de 100644 --- a/fs_product_multi_image/views/fs_product_image.xml +++ b/fs_product_multi_image/views/fs_product_image.xml @@ -2,11 +2,10 @@ - - + fs.product.image.form fs.product.image - @@ -29,10 +28,10 @@ - + fs.product.image.kanban fs.product.image - @@ -58,5 +57,4 @@ - diff --git a/fs_product_multi_image/views/image_tag.xml b/fs_product_multi_image/views/image_tag.xml index 925ab53167..5a921d9d70 100644 --- a/fs_product_multi_image/views/image_tag.xml +++ b/fs_product_multi_image/views/image_tag.xml @@ -1,6 +1,5 @@ - - product.category.form product.category @@ -29,7 +28,4 @@ - - - From 7b9bf420f0b73ebbae43f056b2acfc314468bd61 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Thu, 20 Feb 2025 13:00:03 +0100 Subject: [PATCH 40/42] [MIG] fs_product_multi_image: Migration to 18.0 --- fs_product_multi_image/README.rst | 30 +++++++++---------- fs_product_multi_image/__manifest__.py | 3 +- .../static/description/index.html | 6 ++-- .../views/fs_product_image.xml | 6 ++-- .../views/product_category.xml | 4 +-- .../views/product_product.xml | 18 +++++++---- .../views/product_template.xml | 16 +++++----- 7 files changed, 46 insertions(+), 37 deletions(-) diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index af2f6d51b8..fdc4ccdd51 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -17,13 +17,13 @@ Fs Product Multi Image :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstorage-lightgray.png?logo=github - :target: https://github.com/OCA/storage/tree/17.0/fs_product_multi_image + :target: https://github.com/OCA/storage/tree/18.0/fs_product_multi_image :alt: OCA/storage .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/storage-17-0/storage-17-0-fs_product_multi_image + :target: https://translation.odoo-community.org/projects/storage-18-0/storage-18-0-fs_product_multi_image :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/storage&target_branch=17.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/storage&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -71,9 +71,9 @@ Changelog **Bugfixes** -- Ensures the variant_image_ids are sorted by sequence and name. Before - this change, the order was random and could change between runs. - (`#282 `__) +- Ensures the variant_image_ids are sorted by sequence and name. Before + this change, the order was random and could change between runs. + (`#282 `__) Bug Tracker =========== @@ -81,7 +81,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -96,15 +96,15 @@ Authors Contributors ------------ -- Laurent Mignon -- Raphaël Reverdy -- Denis Roussel -- Quentin Groulard -- `Camptocamp `__ +- Laurent Mignon +- Raphaël Reverdy +- Denis Roussel +- Quentin Groulard +- `Camptocamp `__ - - Iván Todorovich + - Iván Todorovich -- Nguyen Minh Chien +- Nguyen Minh Chien Maintainers ----------- @@ -127,6 +127,6 @@ Current `maintainer `__: |maintainer-lmignon| -This module is part of the `OCA/storage `_ project on GitHub. +This module is part of the `OCA/storage `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index 270d485936..f1697cbe35 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -5,7 +5,7 @@ "name": "Fs Product Multi Image", "summary": """ Manage multi images from extenal file system on product""", - "version": "17.0.1.0.1", + "version": "18.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/storage", @@ -20,7 +20,6 @@ "views/product_product.xml", "views/product_template.xml", ], - "demo": [], "maintainers": ["lmignon"], "development_status": "Alpha", } diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index fa92a02fba..790d5502e3 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -369,7 +369,7 @@

    Fs Product Multi Image

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:2d1fc8950739d3fffb7905f447d83e880514ddbb5462a53291f601b46bef4737 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

    +

    Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

    Attach images to products and categories and store them on an external filesystem instead of the database.

    This addon is a drop-in replacement for the storage_image_product @@ -429,7 +429,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 to smash it by providing a detailed and welcomed -feedback.

    +feedback.

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

    @@ -465,7 +465,7 @@

    Maintainers

    promote its widespread use.

    Current maintainer:

    lmignon

    -

    This module is part of the OCA/storage project on GitHub.

    +

    This module is part of the OCA/storage project on GitHub.

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

    diff --git a/fs_product_multi_image/views/fs_product_image.xml b/fs_product_multi_image/views/fs_product_image.xml index b1365777de..87ac2b29fc 100644 --- a/fs_product_multi_image/views/fs_product_image.xml +++ b/fs_product_multi_image/views/fs_product_image.xml @@ -42,11 +42,11 @@
    - Image
    diff --git a/fs_product_multi_image/views/product_category.xml b/fs_product_multi_image/views/product_category.xml index 68a3a45344..0a6d3afe99 100644 --- a/fs_product_multi_image/views/product_category.xml +++ b/fs_product_multi_image/views/product_category.xml @@ -17,10 +17,10 @@ - + - + diff --git a/fs_product_multi_image/views/product_product.xml b/fs_product_multi_image/views/product_product.xml index b7534f26ad..b52c22965d 100644 --- a/fs_product_multi_image/views/product_product.xml +++ b/fs_product_multi_image/views/product_product.xml @@ -7,11 +7,17 @@ - - kanban_image('product.product', 'image_medium', record.id.raw_value) - + + 1 + + + + @@ -24,6 +30,7 @@ @@ -48,6 +55,7 @@ diff --git a/fs_product_multi_image/views/product_template.xml b/fs_product_multi_image/views/product_template.xml index eebe4cdf0d..002edf8b07 100644 --- a/fs_product_multi_image/views/product_template.xml +++ b/fs_product_multi_image/views/product_template.xml @@ -13,6 +13,7 @@ - + - + @@ -43,11 +44,12 @@ - - kanban_image('product.template', 'image_medium', record.id.raw_value) - + + 1 + + + + From cd10cd945e0385318d862405cf1999d9aca61bcd Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Thu, 20 Feb 2025 19:22:53 +0100 Subject: [PATCH 41/42] [DONT MERGE] test-requirements.txt --- test-requirements.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 test-requirements.txt diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000000..13741c7de1 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,6 @@ +odoo_test_helper + +odoo-addon-fs-file @ git+https://github.com/OCA/storage.git@refs/pull/445/head#subdirectory=fs_file +odoo-addon-fs-image @ git+https://github.com/OCA/storage.git@refs/pull/446/head#subdirectory=fs_image +odoo-addon-fs-base-multi-image @ git+https://github.com/OCA/storage.git@refs/pull/447/head#subdirectory=fs_base_multi_image +odoo-addon-image-tag @ git+https://github.com/OCA/storage.git@refs/pull/448/head#subdirectory=image_tag From a202c5a8a83c7a4a9eab03873c0a06b5cd1bf8d3 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Wed, 12 Mar 2025 19:34:23 +0100 Subject: [PATCH 42/42] [IMP] fs_product_multi_image: Upgrade to Beta --- fs_product_multi_image/README.rst | 9 ++------- fs_product_multi_image/__manifest__.py | 1 - fs_product_multi_image/static/description/index.html | 8 +------- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/fs_product_multi_image/README.rst b/fs_product_multi_image/README.rst index fdc4ccdd51..926401bc2f 100644 --- a/fs_product_multi_image/README.rst +++ b/fs_product_multi_image/README.rst @@ -10,9 +10,9 @@ Fs Product Multi Image !! source digest: sha256:2d1fc8950739d3fffb7905f447d83e880514ddbb5462a53291f601b46bef4737 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status - :alt: Alpha + :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 @@ -34,11 +34,6 @@ filesystem instead of the database. This addon is a drop-in replacement for the **storage_image_product** addon. -.. IMPORTANT:: - This is an alpha version, the data model and design can change at any time without warning. - Only for development or testing purpose, do not use in production. - `More details on development status `_ - **Table of contents** .. contents:: diff --git a/fs_product_multi_image/__manifest__.py b/fs_product_multi_image/__manifest__.py index f1697cbe35..1ecb66d4e8 100644 --- a/fs_product_multi_image/__manifest__.py +++ b/fs_product_multi_image/__manifest__.py @@ -21,5 +21,4 @@ "views/product_template.xml", ], "maintainers": ["lmignon"], - "development_status": "Alpha", } diff --git a/fs_product_multi_image/static/description/index.html b/fs_product_multi_image/static/description/index.html index 790d5502e3..c4645d96b8 100644 --- a/fs_product_multi_image/static/description/index.html +++ b/fs_product_multi_image/static/description/index.html @@ -369,17 +369,11 @@

    Fs Product Multi Image

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:2d1fc8950739d3fffb7905f447d83e880514ddbb5462a53291f601b46bef4737 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    Alpha License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

    +

    Beta License: AGPL-3 OCA/storage Translate me on Weblate Try me on Runboat

    Attach images to products and categories and store them on an external filesystem instead of the database.

    This addon is a drop-in replacement for the storage_image_product addon.

    -
    -

    Important

    -

    This is an alpha version, the data model and design can change at any time without warning. -Only for development or testing purpose, do not use in production. -More details on development status

    -

    Table of contents