From 36a4f0967e39f6f85e7dc0a561363449642a2978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Fri, 11 Oct 2024 13:08:07 +0200 Subject: [PATCH 01/12] [ADD] project_tag_hierarchy: New module TT51195 [UPD] Update project_tag_hierarchy.pot [BOT] post-merge updates --- project_tag_hierarchy/README.rst | 86 ++++ project_tag_hierarchy/__init__.py | 1 + project_tag_hierarchy/__manifest__.py | 17 + project_tag_hierarchy/i18n/es.po | 45 ++ .../i18n/project_tag_hierarchy.pot | 41 ++ project_tag_hierarchy/models/__init__.py | 3 + project_tag_hierarchy/models/project_tags.py | 33 ++ project_tag_hierarchy/readme/CONTRIBUTORS.rst | 3 + project_tag_hierarchy/readme/DESCRIPTION.rst | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 427 ++++++++++++++++++ project_tag_hierarchy/tests/__init__.py | 4 + .../tests/test_project_tag_hierarchy.py | 25 + .../views/project_tags_views.xml | 23 + 14 files changed, 709 insertions(+) create mode 100644 project_tag_hierarchy/README.rst create mode 100644 project_tag_hierarchy/__init__.py create mode 100644 project_tag_hierarchy/__manifest__.py create mode 100644 project_tag_hierarchy/i18n/es.po create mode 100644 project_tag_hierarchy/i18n/project_tag_hierarchy.pot create mode 100644 project_tag_hierarchy/models/__init__.py create mode 100644 project_tag_hierarchy/models/project_tags.py create mode 100644 project_tag_hierarchy/readme/CONTRIBUTORS.rst create mode 100644 project_tag_hierarchy/readme/DESCRIPTION.rst create mode 100644 project_tag_hierarchy/static/description/icon.png create mode 100644 project_tag_hierarchy/static/description/index.html create mode 100644 project_tag_hierarchy/tests/__init__.py create mode 100644 project_tag_hierarchy/tests/test_project_tag_hierarchy.py create mode 100644 project_tag_hierarchy/views/project_tags_views.xml diff --git a/project_tag_hierarchy/README.rst b/project_tag_hierarchy/README.rst new file mode 100644 index 0000000000..5c10bad5cb --- /dev/null +++ b/project_tag_hierarchy/README.rst @@ -0,0 +1,86 @@ +===================== +Project Tag Hierarchy +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5fb078d69248b36ffe14542494ea9ede7cf8c521fc5ea432189cf7a00d697cf3 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github + :target: https://github.com/OCA/project/tree/16.0/project_tag_hierarchy + :alt: OCA/project +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_tag_hierarchy + :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/project&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Hierarchy is added to the project labels. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Tecnativa + +Contributors +~~~~~~~~~~~~ + +* `Tecnativa `_: + * Víctor Martínez + * Pedro M. Baeza + +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-victoralmau| image:: https://github.com/victoralmau.png?size=40px + :target: https://github.com/victoralmau + :alt: victoralmau + +Current `maintainer `__: + +|maintainer-victoralmau| + +This module is part of the `OCA/project `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/project_tag_hierarchy/__init__.py b/project_tag_hierarchy/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/project_tag_hierarchy/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/project_tag_hierarchy/__manifest__.py b/project_tag_hierarchy/__manifest__.py new file mode 100644 index 0000000000..5206d5b30c --- /dev/null +++ b/project_tag_hierarchy/__manifest__.py @@ -0,0 +1,17 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": "Project Tag Hierarchy", + "version": "16.0.1.0.0", + "category": "Project Management", + "website": "https://github.com/OCA/project", + "author": "Tecnativa, Odoo Community Association (OCA)", + "license": "AGPL-3", + "depends": ["project"], + "installable": True, + "auto_install": True, + "data": [ + "views/project_tags_views.xml", + ], + "maintainers": ["victoralmau"], +} diff --git a/project_tag_hierarchy/i18n/es.po b/project_tag_hierarchy/i18n/es.po new file mode 100644 index 0000000000..1088a6f5e7 --- /dev/null +++ b/project_tag_hierarchy/i18n/es.po @@ -0,0 +1,45 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_tag_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-11 11:32+0000\n" +"PO-Revision-Date: 2024-10-11 13:33+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"X-Generator: Poedit 3.0.1\n" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__child_ids +msgid "Child Tags" +msgstr "Etiquetas hijas" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_path +msgid "Parent Path" +msgstr "Ruta padre" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_id +msgid "Parent Tag" +msgstr "Etiqueta padre" + +#. module: project_tag_hierarchy +#: model:ir.model,name:project_tag_hierarchy.model_project_tags +msgid "Project Tags" +msgstr "Etiquetas del proyecto" + +#. module: project_tag_hierarchy +#. odoo-python +#: code:addons/project_tag_hierarchy/models/project_tags.py:0 +#, python-format +msgid "You can not create recursive tags." +msgstr "No puede crear etiquetas recursivas." diff --git a/project_tag_hierarchy/i18n/project_tag_hierarchy.pot b/project_tag_hierarchy/i18n/project_tag_hierarchy.pot new file mode 100644 index 0000000000..fafdf10e7e --- /dev/null +++ b/project_tag_hierarchy/i18n/project_tag_hierarchy.pot @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_tag_hierarchy +# +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: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__child_ids +msgid "Child Tags" +msgstr "" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_path +msgid "Parent Path" +msgstr "" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_id +msgid "Parent Tag" +msgstr "" + +#. module: project_tag_hierarchy +#: model:ir.model,name:project_tag_hierarchy.model_project_tags +msgid "Project Tags" +msgstr "" + +#. module: project_tag_hierarchy +#. odoo-python +#: code:addons/project_tag_hierarchy/models/project_tags.py:0 +#, python-format +msgid "You can not create recursive tags." +msgstr "" diff --git a/project_tag_hierarchy/models/__init__.py b/project_tag_hierarchy/models/__init__.py new file mode 100644 index 0000000000..c94a97032d --- /dev/null +++ b/project_tag_hierarchy/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import project_tags diff --git a/project_tag_hierarchy/models/project_tags.py b/project_tag_hierarchy/models/project_tags.py new file mode 100644 index 0000000000..471a26e022 --- /dev/null +++ b/project_tag_hierarchy/models/project_tags.py @@ -0,0 +1,33 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class ProjectTags(models.Model): + _inherit = "project.tags" + _parent_store = True + + parent_id = fields.Many2one( + comodel_name="project.tags", string="Parent Tag", index=True, ondelete="cascade" + ) + child_ids = fields.One2many( + comodel_name="project.tags", inverse_name="parent_id", string="Child Tags" + ) + parent_path = fields.Char(index=True, unaccent=False) + + def name_get(self): + res = [] + for tag in self: + names = [] + current = tag + while current: + names.append(current.name) + current = current.parent_id + res.append((tag.id, " / ".join(reversed(names)))) + return res + + @api.constrains("parent_id") + def _check_parent_id(self): + if not self._check_recursion(): + raise ValidationError(_("You can not create recursive tags.")) diff --git a/project_tag_hierarchy/readme/CONTRIBUTORS.rst b/project_tag_hierarchy/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..2327c90dff --- /dev/null +++ b/project_tag_hierarchy/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Tecnativa `_: + * Víctor Martínez + * Pedro M. Baeza diff --git a/project_tag_hierarchy/readme/DESCRIPTION.rst b/project_tag_hierarchy/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..5d769a0eaa --- /dev/null +++ b/project_tag_hierarchy/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Hierarchy is added to the project labels. diff --git a/project_tag_hierarchy/static/description/icon.png b/project_tag_hierarchy/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/project_tag_hierarchy/static/description/index.html b/project_tag_hierarchy/static/description/index.html new file mode 100644 index 0000000000..5293050c51 --- /dev/null +++ b/project_tag_hierarchy/static/description/index.html @@ -0,0 +1,427 @@ + + + + + +Project Tag Hierarchy + + + +
+

Project Tag Hierarchy

+ + +

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

+

Hierarchy is added to the project labels.

+

Table of contents

+ +
+

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

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+
    +
  • Tecnativa: +* Víctor Martínez +* Pedro M. Baeza
  • +
+
+
+

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:

+

victoralmau

+

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

+

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

+
+
+
+ + diff --git a/project_tag_hierarchy/tests/__init__.py b/project_tag_hierarchy/tests/__init__.py new file mode 100644 index 0000000000..a58564d47b --- /dev/null +++ b/project_tag_hierarchy/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_project_tag_hierarchy diff --git a/project_tag_hierarchy/tests/test_project_tag_hierarchy.py b/project_tag_hierarchy/tests/test_project_tag_hierarchy.py new file mode 100644 index 0000000000..a9645fb5e7 --- /dev/null +++ b/project_tag_hierarchy/tests/test_project_tag_hierarchy.py @@ -0,0 +1,25 @@ +# Copyright 2024 Tecnativa - Víctor Martínez +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.addons.base.tests.common import BaseCommon + + +class TestProjectTagHierarchy(BaseCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.tag_1 = cls.env["project.tags"].create({"name": "Tag 1"}) + cls.tag_2 = cls.env["project.tags"].create( + {"name": "Tag 2", "parent_id": cls.tag_1.id} + ) + cls.tag_3 = cls.env["project.tags"].create( + {"name": "Tag 3", "parent_id": cls.tag_2.id} + ) + + def test_project_tag_name_get(self): + tag_1_name = self.tag_1.name_get() + self.assertEqual(tag_1_name[0][1], "Tag 1") + tag_2_name = self.tag_2.name_get() + self.assertEqual(tag_2_name[0][1], "Tag 1 / Tag 2") + tag_3_name = self.tag_3.name_get() + self.assertEqual(tag_3_name[0][1], "Tag 1 / Tag 2 / Tag 3") diff --git a/project_tag_hierarchy/views/project_tags_views.xml b/project_tag_hierarchy/views/project_tags_views.xml new file mode 100644 index 0000000000..75f73179a6 --- /dev/null +++ b/project_tag_hierarchy/views/project_tags_views.xml @@ -0,0 +1,23 @@ + + + + project.tags.tree + project.tags + + + + + + + + + project.tags.form + project.tags + + + + + + + + From 4333a2751882f1ca1e4a33da5bfa4d92bca62016 Mon Sep 17 00:00:00 2001 From: mymage Date: Mon, 21 Oct 2024 07:34:24 +0000 Subject: [PATCH 02/12] Added translation using Weblate (Italian) Translated using Weblate (Italian) Currently translated at 100.0% (5 of 5 strings) Translation: project-16.0/project-16.0-project_tag_hierarchy Translate-URL: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_tag_hierarchy/it/ --- project_tag_hierarchy/i18n/it.po | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 project_tag_hierarchy/i18n/it.po diff --git a/project_tag_hierarchy/i18n/it.po b/project_tag_hierarchy/i18n/it.po new file mode 100644 index 0000000000..70e5fbabe4 --- /dev/null +++ b/project_tag_hierarchy/i18n/it.po @@ -0,0 +1,44 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_tag_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-10-21 10:06+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.6.2\n" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__child_ids +msgid "Child Tags" +msgstr "Etichette figlie" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_path +msgid "Parent Path" +msgstr "Percorso padre" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_id +msgid "Parent Tag" +msgstr "Etichetta padre" + +#. module: project_tag_hierarchy +#: model:ir.model,name:project_tag_hierarchy.model_project_tags +msgid "Project Tags" +msgstr "Etichette progetto" + +#. module: project_tag_hierarchy +#. odoo-python +#: code:addons/project_tag_hierarchy/models/project_tags.py:0 +#, python-format +msgid "You can not create recursive tags." +msgstr "Non si possono creare etichette ricorsive." From d25ad2648315fdd2330fe6516c3902a370c41cd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 20 Mar 2025 11:02:35 +0100 Subject: [PATCH 03/12] [IMP] project_tag_hierarchy: pre-commit auto fixes --- project_tag_hierarchy/README.rst | 23 ++++++++++--------- project_tag_hierarchy/pyproject.toml | 3 +++ project_tag_hierarchy/readme/CONTRIBUTORS.md | 3 +++ project_tag_hierarchy/readme/CONTRIBUTORS.rst | 3 --- .../{DESCRIPTION.rst => DESCRIPTION.md} | 0 .../static/description/index.html | 14 ++++++----- 6 files changed, 26 insertions(+), 20 deletions(-) create mode 100644 project_tag_hierarchy/pyproject.toml create mode 100644 project_tag_hierarchy/readme/CONTRIBUTORS.md delete mode 100644 project_tag_hierarchy/readme/CONTRIBUTORS.rst rename project_tag_hierarchy/readme/{DESCRIPTION.rst => DESCRIPTION.md} (100%) diff --git a/project_tag_hierarchy/README.rst b/project_tag_hierarchy/README.rst index 5c10bad5cb..c3ee117be7 100644 --- a/project_tag_hierarchy/README.rst +++ b/project_tag_hierarchy/README.rst @@ -17,13 +17,13 @@ Project Tag Hierarchy :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github - :target: https://github.com/OCA/project/tree/16.0/project_tag_hierarchy + :target: https://github.com/OCA/project/tree/18.0/project_tag_hierarchy :alt: OCA/project .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_tag_hierarchy + :target: https://translation.odoo-community.org/projects/project-18-0/project-18-0-project_tag_hierarchy :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/project&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/project&target_branch=18.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -41,7 +41,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. @@ -49,19 +49,20 @@ Credits ======= Authors -~~~~~~~ +------- * Tecnativa Contributors -~~~~~~~~~~~~ +------------ -* `Tecnativa `_: - * Víctor Martínez - * Pedro M. Baeza +- `Tecnativa `__: + + - Víctor Martínez + - Pedro M. Baeza Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -81,6 +82,6 @@ Current `maintainer `__: |maintainer-victoralmau| -This module is part of the `OCA/project `_ project on GitHub. +This module is part of the `OCA/project `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/project_tag_hierarchy/pyproject.toml b/project_tag_hierarchy/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/project_tag_hierarchy/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/project_tag_hierarchy/readme/CONTRIBUTORS.md b/project_tag_hierarchy/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..5fee390427 --- /dev/null +++ b/project_tag_hierarchy/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- [Tecnativa](https://www.tecnativa.com): + - Víctor Martínez + - Pedro M. Baeza diff --git a/project_tag_hierarchy/readme/CONTRIBUTORS.rst b/project_tag_hierarchy/readme/CONTRIBUTORS.rst deleted file mode 100644 index 2327c90dff..0000000000 --- a/project_tag_hierarchy/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,3 +0,0 @@ -* `Tecnativa `_: - * Víctor Martínez - * Pedro M. Baeza diff --git a/project_tag_hierarchy/readme/DESCRIPTION.rst b/project_tag_hierarchy/readme/DESCRIPTION.md similarity index 100% rename from project_tag_hierarchy/readme/DESCRIPTION.rst rename to project_tag_hierarchy/readme/DESCRIPTION.md diff --git a/project_tag_hierarchy/static/description/index.html b/project_tag_hierarchy/static/description/index.html index 5293050c51..aa8275f327 100644 --- a/project_tag_hierarchy/static/description/index.html +++ b/project_tag_hierarchy/static/description/index.html @@ -369,7 +369,7 @@

Project Tag Hierarchy

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:5fb078d69248b36ffe14542494ea9ede7cf8c521fc5ea432189cf7a00d697cf3 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Hierarchy is added to the project labels.

Table of contents

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

@@ -402,9 +402,11 @@

Authors

Contributors

    -
  • Tecnativa: -* Víctor Martínez -* Pedro M. Baeza
  • +
  • Tecnativa:
      +
    • Víctor Martínez
    • +
    • Pedro M. Baeza
    • +
    +
@@ -418,7 +420,7 @@

Maintainers

promote its widespread use.

Current maintainer:

victoralmau

-

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

+

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

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

From b56fae5d941e9a981900ebf9783255b7bf5ce57c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 20 Mar 2025 11:03:39 +0100 Subject: [PATCH 04/12] [MIG] project_tag_hierarchy: Migration to 18.0 TT55549 --- project_tag_hierarchy/__manifest__.py | 2 +- project_tag_hierarchy/models/project_tags.py | 13 ++++++------- .../tests/test_project_tag_hierarchy.py | 11 ++++------- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/project_tag_hierarchy/__manifest__.py b/project_tag_hierarchy/__manifest__.py index 5206d5b30c..8f6750067b 100644 --- a/project_tag_hierarchy/__manifest__.py +++ b/project_tag_hierarchy/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Project Tag Hierarchy", - "version": "16.0.1.0.0", + "version": "18.0.1.0.0", "category": "Project Management", "website": "https://github.com/OCA/project", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/project_tag_hierarchy/models/project_tags.py b/project_tag_hierarchy/models/project_tags.py index 471a26e022..82adc81d96 100644 --- a/project_tag_hierarchy/models/project_tags.py +++ b/project_tag_hierarchy/models/project_tags.py @@ -1,4 +1,4 @@ -# Copyright 2024 Tecnativa - Víctor Martínez +# Copyright 2024-2025 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) from odoo import _, api, fields, models from odoo.exceptions import ValidationError @@ -14,20 +14,19 @@ class ProjectTags(models.Model): child_ids = fields.One2many( comodel_name="project.tags", inverse_name="parent_id", string="Child Tags" ) - parent_path = fields.Char(index=True, unaccent=False) + parent_path = fields.Char(index=True) - def name_get(self): - res = [] + @api.depends("name", "parent_id") + def _compute_display_name(self): for tag in self: names = [] current = tag while current: names.append(current.name) current = current.parent_id - res.append((tag.id, " / ".join(reversed(names)))) - return res + tag.display_name = " / ".join(reversed(names)) @api.constrains("parent_id") def _check_parent_id(self): - if not self._check_recursion(): + if self._has_cycle(): raise ValidationError(_("You can not create recursive tags.")) diff --git a/project_tag_hierarchy/tests/test_project_tag_hierarchy.py b/project_tag_hierarchy/tests/test_project_tag_hierarchy.py index a9645fb5e7..87a877344a 100644 --- a/project_tag_hierarchy/tests/test_project_tag_hierarchy.py +++ b/project_tag_hierarchy/tests/test_project_tag_hierarchy.py @@ -1,4 +1,4 @@ -# Copyright 2024 Tecnativa - Víctor Martínez +# Copyright 2024-2025 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo.addons.base.tests.common import BaseCommon @@ -17,9 +17,6 @@ def setUpClass(cls): ) def test_project_tag_name_get(self): - tag_1_name = self.tag_1.name_get() - self.assertEqual(tag_1_name[0][1], "Tag 1") - tag_2_name = self.tag_2.name_get() - self.assertEqual(tag_2_name[0][1], "Tag 1 / Tag 2") - tag_3_name = self.tag_3.name_get() - self.assertEqual(tag_3_name[0][1], "Tag 1 / Tag 2 / Tag 3") + self.assertEqual(self.tag_1.display_name, "Tag 1") + self.assertEqual(self.tag_2.display_name, "Tag 1 / Tag 2") + self.assertEqual(self.tag_3.display_name, "Tag 1 / Tag 2 / Tag 3") From 7422590879ec872ad87971c6feb7fe9bf65e8635 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Sun, 23 Mar 2025 20:16:42 +0000 Subject: [PATCH 05/12] [UPD] Update project_tag_hierarchy.pot --- project_tag_hierarchy/i18n/project_tag_hierarchy.pot | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/project_tag_hierarchy/i18n/project_tag_hierarchy.pot b/project_tag_hierarchy/i18n/project_tag_hierarchy.pot index fafdf10e7e..2db34ac1b6 100644 --- a/project_tag_hierarchy/i18n/project_tag_hierarchy.pot +++ b/project_tag_hierarchy/i18n/project_tag_hierarchy.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -36,6 +36,5 @@ msgstr "" #. module: project_tag_hierarchy #. odoo-python #: code:addons/project_tag_hierarchy/models/project_tags.py:0 -#, python-format msgid "You can not create recursive tags." msgstr "" From cc231ac5cfc503421e9758657aa5e4e3dff7ed10 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 23 Mar 2025 20:18:58 +0000 Subject: [PATCH 06/12] [BOT] post-merge updates --- project_tag_hierarchy/README.rst | 8 ++++---- project_tag_hierarchy/static/description/index.html | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/project_tag_hierarchy/README.rst b/project_tag_hierarchy/README.rst index c3ee117be7..da9f4d37b2 100644 --- a/project_tag_hierarchy/README.rst +++ b/project_tag_hierarchy/README.rst @@ -7,7 +7,7 @@ Project Tag Hierarchy !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:5fb078d69248b36ffe14542494ea9ede7cf8c521fc5ea432189cf7a00d697cf3 + !! source digest: sha256:81ae725f0d7f7ab3ae1b8eec654315661c936df00aa9dda44729729256782e0a !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -56,10 +56,10 @@ Authors Contributors ------------ -- `Tecnativa `__: +- `Tecnativa `__: - - Víctor Martínez - - Pedro M. Baeza + - Víctor Martínez + - Pedro M. Baeza Maintainers ----------- diff --git a/project_tag_hierarchy/static/description/index.html b/project_tag_hierarchy/static/description/index.html index aa8275f327..6c0a1cfda6 100644 --- a/project_tag_hierarchy/static/description/index.html +++ b/project_tag_hierarchy/static/description/index.html @@ -367,7 +367,7 @@

Project Tag Hierarchy

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:5fb078d69248b36ffe14542494ea9ede7cf8c521fc5ea432189cf7a00d697cf3 +!! source digest: sha256:81ae725f0d7f7ab3ae1b8eec654315661c936df00aa9dda44729729256782e0a !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

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

Hierarchy is added to the project labels.

From 1f07780c389cb18c476030d3e0ded572908d70a8 Mon Sep 17 00:00:00 2001 From: Marcel Savegnago Date: Thu, 22 May 2025 18:14:56 +0000 Subject: [PATCH 07/12] Added translation using Weblate (Portuguese (Brazil)) --- project_tag_hierarchy/i18n/pt_BR.po | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 project_tag_hierarchy/i18n/pt_BR.po diff --git a/project_tag_hierarchy/i18n/pt_BR.po b/project_tag_hierarchy/i18n/pt_BR.po new file mode 100644 index 0000000000..b2aa344576 --- /dev/null +++ b/project_tag_hierarchy/i18n/pt_BR.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_tag_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt_BR\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: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__child_ids +msgid "Child Tags" +msgstr "" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_path +msgid "Parent Path" +msgstr "" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_id +msgid "Parent Tag" +msgstr "" + +#. module: project_tag_hierarchy +#: model:ir.model,name:project_tag_hierarchy.model_project_tags +msgid "Project Tags" +msgstr "" + +#. module: project_tag_hierarchy +#. odoo-python +#: code:addons/project_tag_hierarchy/models/project_tags.py:0 +msgid "You can not create recursive tags." +msgstr "" From a3e2941841268f3e0944a1b1249ff1a211e84c03 Mon Sep 17 00:00:00 2001 From: jakobkrabbe Date: Tue, 7 Oct 2025 09:43:03 +0000 Subject: [PATCH 08/12] Added translation using Weblate (Swedish) --- project_tag_hierarchy/i18n/sv.po | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 project_tag_hierarchy/i18n/sv.po diff --git a/project_tag_hierarchy/i18n/sv.po b/project_tag_hierarchy/i18n/sv.po new file mode 100644 index 0000000000..e58149d079 --- /dev/null +++ b/project_tag_hierarchy/i18n/sv.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_tag_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: sv\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: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__child_ids +msgid "Child Tags" +msgstr "" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_path +msgid "Parent Path" +msgstr "" + +#. module: project_tag_hierarchy +#: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_id +msgid "Parent Tag" +msgstr "" + +#. module: project_tag_hierarchy +#: model:ir.model,name:project_tag_hierarchy.model_project_tags +msgid "Project Tags" +msgstr "" + +#. module: project_tag_hierarchy +#. odoo-python +#: code:addons/project_tag_hierarchy/models/project_tags.py:0 +msgid "You can not create recursive tags." +msgstr "" From 11d2f12a1798d6cdc2f70c8b6e582a3b4c7ad141 Mon Sep 17 00:00:00 2001 From: jakobkrabbe Date: Tue, 7 Oct 2025 09:45:44 +0000 Subject: [PATCH 09/12] Translated using Weblate (Swedish) Currently translated at 100.0% (5 of 5 strings) Translation: project-18.0/project-18.0-project_tag_hierarchy Translate-URL: https://translation.odoo-community.org/projects/project-18-0/project-18-0-project_tag_hierarchy/sv/ --- project_tag_hierarchy/i18n/sv.po | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/project_tag_hierarchy/i18n/sv.po b/project_tag_hierarchy/i18n/sv.po index e58149d079..d6a214d8a3 100644 --- a/project_tag_hierarchy/i18n/sv.po +++ b/project_tag_hierarchy/i18n/sv.po @@ -6,36 +6,38 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2025-10-07 12:42+0000\n" +"Last-Translator: jakobkrabbe \n" "Language-Team: none\n" "Language: sv\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: project_tag_hierarchy #: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__child_ids msgid "Child Tags" -msgstr "" +msgstr "Underliggande taggar" #. module: project_tag_hierarchy #: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_path msgid "Parent Path" -msgstr "" +msgstr "Överliggande sökväg" #. module: project_tag_hierarchy #: model:ir.model.fields,field_description:project_tag_hierarchy.field_project_tags__parent_id msgid "Parent Tag" -msgstr "" +msgstr "Överliggande taggar" #. module: project_tag_hierarchy #: model:ir.model,name:project_tag_hierarchy.model_project_tags msgid "Project Tags" -msgstr "" +msgstr "Projekttaggar" #. module: project_tag_hierarchy #. odoo-python #: code:addons/project_tag_hierarchy/models/project_tags.py:0 msgid "You can not create recursive tags." -msgstr "" +msgstr "Du kan inte skapa rekursiva taggar." From 1ef68a8a6286a47403987cdc89adf7867ff80dee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Mart=C3=ADnez?= Date: Thu, 16 Oct 2025 17:09:49 +0200 Subject: [PATCH 10/12] [IMP] project_tag*: Remove auto_install=True Related to https://github.com/OCA/project/pull/1449#issuecomment-3411217883 --- project_tag_hierarchy/README.rst | 6 +++--- project_tag_hierarchy/__manifest__.py | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/project_tag_hierarchy/README.rst b/project_tag_hierarchy/README.rst index da9f4d37b2..5a702661f8 100644 --- a/project_tag_hierarchy/README.rst +++ b/project_tag_hierarchy/README.rst @@ -56,10 +56,10 @@ Authors Contributors ------------ -- `Tecnativa `__: +- `Tecnativa `__: - - Víctor Martínez - - Pedro M. Baeza + - Víctor Martínez + - Pedro M. Baeza Maintainers ----------- diff --git a/project_tag_hierarchy/__manifest__.py b/project_tag_hierarchy/__manifest__.py index 8f6750067b..d17f15665d 100644 --- a/project_tag_hierarchy/__manifest__.py +++ b/project_tag_hierarchy/__manifest__.py @@ -9,7 +9,6 @@ "license": "AGPL-3", "depends": ["project"], "installable": True, - "auto_install": True, "data": [ "views/project_tags_views.xml", ], From 41b1c957e57a4c3fd820b6a6ba054ea7a5a70dad Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 21 Oct 2025 15:48:18 +0000 Subject: [PATCH 11/12] [BOT] post-merge updates --- project_tag_hierarchy/README.rst | 14 ++++++---- project_tag_hierarchy/__manifest__.py | 2 +- .../static/description/index.html | 26 ++++++++++++------- 3 files changed, 26 insertions(+), 16 deletions(-) diff --git a/project_tag_hierarchy/README.rst b/project_tag_hierarchy/README.rst index 5a702661f8..53a8f054ba 100644 --- a/project_tag_hierarchy/README.rst +++ b/project_tag_hierarchy/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ===================== Project Tag Hierarchy ===================== @@ -7,13 +11,13 @@ Project Tag Hierarchy !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:81ae725f0d7f7ab3ae1b8eec654315661c936df00aa9dda44729729256782e0a + !! source digest: sha256:b3f376747bc00612503681b09b50cd689c1a525e4f6f8150a9a2e0beeb214005 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png +.. |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%2Fproject-lightgray.png?logo=github @@ -56,10 +60,10 @@ Authors Contributors ------------ -- `Tecnativa `__: +- `Tecnativa `__: - - Víctor Martínez - - Pedro M. Baeza + - Víctor Martínez + - Pedro M. Baeza Maintainers ----------- diff --git a/project_tag_hierarchy/__manifest__.py b/project_tag_hierarchy/__manifest__.py index d17f15665d..9da0a40f90 100644 --- a/project_tag_hierarchy/__manifest__.py +++ b/project_tag_hierarchy/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Project Tag Hierarchy", - "version": "18.0.1.0.0", + "version": "18.0.1.0.1", "category": "Project Management", "website": "https://github.com/OCA/project", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/project_tag_hierarchy/static/description/index.html b/project_tag_hierarchy/static/description/index.html index 6c0a1cfda6..5840152cdf 100644 --- a/project_tag_hierarchy/static/description/index.html +++ b/project_tag_hierarchy/static/description/index.html @@ -3,7 +3,7 @@ -Project Tag Hierarchy +README.rst -
-

Project Tag Hierarchy

+
+ + +Odoo Community Association + +
+

Project Tag Hierarchy

-

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

+

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

Hierarchy is added to the project labels.

Table of contents

@@ -384,7 +389,7 @@

Project Tag Hierarchy

-

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 @@ -392,15 +397,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Tecnativa
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -425,5 +430,6 @@

Maintainers

+
From 685a4eb473cdccaca54076fae8c0888dc0771ce9 Mon Sep 17 00:00:00 2001 From: stferraro Date: Fri, 24 Apr 2026 21:00:36 -0400 Subject: [PATCH 12/12] [MIG] project_tag_hierarchy: Migration to 19.0 --- project_tag_hierarchy/README.rst | 10 +++++----- project_tag_hierarchy/__manifest__.py | 2 +- project_tag_hierarchy/models/project_tags.py | 4 ++-- project_tag_hierarchy/static/description/index.html | 6 +++--- .../tests/test_project_tag_hierarchy.py | 12 ++++++++++++ 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/project_tag_hierarchy/README.rst b/project_tag_hierarchy/README.rst index 53a8f054ba..5d9fbc4413 100644 --- a/project_tag_hierarchy/README.rst +++ b/project_tag_hierarchy/README.rst @@ -21,13 +21,13 @@ Project Tag Hierarchy :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github - :target: https://github.com/OCA/project/tree/18.0/project_tag_hierarchy + :target: https://github.com/OCA/project/tree/19.0/project_tag_hierarchy :alt: OCA/project .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/project-18-0/project-18-0-project_tag_hierarchy + :target: https://translation.odoo-community.org/projects/project-19-0/project-19-0-project_tag_hierarchy :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/project&target_branch=18.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/project&target_branch=19.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,7 +45,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 @@ Current `maintainer `__: |maintainer-victoralmau| -This module is part of the `OCA/project `_ project on GitHub. +This module is part of the `OCA/project `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/project_tag_hierarchy/__manifest__.py b/project_tag_hierarchy/__manifest__.py index 9da0a40f90..7e21d78428 100644 --- a/project_tag_hierarchy/__manifest__.py +++ b/project_tag_hierarchy/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Project Tag Hierarchy", - "version": "18.0.1.0.1", + "version": "19.0.1.0.0", "category": "Project Management", "website": "https://github.com/OCA/project", "author": "Tecnativa, Odoo Community Association (OCA)", diff --git a/project_tag_hierarchy/models/project_tags.py b/project_tag_hierarchy/models/project_tags.py index 82adc81d96..afe71bc66c 100644 --- a/project_tag_hierarchy/models/project_tags.py +++ b/project_tag_hierarchy/models/project_tags.py @@ -1,6 +1,6 @@ # Copyright 2024-2025 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) -from odoo import _, api, fields, models +from odoo import api, fields, models from odoo.exceptions import ValidationError @@ -29,4 +29,4 @@ def _compute_display_name(self): @api.constrains("parent_id") def _check_parent_id(self): if self._has_cycle(): - raise ValidationError(_("You can not create recursive tags.")) + raise ValidationError(self.env._("You can not create recursive tags.")) diff --git a/project_tag_hierarchy/static/description/index.html b/project_tag_hierarchy/static/description/index.html index 5840152cdf..7aca1e202c 100644 --- a/project_tag_hierarchy/static/description/index.html +++ b/project_tag_hierarchy/static/description/index.html @@ -374,7 +374,7 @@

Project Tag Hierarchy

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:b3f376747bc00612503681b09b50cd689c1a525e4f6f8150a9a2e0beeb214005 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

Hierarchy is added to the project labels.

Table of contents

@@ -393,7 +393,7 @@

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -425,7 +425,7 @@

Maintainers

promote its widespread use.

Current maintainer:

victoralmau

-

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

+

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

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

diff --git a/project_tag_hierarchy/tests/test_project_tag_hierarchy.py b/project_tag_hierarchy/tests/test_project_tag_hierarchy.py index 87a877344a..2dece85ff9 100644 --- a/project_tag_hierarchy/tests/test_project_tag_hierarchy.py +++ b/project_tag_hierarchy/tests/test_project_tag_hierarchy.py @@ -1,5 +1,8 @@ # Copyright 2024-2025 Tecnativa - Víctor Martínez # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from unittest.mock import patch + +from odoo.exceptions import UserError, ValidationError from odoo.addons.base.tests.common import BaseCommon @@ -20,3 +23,12 @@ def test_project_tag_name_get(self): self.assertEqual(self.tag_1.display_name, "Tag 1") self.assertEqual(self.tag_2.display_name, "Tag 1 / Tag 2") self.assertEqual(self.tag_3.display_name, "Tag 1 / Tag 2 / Tag 3") + + def test_project_tag_no_recursion(self): + with self.assertRaises(UserError): + self.tag_1.parent_id = self.tag_3.id + + def test_check_parent_id_raises_validation_error(self): + with patch.object(type(self.tag_1), "_has_cycle", return_value=True): + with self.assertRaises(ValidationError): + self.tag_1._check_parent_id()