From 750040d7ee9e8558649de4343f01b08ef23b6741 Mon Sep 17 00:00:00 2001
From: Maksym Yankin
Date: Mon, 23 Mar 2026 15:40:49 +0200
Subject: [PATCH 1/2] [REF] image_tag: server_environment should not be a
required dependency
---
.pre-commit-config.yaml | 1 -
image_tag/README.rst | 10 +++++-----
image_tag/__manifest__.py | 6 +++---
image_tag/models/image_tag.py | 1 -
image_tag/static/description/index.html | 6 +++---
image_tag/views/image_tag.xml | 2 --
6 files changed, 11 insertions(+), 15 deletions(-)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 9571e312cc..90ee242fed 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -8,7 +8,6 @@ exclude: |
^fs_folder_webdav/|
^fs_image/|
^fs_storage_ms_drive/|
- ^image_tag/|
^microsoft_drive_account/|
^storage_backend/|
^storage_backend_ftp/|
diff --git a/image_tag/README.rst b/image_tag/README.rst
index 58498601a5..41c3ced608 100644
--- a/image_tag/README.rst
+++ b/image_tag/README.rst
@@ -21,13 +21,13 @@ Image Tag
: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/18.0/image_tag
+ :target: https://github.com/OCA/storage/tree/19.0/image_tag
:alt: OCA/storage
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/storage-18-0/storage-18-0-image_tag
+ :target: https://translation.odoo-community.org/projects/storage-19-0/storage-19-0-image_tag
: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=18.0
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/storage&target_branch=19.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -54,7 +54,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.
@@ -86,6 +86,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/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/image_tag/__manifest__.py b/image_tag/__manifest__.py
index 18052152ef..2f1f5e69f7 100644
--- a/image_tag/__manifest__.py
+++ b/image_tag/__manifest__.py
@@ -5,15 +5,15 @@
"name": "Image Tag",
"summary": """
Image tag model""",
- "version": "18.0.1.0.0",
+ "version": "19.0.1.0.0",
"license": "AGPL-3",
"author": "ACSONE SA/NV,Akretion,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/storage",
- "depends": ["server_environment"],
+ "depends": ["base"],
"data": [
"security/res_groups.xml",
"security/image_tag.xml",
"views/image_tag.xml",
],
- 'installable': False,
+ "installable": True,
}
diff --git a/image_tag/models/image_tag.py b/image_tag/models/image_tag.py
index 86f255873d..847d4e1544 100644
--- a/image_tag/models/image_tag.py
+++ b/image_tag/models/image_tag.py
@@ -8,7 +8,6 @@
class ImageTag(models.Model):
_name = "image.tag"
- _inherit = ["server.env.techname.mixin"]
_description = "Image Tag"
@api.model
diff --git a/image_tag/static/description/index.html b/image_tag/static/description/index.html
index a643220ae0..ec485037e5 100644
--- a/image_tag/static/description/index.html
+++ b/image_tag/static/description/index.html
@@ -374,7 +374,7 @@ Image Tag
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:65ac121bd2bc478f653e03ef240143f74404daec8515979cab0fef01fb5aa916
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-

+

This addon provide only one basic model used to define image’s tags.
These tags are used by other addons to enrich the image’s information of
an image linked to an other model. The fs_product_multi_image addon use
@@ -402,7 +402,7 @@
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.
@@ -430,7 +430,7 @@
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/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/image_tag/views/image_tag.xml b/image_tag/views/image_tag.xml
index 38269a1301..0565f8e3ff 100644
--- a/image_tag/views/image_tag.xml
+++ b/image_tag/views/image_tag.xml
@@ -5,7 +5,6 @@
-
@@ -15,7 +14,6 @@
-
From d999e69af307228f2ab2d6a43ed349bf14e7ec6c Mon Sep 17 00:00:00 2001
From: Maksym Yankin
Date: Wed, 25 Mar 2026 19:00:56 +0200
Subject: [PATCH 2/2] [ADD] image_tag_environment: make server_environment an
optional dependency
---
image_tag/__manifest__.py | 2 +-
image_tag/security/res_groups.xml | 4 +-
image_tag/upgrades/19.0.1.0.1/post-update.py | 13 +
image_tag_environment/README.rst | 88 ++++
image_tag_environment/__init__.py | 1 +
image_tag_environment/__manifest__.py | 16 +
image_tag_environment/i18n/es.po | 90 ++++
image_tag_environment/i18n/image_tag.pot | 86 ++++
image_tag_environment/i18n/it.po | 89 ++++
image_tag_environment/models/__init__.py | 1 +
image_tag_environment/models/image_tag.py | 11 +
image_tag_environment/pyproject.toml | 3 +
image_tag_environment/readme/CONTRIBUTORS.md | 2 +
image_tag_environment/readme/DESCRIPTION.md | 2 +
image_tag_environment/readme/USAGE.md | 1 +
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../static/description/index.html | 437 ++++++++++++++++++
image_tag_environment/views/image_tag.xml | 21 +
18 files changed, 864 insertions(+), 3 deletions(-)
create mode 100644 image_tag/upgrades/19.0.1.0.1/post-update.py
create mode 100644 image_tag_environment/README.rst
create mode 100644 image_tag_environment/__init__.py
create mode 100644 image_tag_environment/__manifest__.py
create mode 100644 image_tag_environment/i18n/es.po
create mode 100644 image_tag_environment/i18n/image_tag.pot
create mode 100644 image_tag_environment/i18n/it.po
create mode 100644 image_tag_environment/models/__init__.py
create mode 100644 image_tag_environment/models/image_tag.py
create mode 100644 image_tag_environment/pyproject.toml
create mode 100644 image_tag_environment/readme/CONTRIBUTORS.md
create mode 100644 image_tag_environment/readme/DESCRIPTION.md
create mode 100644 image_tag_environment/readme/USAGE.md
create mode 100644 image_tag_environment/static/description/icon.png
create mode 100644 image_tag_environment/static/description/index.html
create mode 100644 image_tag_environment/views/image_tag.xml
diff --git a/image_tag/__manifest__.py b/image_tag/__manifest__.py
index 2f1f5e69f7..491137d763 100644
--- a/image_tag/__manifest__.py
+++ b/image_tag/__manifest__.py
@@ -5,7 +5,7 @@
"name": "Image Tag",
"summary": """
Image tag model""",
- "version": "19.0.1.0.0",
+ "version": "19.0.1.0.1",
"license": "AGPL-3",
"author": "ACSONE SA/NV,Akretion,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/storage",
diff --git a/image_tag/security/res_groups.xml b/image_tag/security/res_groups.xml
index 7ba612b045..f258253008 100644
--- a/image_tag/security/res_groups.xml
+++ b/image_tag/security/res_groups.xml
@@ -3,8 +3,8 @@
Image Tag Manager
diff --git a/image_tag/upgrades/19.0.1.0.1/post-update.py b/image_tag/upgrades/19.0.1.0.1/post-update.py
new file mode 100644
index 0000000000..574c6795b0
--- /dev/null
+++ b/image_tag/upgrades/19.0.1.0.1/post-update.py
@@ -0,0 +1,13 @@
+# Copyright 2026 Camptocamp SA
+# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
+
+from openupgradelib import openupgrade
+
+
+@openupgrade.migrate()
+def migrate(env, version):
+ module = env["ir.module.module"].search(
+ [("name", "=", "image_tag_environment"), ("state", "=", "uninstalled")]
+ )
+ if module:
+ module.button_install()
diff --git a/image_tag_environment/README.rst b/image_tag_environment/README.rst
new file mode 100644
index 0000000000..83a66fa6b9
--- /dev/null
+++ b/image_tag_environment/README.rst
@@ -0,0 +1,88 @@
+.. image:: https://odoo-community.org/readme-banner-image
+ :target: https://odoo-community.org/get-involved?utm_source=readme
+ :alt: Odoo Community Association
+
+==============================
+Image Tag - Server Environment
+==============================
+
+..
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! source digest: sha256:05203837238360e0c011f8ed825bbf70e20f56a5157f18585a37353e9a148a86
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/license-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/19.0/image_tag_environment
+ :alt: OCA/storage
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/storage-19-0/storage-19-0-image_tag_environment
+ :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=19.0
+ :alt: Try me on Runboat
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+Glue module to make Server Environment features available for the Image
+Tag addon.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Usage
+=====
+
+Specify technical name during the creation of an image tag.
+
+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
+* Akretion
+
+Contributors
+------------
+
+- Laurent Mignon
+- Maksym Yankin
+
+Maintainers
+-----------
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/storage `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/image_tag_environment/__init__.py b/image_tag_environment/__init__.py
new file mode 100644
index 0000000000..0650744f6b
--- /dev/null
+++ b/image_tag_environment/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/image_tag_environment/__manifest__.py b/image_tag_environment/__manifest__.py
new file mode 100644
index 0000000000..2033f26a0e
--- /dev/null
+++ b/image_tag_environment/__manifest__.py
@@ -0,0 +1,16 @@
+# Copyright 2023 ACSONE SA/NV
+# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
+
+{
+ "name": "Image Tag - Server Environment",
+ "summary": "Server environment features for the Image Tag model",
+ "version": "19.0.1.0.0",
+ "license": "AGPL-3",
+ "author": "ACSONE SA/NV,Akretion,Odoo Community Association (OCA)",
+ "website": "https://github.com/OCA/storage",
+ "depends": ["image_tag", "server_environment"],
+ "data": [
+ "views/image_tag.xml",
+ ],
+ "auto_install": True,
+}
diff --git a/image_tag_environment/i18n/es.po b/image_tag_environment/i18n/es.po
new file mode 100644
index 0000000000..36459bc555
--- /dev/null
+++ b/image_tag_environment/i18n/es.po
@@ -0,0 +1,90 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * image_tag
+#
+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"
+"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: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__apply_on
+msgid "Apply On"
+msgstr "Aplicar En"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__create_date
+msgid "Created on"
+msgstr "Creado el"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__display_name
+msgid "Display Name"
+msgstr "Mostrar Nombre"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__id
+msgid "ID"
+msgstr "ID (identificación)"
+
+#. module: image_tag
+#: model:ir.actions.act_window,name:image_tag.act_open_image_tag_view
+#: model:ir.model,name:image_tag.model_image_tag
+#: model_terms:ir.ui.view,arch_db:image_tag.image_tag_view_search
+msgid "Image Tag"
+msgstr "Etiqueta de Imagen"
+
+#. module: image_tag
+#: model:res.groups,name:image_tag.group_image_tag_manager
+msgid "Image Tag Manager"
+msgstr "Gestor de Etiquetas de Imagen"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag____last_update
+msgid "Last Modified on"
+msgstr "Última Modifiación el"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__write_uid
+msgid "Last Updated by"
+msgstr "Actualizado por Última vez por"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__write_date
+msgid "Last Updated on"
+msgstr "Última Actualización el"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__name
+msgid "Name"
+msgstr "Nombre"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__server_env_defaults
+msgid "Server Env Defaults"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__tech_name
+msgid "Tech Name"
+msgstr "Nombre Técnico"
+
+#. module: image_tag
+#: model:ir.model.fields,help:image_tag.field_image_tag__tech_name
+msgid "Unique name for technical purposes. Eg: server env keys."
+msgstr ""
+"Nombre único con fines técnicos. Por ejemplo: claves de ent del servidor."
diff --git a/image_tag_environment/i18n/image_tag.pot b/image_tag_environment/i18n/image_tag.pot
new file mode 100644
index 0000000000..9229bba009
--- /dev/null
+++ b/image_tag_environment/i18n/image_tag.pot
@@ -0,0 +1,86 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * image_tag
+#
+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: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__apply_on
+msgid "Apply On"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__create_date
+msgid "Created on"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__id
+msgid "ID"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.actions.act_window,name:image_tag.act_open_image_tag_view
+#: model:ir.model,name:image_tag.model_image_tag
+#: model_terms:ir.ui.view,arch_db:image_tag.image_tag_view_search
+msgid "Image Tag"
+msgstr ""
+
+#. module: image_tag
+#: model:res.groups,name:image_tag.group_image_tag_manager
+msgid "Image Tag Manager"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__name
+msgid "Name"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__server_env_defaults
+msgid "Server Env Defaults"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__tech_name
+msgid "Tech Name"
+msgstr ""
+
+#. module: image_tag
+#: model:ir.model.fields,help:image_tag.field_image_tag__tech_name
+msgid "Unique name for technical purposes. Eg: server env keys."
+msgstr ""
diff --git a/image_tag_environment/i18n/it.po b/image_tag_environment/i18n/it.po
new file mode 100644
index 0000000000..3d4d2f19d0
--- /dev/null
+++ b/image_tag_environment/i18n/it.po
@@ -0,0 +1,89 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * image_tag
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2025-07-23 11:25+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 5.10.4\n"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__apply_on
+msgid "Apply On"
+msgstr "Applica a"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__create_uid
+msgid "Created by"
+msgstr "Creato da"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__create_date
+msgid "Created on"
+msgstr "Creato il"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__display_name
+msgid "Display Name"
+msgstr "Nome visualizzato"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__id
+msgid "ID"
+msgstr "ID"
+
+#. module: image_tag
+#: model:ir.actions.act_window,name:image_tag.act_open_image_tag_view
+#: model:ir.model,name:image_tag.model_image_tag
+#: model_terms:ir.ui.view,arch_db:image_tag.image_tag_view_search
+msgid "Image Tag"
+msgstr "Etichetta immagine"
+
+#. module: image_tag
+#: model:res.groups,name:image_tag.group_image_tag_manager
+msgid "Image Tag Manager"
+msgstr "Gestore etichetta immagine"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag____last_update
+msgid "Last Modified on"
+msgstr "Ultima modifica il"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__write_uid
+msgid "Last Updated by"
+msgstr "Ultimo aggiornamento di"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__write_date
+msgid "Last Updated on"
+msgstr "Ultimo aggiornamento il"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__name
+msgid "Name"
+msgstr "Nome"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__server_env_defaults
+msgid "Server Env Defaults"
+msgstr "Predefiniti ambiente server"
+
+#. module: image_tag
+#: model:ir.model.fields,field_description:image_tag.field_image_tag__tech_name
+msgid "Tech Name"
+msgstr "Nome tecnico"
+
+#. module: image_tag
+#: model:ir.model.fields,help:image_tag.field_image_tag__tech_name
+msgid "Unique name for technical purposes. Eg: server env keys."
+msgstr "Nome univoco per motivi tecnici. Es: chiavi server ambiente."
diff --git a/image_tag_environment/models/__init__.py b/image_tag_environment/models/__init__.py
new file mode 100644
index 0000000000..888490ab30
--- /dev/null
+++ b/image_tag_environment/models/__init__.py
@@ -0,0 +1 @@
+from . import image_tag
diff --git a/image_tag_environment/models/image_tag.py b/image_tag_environment/models/image_tag.py
new file mode 100644
index 0000000000..2c50349ff8
--- /dev/null
+++ b/image_tag_environment/models/image_tag.py
@@ -0,0 +1,11 @@
+# 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 models
+
+
+class ImageTag(models.Model):
+ _name = "image.tag"
+ _inherit = ["image.tag", "server.env.techname.mixin"]
diff --git a/image_tag_environment/pyproject.toml b/image_tag_environment/pyproject.toml
new file mode 100644
index 0000000000..4231d0cccb
--- /dev/null
+++ b/image_tag_environment/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["whool"]
+build-backend = "whool.buildapi"
diff --git a/image_tag_environment/readme/CONTRIBUTORS.md b/image_tag_environment/readme/CONTRIBUTORS.md
new file mode 100644
index 0000000000..bd5b07bb6d
--- /dev/null
+++ b/image_tag_environment/readme/CONTRIBUTORS.md
@@ -0,0 +1,2 @@
+- Laurent Mignon \
+- Maksym Yankin \
diff --git a/image_tag_environment/readme/DESCRIPTION.md b/image_tag_environment/readme/DESCRIPTION.md
new file mode 100644
index 0000000000..9eac5a11d6
--- /dev/null
+++ b/image_tag_environment/readme/DESCRIPTION.md
@@ -0,0 +1,2 @@
+Glue module to make Server Environment features available for the Image
+Tag addon.
diff --git a/image_tag_environment/readme/USAGE.md b/image_tag_environment/readme/USAGE.md
new file mode 100644
index 0000000000..b57527eec8
--- /dev/null
+++ b/image_tag_environment/readme/USAGE.md
@@ -0,0 +1 @@
+Specify technical name during the creation of an image tag.
diff --git a/image_tag_environment/static/description/icon.png b/image_tag_environment/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/image_tag_environment/static/description/index.html b/image_tag_environment/static/description/index.html
new file mode 100644
index 0000000000..3b2631d97a
--- /dev/null
+++ b/image_tag_environment/static/description/index.html
@@ -0,0 +1,437 @@
+
+
+
+
+
+README.rst
+
+
+
+
+
+
+
+
+
+
+
Image Tag - Server Environment
+
+

+
Glue module to make Server Environment features available for the Image
+Tag addon.
+
Table of contents
+
+
+
+
Specify technical name during the creation of an image tag.
+
+
+
+
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.
+
+
+
+
+
+
+- ACSONE SA/NV
+- Akretion
+
+
+
+
+
+
This module is maintained by the OCA.
+
+
+
+
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
This module is part of the OCA/storage project on GitHub.
+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
+
+
+
+
+
+
diff --git a/image_tag_environment/views/image_tag.xml b/image_tag_environment/views/image_tag.xml
new file mode 100644
index 0000000000..b1409ab2b0
--- /dev/null
+++ b/image_tag_environment/views/image_tag.xml
@@ -0,0 +1,21 @@
+
+
+
+ image.tag
+
+
+
+
+
+
+
+
+ image.tag
+
+
+
+
+
+
+
+