From 21fa6ba46c1683299f25ae0093fff3074e38fb9a Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Thu, 21 Nov 2019 16:42:20 +0100 Subject: [PATCH 01/16] [ADD] maintenance_team_hierarchy --- maintenance_team_hierarchy/README.rst | 73 +++ maintenance_team_hierarchy/__init__.py | 1 + maintenance_team_hierarchy/__manifest__.py | 14 + maintenance_team_hierarchy/i18n/es.po | 37 ++ .../i18n/maintenance_team_hierarchy.pot | 35 ++ maintenance_team_hierarchy/models/__init__.py | 1 + .../models/maintenance_team.py | 49 ++ .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 419 ++++++++++++++++++ maintenance_team_hierarchy/tests/__init__.py | 1 + .../tests/test_team_hierarchy.py | 72 +++ .../views/maintenance_team.xml | 33 ++ 14 files changed, 737 insertions(+) create mode 100644 maintenance_team_hierarchy/README.rst create mode 100644 maintenance_team_hierarchy/__init__.py create mode 100644 maintenance_team_hierarchy/__manifest__.py create mode 100644 maintenance_team_hierarchy/i18n/es.po create mode 100644 maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot create mode 100644 maintenance_team_hierarchy/models/__init__.py create mode 100644 maintenance_team_hierarchy/models/maintenance_team.py create mode 100644 maintenance_team_hierarchy/readme/CONTRIBUTORS.rst create mode 100644 maintenance_team_hierarchy/readme/DESCRIPTION.rst create mode 100644 maintenance_team_hierarchy/static/description/icon.png create mode 100644 maintenance_team_hierarchy/static/description/index.html create mode 100644 maintenance_team_hierarchy/tests/__init__.py create mode 100644 maintenance_team_hierarchy/tests/test_team_hierarchy.py create mode 100644 maintenance_team_hierarchy/views/maintenance_team.xml diff --git a/maintenance_team_hierarchy/README.rst b/maintenance_team_hierarchy/README.rst new file mode 100644 index 000000000..acc0cc84b --- /dev/null +++ b/maintenance_team_hierarchy/README.rst @@ -0,0 +1,73 @@ +========================== +Maintenance Team Hierarchy +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github + :target: https://github.com/OCA/maintenance/tree/11.0/maintenance_team_hierarchy + :alt: OCA/maintenance +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/maintenance-11-0/maintenance-11-0-maintenance_team_hierarchy + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/240/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This addon allows to define a hierarchy of teams and teams show the related requests + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Creu Blanca + +Contributors +~~~~~~~~~~~~ + +* Enric Tobella + +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/maintenance `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/maintenance_team_hierarchy/__init__.py b/maintenance_team_hierarchy/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/maintenance_team_hierarchy/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/maintenance_team_hierarchy/__manifest__.py b/maintenance_team_hierarchy/__manifest__.py new file mode 100644 index 000000000..36e65b131 --- /dev/null +++ b/maintenance_team_hierarchy/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Maintenance Team Hierarchy", + "summary": """ + Create hierarchies on teams""", + "version": "11.0.1.0.0", + "license": "AGPL-3", + "author": "Creu Blanca,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/maintenance", + "depends": ["maintenance"], + "data": ["views/maintenance_team.xml"], +} diff --git a/maintenance_team_hierarchy/i18n/es.po b/maintenance_team_hierarchy/i18n/es.po new file mode 100644 index 000000000..90e29e715 --- /dev/null +++ b/maintenance_team_hierarchy/i18n/es.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_team_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2019-12-12 15:05+0000\n" +"Last-Translator: Jaime Arroyo \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 3.9.1\n" + +#. module: maintenance_team_hierarchy +#: model:ir.model,name:maintenance_team_hierarchy.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Equipos de Mantenimiento" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_id +msgid "Parent" +msgstr "Padre" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_left +msgid "Parent Left" +msgstr "Padre izquierdo" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_right +msgid "Parent Right" +msgstr "Padre derecho" diff --git a/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot b/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot new file mode 100644 index 000000000..a89a8ff64 --- /dev/null +++ b/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot @@ -0,0 +1,35 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_team_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.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: maintenance_team_hierarchy +#: model:ir.model,name:maintenance_team_hierarchy.model_maintenance_team +msgid "Maintenance Teams" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_id +msgid "Parent" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_left +msgid "Parent Left" +msgstr "" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_right +msgid "Parent Right" +msgstr "" + diff --git a/maintenance_team_hierarchy/models/__init__.py b/maintenance_team_hierarchy/models/__init__.py new file mode 100644 index 000000000..e4c1bcba9 --- /dev/null +++ b/maintenance_team_hierarchy/models/__init__.py @@ -0,0 +1 @@ +from . import maintenance_team diff --git a/maintenance_team_hierarchy/models/maintenance_team.py b/maintenance_team_hierarchy/models/maintenance_team.py new file mode 100644 index 000000000..d91de85fe --- /dev/null +++ b/maintenance_team_hierarchy/models/maintenance_team.py @@ -0,0 +1,49 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class MaintenanceTeam(models.Model): + + _parent_name = "parent_id" + _parent_store = True + _parent_order = "name" + _inherit = "maintenance.team" + + parent_id = fields.Many2one("maintenance.team", ondelete="restrict") + parent_left = fields.Integer(index=True) + parent_right = fields.Integer(index=True) + request_ids = fields.Many2many( + "maintenance.request", compute="_compute_request_ids" + ) + + def _compute_request_ids(self): + for record in self: + record.request_ids = self.env["maintenance.request"].search( + record._get_request_domains() + ) + + def _get_request_domains(self): + return [("maintenance_team_id", "child_of", self.id)] + + @api.one + @api.depends() + def _compute_todo_requests(self): + """This function improves the computation and simplifies the data""" + request_obj = self.env["maintenance.request"] + domain = self._get_request_domains() + [("stage_id.done", "=", False)] + self.todo_request_ids = request_obj.search(domain) + self.todo_request_count = request_obj.search_count(domain) + self.todo_request_count_date = request_obj.search_count( + domain + [("schedule_date", "!=", False)] + ) + self.todo_request_count_high_priority = request_obj.search_count( + domain + [("priority", "=", "3")] + ) + self.todo_request_count_block = request_obj.search_count( + domain + [("kanban_state", "=", "blocked")] + ) + self.todo_request_count_unscheduled = request_obj.search_count( + domain + [("schedule_date", "=", False)] + ) diff --git a/maintenance_team_hierarchy/readme/CONTRIBUTORS.rst b/maintenance_team_hierarchy/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..93ec993e0 --- /dev/null +++ b/maintenance_team_hierarchy/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Enric Tobella diff --git a/maintenance_team_hierarchy/readme/DESCRIPTION.rst b/maintenance_team_hierarchy/readme/DESCRIPTION.rst new file mode 100644 index 000000000..5b5b784e3 --- /dev/null +++ b/maintenance_team_hierarchy/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This addon allows to define a hierarchy of teams and teams show the related requests diff --git a/maintenance_team_hierarchy/static/description/icon.png b/maintenance_team_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/maintenance_team_hierarchy/static/description/index.html b/maintenance_team_hierarchy/static/description/index.html new file mode 100644 index 000000000..72235a933 --- /dev/null +++ b/maintenance_team_hierarchy/static/description/index.html @@ -0,0 +1,419 @@ + + + + + + +Maintenance Team Hierarchy + + + +
+

Maintenance Team Hierarchy

+ + +

Beta License: AGPL-3 OCA/maintenance Translate me on Weblate Try me on Runbot

+

This addon allows to define a hierarchy of teams and teams show the related requests

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Creu Blanca
  • +
+
+
+

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.

+

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

+

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

+
+
+
+ + diff --git a/maintenance_team_hierarchy/tests/__init__.py b/maintenance_team_hierarchy/tests/__init__.py new file mode 100644 index 000000000..b0a93c2ef --- /dev/null +++ b/maintenance_team_hierarchy/tests/__init__.py @@ -0,0 +1 @@ +from . import test_team_hierarchy diff --git a/maintenance_team_hierarchy/tests/test_team_hierarchy.py b/maintenance_team_hierarchy/tests/test_team_hierarchy.py new file mode 100644 index 000000000..fe008b52c --- /dev/null +++ b/maintenance_team_hierarchy/tests/test_team_hierarchy.py @@ -0,0 +1,72 @@ +# Copyright 2019 Creu Blanca +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase, at_install, post_install + + +@at_install(False) +@post_install(True) +class TestTeamHierarchy(TransactionCase): + def setUp(self): + super().setUp() + self.team_obj = self.env["maintenance.team"] + self.request_obj = self.env["maintenance.request"] + + def test_team_hierarchy(self): + team_01 = self.team_obj.create({"name": "01"}) + team_02 = self.team_obj.create({"name": "02"}) + team_03 = self.team_obj.create({"name": "02"}) + self.assertFalse(team_01.request_ids) + self.assertFalse(team_02.request_ids) + self.assertFalse(team_03.request_ids) + self.assertEqual(0, team_01.todo_request_count) + self.assertEqual(0, team_02.todo_request_count) + self.assertEqual(0, team_03.todo_request_count) + request_01 = self.request_obj.create( + {"name": "Request", "maintenance_team_id": team_03.id} + ) + team_01.refresh() + team_02.refresh() + team_03.refresh() + self.assertFalse(team_01.request_ids) + self.assertFalse(team_02.request_ids) + self.assertTrue(team_03.request_ids) + self.assertEqual(0, team_01.todo_request_count) + self.assertEqual(0, team_02.todo_request_count) + self.assertEqual(1, team_03.todo_request_count) + self.assertEqual(request_01, team_03.request_ids) + team_03.write({"parent_id": team_02.id}) + team_01.refresh() + team_02.refresh() + team_03.refresh() + self.assertFalse(team_01.request_ids) + self.assertTrue(team_02.request_ids) + self.assertEqual(team_02.request_ids, request_01) + self.assertEqual(0, team_01.todo_request_count) + self.assertEqual(1, team_02.todo_request_count) + self.assertEqual(1, team_03.todo_request_count) + request_02 = self.request_obj.create( + {"name": "Request", "maintenance_team_id": team_02.id} + ) + team_01.refresh() + team_02.refresh() + team_03.refresh() + self.assertFalse(team_01.request_ids) + self.assertTrue(team_02.request_ids) + self.assertIn(request_01, team_02.request_ids) + self.assertIn(request_02, team_02.request_ids) + self.assertTrue(team_03.request_ids) + self.assertEqual(request_01, team_03.request_ids) + self.assertNotIn(request_02, team_03.request_ids) + self.assertEqual(0, team_01.todo_request_count) + self.assertEqual(2, team_02.todo_request_count) + self.assertEqual(1, team_03.todo_request_count) + team_02.write({"parent_id": team_01.id}) + team_01.refresh() + team_02.refresh() + team_03.refresh() + self.assertIn(request_01, team_01.request_ids) + self.assertIn(request_02, team_01.request_ids) + self.assertEqual(2, team_01.todo_request_count) + self.assertEqual(2, team_02.todo_request_count) + self.assertEqual(1, team_03.todo_request_count) diff --git a/maintenance_team_hierarchy/views/maintenance_team.xml b/maintenance_team_hierarchy/views/maintenance_team.xml new file mode 100644 index 000000000..6de9d0be7 --- /dev/null +++ b/maintenance_team_hierarchy/views/maintenance_team.xml @@ -0,0 +1,33 @@ + + + + + + + maintenance.team.form (in maintenance_team_hierarchy) + maintenance.team + + + + + + + + + + maintenance.request.search (in maintenance_team_hierarchy) + maintenance.request + + + + [('maintenance_team_id', 'child_of', raw_value)] + + + + + + [('maintenance_team_id', 'child_of', active_id), ('maintenance_type', 'in', context.get('maintenance_type', ['preventive', 'corrective']))] + + + From 436fd84d7ba1fddbf31e003de7db47a2452ecc59 Mon Sep 17 00:00:00 2001 From: Jaime Arroyo Date: Wed, 8 Jan 2020 17:58:07 +0100 Subject: [PATCH 02/16] [12.0][MIG] maintenance_team_hierarchy [UPD] Update maintenance_team_hierarchy.pot --- maintenance_team_hierarchy/README.rst | 10 ++--- maintenance_team_hierarchy/__manifest__.py | 2 +- maintenance_team_hierarchy/i18n/es.po | 18 +++++---- .../i18n/maintenance_team_hierarchy.pot | 12 +++--- maintenance_team_hierarchy/i18n/pt_BR.po | 37 +++++++++++++++++++ .../models/maintenance_team.py | 4 +- .../static/description/index.html | 6 +-- 7 files changed, 65 insertions(+), 24 deletions(-) create mode 100644 maintenance_team_hierarchy/i18n/pt_BR.po diff --git a/maintenance_team_hierarchy/README.rst b/maintenance_team_hierarchy/README.rst index acc0cc84b..78fd356cb 100644 --- a/maintenance_team_hierarchy/README.rst +++ b/maintenance_team_hierarchy/README.rst @@ -14,13 +14,13 @@ Maintenance Team 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%2Fmaintenance-lightgray.png?logo=github - :target: https://github.com/OCA/maintenance/tree/11.0/maintenance_team_hierarchy + :target: https://github.com/OCA/maintenance/tree/12.0/maintenance_team_hierarchy :alt: OCA/maintenance .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/maintenance-11-0/maintenance-11-0-maintenance_team_hierarchy + :target: https://translation.odoo-community.org/projects/maintenance-12-0/maintenance-12-0-maintenance_team_hierarchy :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/240/11.0 + :target: https://runbot.odoo-community.org/runbot/240/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -68,6 +68,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/maintenance `_ project on GitHub. +This module is part of the `OCA/maintenance `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/maintenance_team_hierarchy/__manifest__.py b/maintenance_team_hierarchy/__manifest__.py index 36e65b131..b9aab7b45 100644 --- a/maintenance_team_hierarchy/__manifest__.py +++ b/maintenance_team_hierarchy/__manifest__.py @@ -5,7 +5,7 @@ "name": "Maintenance Team Hierarchy", "summary": """ Create hierarchies on teams""", - "version": "11.0.1.0.0", + "version": "12.0.1.0.0", "license": "AGPL-3", "author": "Creu Blanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/maintenance", diff --git a/maintenance_team_hierarchy/i18n/es.po b/maintenance_team_hierarchy/i18n/es.po index 90e29e715..d6e41588a 100644 --- a/maintenance_team_hierarchy/i18n/es.po +++ b/maintenance_team_hierarchy/i18n/es.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * maintenance_team_hierarchy +# * maintenance_team_hierarchy # msgid "" msgstr "" @@ -22,16 +22,20 @@ msgid "Maintenance Teams" msgstr "Equipos de Mantenimiento" #. module: maintenance_team_hierarchy -#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_id +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_id msgid "Parent" msgstr "Padre" #. module: maintenance_team_hierarchy -#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_left -msgid "Parent Left" +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_path +#, fuzzy +msgid "Parent Path" msgstr "Padre izquierdo" #. module: maintenance_team_hierarchy -#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_right -msgid "Parent Right" -msgstr "Padre derecho" +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__request_ids +msgid "Request" +msgstr "" + +#~ msgid "Parent Right" +#~ msgstr "Padre derecho" diff --git a/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot b/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot index a89a8ff64..36816e987 100644 --- a/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot +++ b/maintenance_team_hierarchy/i18n/maintenance_team_hierarchy.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -19,17 +19,17 @@ msgid "Maintenance Teams" msgstr "" #. module: maintenance_team_hierarchy -#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_id +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_id msgid "Parent" msgstr "" #. module: maintenance_team_hierarchy -#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_left -msgid "Parent Left" +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_path +msgid "Parent Path" msgstr "" #. module: maintenance_team_hierarchy -#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team_parent_right -msgid "Parent Right" +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__request_ids +msgid "Request" msgstr "" diff --git a/maintenance_team_hierarchy/i18n/pt_BR.po b/maintenance_team_hierarchy/i18n/pt_BR.po new file mode 100644 index 000000000..f29a5d6b6 --- /dev/null +++ b/maintenance_team_hierarchy/i18n/pt_BR.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * maintenance_team_hierarchy +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-07-16 16:19+0000\n" +"Last-Translator: Fernando Colus \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" +"X-Generator: Weblate 3.10\n" + +#. module: maintenance_team_hierarchy +#: model:ir.model,name:maintenance_team_hierarchy.model_maintenance_team +msgid "Maintenance Teams" +msgstr "Equipes de Manutenção" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_id +msgid "Parent" +msgstr "Pais" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__parent_path +msgid "Parent Path" +msgstr "Caminho Pai" + +#. module: maintenance_team_hierarchy +#: model:ir.model.fields,field_description:maintenance_team_hierarchy.field_maintenance_team__request_ids +msgid "Request" +msgstr "Requisição" diff --git a/maintenance_team_hierarchy/models/maintenance_team.py b/maintenance_team_hierarchy/models/maintenance_team.py index d91de85fe..491cbfaaa 100644 --- a/maintenance_team_hierarchy/models/maintenance_team.py +++ b/maintenance_team_hierarchy/models/maintenance_team.py @@ -12,8 +12,8 @@ class MaintenanceTeam(models.Model): _inherit = "maintenance.team" parent_id = fields.Many2one("maintenance.team", ondelete="restrict") - parent_left = fields.Integer(index=True) - parent_right = fields.Integer(index=True) + parent_path = fields.Char(index=True) + request_ids = fields.Many2many( "maintenance.request", compute="_compute_request_ids" ) diff --git a/maintenance_team_hierarchy/static/description/index.html b/maintenance_team_hierarchy/static/description/index.html index 72235a933..892804950 100644 --- a/maintenance_team_hierarchy/static/description/index.html +++ b/maintenance_team_hierarchy/static/description/index.html @@ -367,7 +367,7 @@

Maintenance Team Hierarchy

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/maintenance Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/maintenance Translate me on Weblate Try me on Runbot

This addon allows to define a hierarchy of teams and teams show the related requests

Table of contents

@@ -386,7 +386,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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -410,7 +410,7 @@

Maintainers

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/maintenance project on GitHub.

+

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

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

From a56650ba8adf01c3c1ce19410aa6f29725884ac4 Mon Sep 17 00:00:00 2001 From: Jaime Arroyo Date: Tue, 29 Sep 2020 10:38:55 +0200 Subject: [PATCH 03/16] [IMP] maintenance_team_hierarchy: black, isort, prettier --- .../views/maintenance_team.xml | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/maintenance_team_hierarchy/views/maintenance_team.xml b/maintenance_team_hierarchy/views/maintenance_team.xml index 6de9d0be7..679186c5e 100644 --- a/maintenance_team_hierarchy/views/maintenance_team.xml +++ b/maintenance_team_hierarchy/views/maintenance_team.xml @@ -1,33 +1,37 @@ - + - - maintenance.team.form (in maintenance_team_hierarchy) maintenance.team - + - + - - maintenance.request.search (in maintenance_team_hierarchy) + maintenance.request.search (in maintenance_team_hierarchy) maintenance.request - + - [('maintenance_team_id', 'child_of', raw_value)] + [('maintenance_team_id', 'child_of', raw_value)] - - - [('maintenance_team_id', 'child_of', active_id), ('maintenance_type', 'in', context.get('maintenance_type', ['preventive', 'corrective']))] + + [('maintenance_team_id', 'child_of', active_id), ('maintenance_type', 'in', context.get('maintenance_type', ['preventive', 'corrective']))] - From fa3640a8599f15ee33c57994cbf3247975db1418 Mon Sep 17 00:00:00 2001 From: Jaime Arroyo Date: Tue, 29 Sep 2020 11:13:03 +0200 Subject: [PATCH 04/16] [13.0][MIG] maintenance_team_hierarchy --- maintenance_team_hierarchy/README.rst | 10 ++-- maintenance_team_hierarchy/__manifest__.py | 2 +- .../models/maintenance_team.py | 51 ++++++++++++------- .../static/description/index.html | 8 +-- 4 files changed, 44 insertions(+), 27 deletions(-) diff --git a/maintenance_team_hierarchy/README.rst b/maintenance_team_hierarchy/README.rst index 78fd356cb..fa0db8e15 100644 --- a/maintenance_team_hierarchy/README.rst +++ b/maintenance_team_hierarchy/README.rst @@ -14,13 +14,13 @@ Maintenance Team 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%2Fmaintenance-lightgray.png?logo=github - :target: https://github.com/OCA/maintenance/tree/12.0/maintenance_team_hierarchy + :target: https://github.com/OCA/maintenance/tree/13.0/maintenance_team_hierarchy :alt: OCA/maintenance .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/maintenance-12-0/maintenance-12-0-maintenance_team_hierarchy + :target: https://translation.odoo-community.org/projects/maintenance-13-0/maintenance-13-0-maintenance_team_hierarchy :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/240/12.0 + :target: https://runbot.odoo-community.org/runbot/240/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -68,6 +68,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/maintenance `_ project on GitHub. +This module is part of the `OCA/maintenance `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/maintenance_team_hierarchy/__manifest__.py b/maintenance_team_hierarchy/__manifest__.py index b9aab7b45..69a0c804a 100644 --- a/maintenance_team_hierarchy/__manifest__.py +++ b/maintenance_team_hierarchy/__manifest__.py @@ -5,7 +5,7 @@ "name": "Maintenance Team Hierarchy", "summary": """ Create hierarchies on teams""", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "license": "AGPL-3", "author": "Creu Blanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/maintenance", diff --git a/maintenance_team_hierarchy/models/maintenance_team.py b/maintenance_team_hierarchy/models/maintenance_team.py index 491cbfaaa..ba9d4121c 100644 --- a/maintenance_team_hierarchy/models/maintenance_team.py +++ b/maintenance_team_hierarchy/models/maintenance_team.py @@ -15,7 +15,18 @@ class MaintenanceTeam(models.Model): parent_path = fields.Char(index=True) request_ids = fields.Many2many( - "maintenance.request", compute="_compute_request_ids" + "maintenance.request", compute="_compute_request_ids", + ) + + todo_request_ids = fields.One2many(compute="_compute_new_todo_requests") + todo_request_count = fields.Integer(compute="_compute_new_todo_requests") + todo_request_count_date = fields.Integer(compute="_compute_new_todo_requests") + todo_request_count_high_priority = fields.Integer( + compute="_compute_new_todo_requests" + ) + todo_request_count_block = fields.Integer(compute="_compute_new_todo_requests") + todo_request_count_unscheduled = fields.Integer( + compute="_compute_new_todo_requests" ) def _compute_request_ids(self): @@ -27,23 +38,29 @@ def _compute_request_ids(self): def _get_request_domains(self): return [("maintenance_team_id", "child_of", self.id)] - @api.one @api.depends() + def _compute_new_todo_requests(self): + """ This is the only way to remove the api depends fields. This is necessary + because request_ids is now a computed field + """ + self._compute_todo_requests() + def _compute_todo_requests(self): """This function improves the computation and simplifies the data""" request_obj = self.env["maintenance.request"] - domain = self._get_request_domains() + [("stage_id.done", "=", False)] - self.todo_request_ids = request_obj.search(domain) - self.todo_request_count = request_obj.search_count(domain) - self.todo_request_count_date = request_obj.search_count( - domain + [("schedule_date", "!=", False)] - ) - self.todo_request_count_high_priority = request_obj.search_count( - domain + [("priority", "=", "3")] - ) - self.todo_request_count_block = request_obj.search_count( - domain + [("kanban_state", "=", "blocked")] - ) - self.todo_request_count_unscheduled = request_obj.search_count( - domain + [("schedule_date", "=", False)] - ) + for record in self: + domain = record._get_request_domains() + [("stage_id.done", "=", False)] + record.todo_request_ids = request_obj.search(domain) + record.todo_request_count = request_obj.search_count(domain) + record.todo_request_count_date = request_obj.search_count( + domain + [("schedule_date", "!=", False)] + ) + record.todo_request_count_high_priority = request_obj.search_count( + domain + [("priority", "=", "3")] + ) + record.todo_request_count_block = request_obj.search_count( + domain + [("kanban_state", "=", "blocked")] + ) + record.todo_request_count_unscheduled = request_obj.search_count( + domain + [("schedule_date", "=", False)] + ) diff --git a/maintenance_team_hierarchy/static/description/index.html b/maintenance_team_hierarchy/static/description/index.html index 892804950..5c0e65d26 100644 --- a/maintenance_team_hierarchy/static/description/index.html +++ b/maintenance_team_hierarchy/static/description/index.html @@ -3,7 +3,7 @@ - + Maintenance Team Hierarchy