From 8f6ddd2b6164806a40c5fa3be8cdfe582d994836 Mon Sep 17 00:00:00 2001 From: Nikul Chaudhary Date: Mon, 23 Dec 2019 16:36:42 +0530 Subject: [PATCH 01/17] project_operating_unit v12 --- project_operating_unit/README.rst | 97 ++++ project_operating_unit/__init__.py | 2 + project_operating_unit/__manifest__.py | 29 ++ .../i18n/project_operating_unit.pot | 31 ++ project_operating_unit/models/__init__.py | 3 + .../models/project_project.py | 15 + project_operating_unit/models/project_task.py | 16 + .../readme/CONTRIBUTORS.rst | 2 + project_operating_unit/readme/CREDITS.rst | 2 + project_operating_unit/readme/DESCRIPTION.rst | 1 + project_operating_unit/readme/USAGE.rst | 4 + .../security/project_security.xml | 31 ++ .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 441 ++++++++++++++++++ project_operating_unit/tests/__init__.py | 2 + .../tests/test_project_operating_unit.py | 94 ++++ .../views/project_project.xml | 17 + project_operating_unit/views/project_task.xml | 17 + 18 files changed, 804 insertions(+) create mode 100644 project_operating_unit/README.rst create mode 100644 project_operating_unit/__init__.py create mode 100644 project_operating_unit/__manifest__.py create mode 100644 project_operating_unit/i18n/project_operating_unit.pot create mode 100644 project_operating_unit/models/__init__.py create mode 100644 project_operating_unit/models/project_project.py create mode 100644 project_operating_unit/models/project_task.py create mode 100644 project_operating_unit/readme/CONTRIBUTORS.rst create mode 100644 project_operating_unit/readme/CREDITS.rst create mode 100644 project_operating_unit/readme/DESCRIPTION.rst create mode 100644 project_operating_unit/readme/USAGE.rst create mode 100644 project_operating_unit/security/project_security.xml create mode 100644 project_operating_unit/static/description/icon.png create mode 100644 project_operating_unit/static/description/index.html create mode 100644 project_operating_unit/tests/__init__.py create mode 100644 project_operating_unit/tests/test_project_operating_unit.py create mode 100644 project_operating_unit/views/project_project.xml create mode 100644 project_operating_unit/views/project_task.xml diff --git a/project_operating_unit/README.rst b/project_operating_unit/README.rst new file mode 100644 index 0000000000..485ee82663 --- /dev/null +++ b/project_operating_unit/README.rst @@ -0,0 +1,97 @@ +============================ +Project with Operating Units +============================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Foperating--unit-lightgray.png?logo=github + :target: https://github.com/OCA/operating-unit/tree/12.0/project_operating_unit + :alt: OCA/operating-unit +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/operating-unit-12-0/operating-unit-12-0-project_operating_unit + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/213/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds operating unit information to projects and tasks. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +* Go to Project +* You only see the projects and tasks of your operating units +* Create a new project. It is assigned to your default operating unit. +* Create a task within a project. It inherits the operating unit of the project. + +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 +~~~~~~~ + +* Open Source Integrators +* Serpent Consulting Services Pvt. Ltd. + +Contributors +~~~~~~~~~~~~ + +* Nikul Chaudhary +* Maxime Chambreuil + +Other credits +~~~~~~~~~~~~~ + +* Open Source Integrators +* Serpent Consulting Services Pvt. Ltd. + +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-max3903| image:: https://github.com/max3903.png?size=40px + :target: https://github.com/max3903 + :alt: max3903 + +Current `maintainer `__: + +|maintainer-max3903| + +This module is part of the `OCA/operating-unit `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/project_operating_unit/__init__.py b/project_operating_unit/__init__.py new file mode 100644 index 0000000000..c32fd62b78 --- /dev/null +++ b/project_operating_unit/__init__.py @@ -0,0 +1,2 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from . import models diff --git a/project_operating_unit/__manifest__.py b/project_operating_unit/__manifest__.py new file mode 100644 index 0000000000..0431cfbfdf --- /dev/null +++ b/project_operating_unit/__manifest__.py @@ -0,0 +1,29 @@ +# Copyright (C) 2019 Open Source Integrators +# Copyright (C) 2019 Serpent Consulting Services +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +{ + "name": 'Project with Operating Units', + "summary": """ + This module adds operating unit information to projects and tasks.""", + "version": "12.0.1.0.0", + "author": "Open Source Integrators, " + "Serpent Consulting Services Pvt. Ltd.," + "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/operating-unit", + "category": "Project", + "depends": [ + 'operating_unit', + 'project' + ], + "license": "AGPL-3", + "data": [ + 'security/project_security.xml', + 'views/project_project.xml', + 'views/project_task.xml', + ], + 'installable': True, + 'development_status': 'Beta', + 'maintainers': [ + 'max3903', + ], +} diff --git a/project_operating_unit/i18n/project_operating_unit.pot b/project_operating_unit/i18n/project_operating_unit.pot new file mode 100644 index 0000000000..07f0df5cbc --- /dev/null +++ b/project_operating_unit/i18n/project_operating_unit.pot @@ -0,0 +1,31 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_operating_unit +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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_operating_unit +#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__operating_unit_id +#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__operating_unit_id +msgid "Operating Unit" +msgstr "" + +#. module: project_operating_unit +#: model:ir.model,name:project_operating_unit.model_project_project +msgid "Project" +msgstr "" + +#. module: project_operating_unit +#: model:ir.model,name:project_operating_unit.model_project_task +msgid "Task" +msgstr "" + diff --git a/project_operating_unit/models/__init__.py b/project_operating_unit/models/__init__.py new file mode 100644 index 0000000000..6d7b86671a --- /dev/null +++ b/project_operating_unit/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from . import project_project +from . import project_task diff --git a/project_operating_unit/models/project_project.py b/project_operating_unit/models/project_project.py new file mode 100644 index 0000000000..89f0c3597a --- /dev/null +++ b/project_operating_unit/models/project_project.py @@ -0,0 +1,15 @@ +# Copyright (C) 2019 Open Source Integrators +# Copyright (C) 2019 Serpent Consulting Services +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class ProjectProject(models.Model): + _inherit = 'project.project' + + operating_unit_id = fields.Many2one( + comodel_name='operating.unit', + string='Operating Unit', + default=lambda self: self.env['res.users'].operating_unit_default_get( + self._uid) + ) diff --git a/project_operating_unit/models/project_task.py b/project_operating_unit/models/project_task.py new file mode 100644 index 0000000000..c744090f5e --- /dev/null +++ b/project_operating_unit/models/project_task.py @@ -0,0 +1,16 @@ +# Copyright (C) 2019 Open Source Integrators +# Copyright (C) 2019 Serpent Consulting Services +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import fields, models + + +class ProjectTask(models.Model): + _inherit = 'project.task' + + operating_unit_id = fields.Many2one( + comodel_name='operating.unit', + related="project_id.operating_unit_id", + string='Operating Unit', + default=lambda self: self.env['res.users'].operating_unit_default_get( + self._uid) + ) diff --git a/project_operating_unit/readme/CONTRIBUTORS.rst b/project_operating_unit/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..e61704632a --- /dev/null +++ b/project_operating_unit/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Nikul Chaudhary +* Maxime Chambreuil diff --git a/project_operating_unit/readme/CREDITS.rst b/project_operating_unit/readme/CREDITS.rst new file mode 100644 index 0000000000..bfc05668a8 --- /dev/null +++ b/project_operating_unit/readme/CREDITS.rst @@ -0,0 +1,2 @@ +* Open Source Integrators +* Serpent Consulting Services Pvt. Ltd. diff --git a/project_operating_unit/readme/DESCRIPTION.rst b/project_operating_unit/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..b49aac6edb --- /dev/null +++ b/project_operating_unit/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds operating unit information to projects and tasks. diff --git a/project_operating_unit/readme/USAGE.rst b/project_operating_unit/readme/USAGE.rst new file mode 100644 index 0000000000..256fbca567 --- /dev/null +++ b/project_operating_unit/readme/USAGE.rst @@ -0,0 +1,4 @@ +* Go to Project +* You only see the projects and tasks of your operating units +* Create a new project. It is assigned to your default operating unit. +* Create a task within a project. It inherits the operating unit of the project. diff --git a/project_operating_unit/security/project_security.xml b/project_operating_unit/security/project_security.xml new file mode 100644 index 0000000000..5fff7f644b --- /dev/null +++ b/project_operating_unit/security/project_security.xml @@ -0,0 +1,31 @@ + + + + + + + ['|', ('operating_unit_id','=',False), ('operating_unit_id','in',user.operating_unit_ids.ids)] + + Project Operating Unit + + + + + + + + + + ['|', ('operating_unit_id','=',False), ('operating_unit_id','in',user.operating_unit_ids.ids)] + + Project Task Operating Unit + + + + + + + + diff --git a/project_operating_unit/static/description/icon.png b/project_operating_unit/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_operating_unit/static/description/index.html b/project_operating_unit/static/description/index.html new file mode 100644 index 0000000000..0a9ce5cd75 --- /dev/null +++ b/project_operating_unit/static/description/index.html @@ -0,0 +1,441 @@ + + + + + + +Project with Operating Units + + + +
+

Project with Operating Units

+ + +

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

+

This module adds operating unit information to projects and tasks.

+

Table of contents

+ +
+

Usage

+
    +
  • Go to Project
  • +
  • You only see the projects and tasks of your operating units
  • +
  • Create a new project. It is assigned to your default operating unit.
  • +
  • Create a task within a project. It inherits the operating unit of the project.
  • +
+
+
+

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

+
    +
  • Open Source Integrators
  • +
  • Serpent Consulting Services Pvt. Ltd.
  • +
+
+ +
+

Other credits

+
    +
  • Open Source Integrators
  • +
  • Serpent Consulting Services Pvt. Ltd.
  • +
+
+
+

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:

+

max3903

+

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

+

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

+
+
+
+ + diff --git a/project_operating_unit/tests/__init__.py b/project_operating_unit/tests/__init__.py new file mode 100644 index 0000000000..8f99fb0e63 --- /dev/null +++ b/project_operating_unit/tests/__init__.py @@ -0,0 +1,2 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from . import test_project_operating_unit diff --git a/project_operating_unit/tests/test_project_operating_unit.py b/project_operating_unit/tests/test_project_operating_unit.py new file mode 100644 index 0000000000..2f64ee0129 --- /dev/null +++ b/project_operating_unit/tests/test_project_operating_unit.py @@ -0,0 +1,94 @@ +# Copyright (C) 2019 Open Source Integrators +# Copyright (C) 2019 Serpent Consulting Services +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo.tests import common + + +class TestProject(common.TransactionCase): + + def setUp(self): + super(TestProject, self).setUp() + self.project_obj = self.env['project.project'] + self.task_obj = self.env['project.task'] + self.res_users_model = self.env['res.users'] + + self.partner_1 = self.env['res.partner'].create({ + 'name': 'SERPENTCS ', + 'email': 'serpentcs@gmail.com'}) + + # Groups + self.grp_mngr =\ + self.env.ref('project.group_project_manager') + self.grp_user = self.env.ref('project.group_project_user') + # Company + self.company = self.env.ref('base.main_company') + # Main Operating Unit + self.main_OU = self.env.ref('operating_unit.main_operating_unit') + # B2C Operating Unit + self.b2c_OU = self.env.ref('operating_unit.b2c_operating_unit') + # Create User 1 with Main OU + self.user1 = self._create_user('user_1', [self.grp_mngr, + self.grp_user], + self.company, [self.main_OU]) + # Create User 2 with B2C OU + self.user2 = self._create_user('user_2', [self.grp_mngr, + self.grp_user], + self.company, [self.b2c_OU]) + + self.project1 = self._create_project(self.user1, self.main_OU) + self.project2 = self._create_project(self.user2, self.b2c_OU) + self.task1 = self._create_task(self.user1, self.project1) + self.task2 = self._create_task(self.user2, self.project2) + + def _create_user(self, login, groups, company, operating_units): + """ Create a user. """ + group_ids = [group.id for group in groups] + user = self.res_users_model.create({ + 'name': login, + 'login': login, + 'password': 'demo', + 'email': 'test@yourcompany.com', + 'company_id': company.id, + 'company_ids': [(4, company.id)], + 'operating_unit_ids': [(4, ou.id) for ou in operating_units], + 'groups_id': [(6, 0, group_ids)] + }) + return user + + def _create_project(self, uid, operating_unit): + project = self.project_obj.sudo(uid).create({ + 'name': 'Test Project', + 'operating_unit_id': operating_unit.id, + 'privacy_visibility': 'employees', + 'partner_id': self.partner_1.id + }) + return project + + def _create_task(self, uid, project): + task = self.task_obj.sudo(uid).create({ + 'name': 'Test Task', + 'user_id': uid.id, + 'project_id': project.id + }) + return task + + def test_project(self): + # User 2 is only assigned to B2C Operating Unit, and cannot + # access Project for Main Operating Unit. + projects = self.project_obj.sudo(self.user2.id).search( + [('id', '=', self.project2.id), + ('operating_unit_id', '=', self.main_OU.id)]) + self.assertEqual(projects.ids, [], 'User 2 should not have access to ' + '%s' % self.main_OU.name) + self.assertEqual(self.project1.operating_unit_id.id, self.main_OU.id) + + def test_project_task(self): + # User 2 is only assigned to B2C Operating Unit, and cannot + # access Task for Main Operating Unit. + tasks = self.task_obj.sudo(self.user2.id).search( + [('id', '=', self.task2.id), + ('operating_unit_id', '=', self.main_OU.id)]) + self.assertEqual(tasks.ids, [], 'User 2 should not have access to ' + '%s' % self.main_OU.name) + self.assertEqual(self.task1.operating_unit_id.id, + self.project1.operating_unit_id.id) diff --git a/project_operating_unit/views/project_project.xml b/project_operating_unit/views/project_project.xml new file mode 100644 index 0000000000..65f3068789 --- /dev/null +++ b/project_operating_unit/views/project_project.xml @@ -0,0 +1,17 @@ + + + + + project.project.form + project.project + + + + + + + + + diff --git a/project_operating_unit/views/project_task.xml b/project_operating_unit/views/project_task.xml new file mode 100644 index 0000000000..ee53d883ac --- /dev/null +++ b/project_operating_unit/views/project_task.xml @@ -0,0 +1,17 @@ + + + + + project.task.form + project.task + + + + + + + + + From 1db4e0026121ef943414b79c7f72a844baf76617 Mon Sep 17 00:00:00 2001 From: Hiren Dangar Date: Mon, 23 Dec 2019 15:08:09 +0530 Subject: [PATCH 02/17] res_partner_operating_unit. --- project_operating_unit/tests/test_project_operating_unit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project_operating_unit/tests/test_project_operating_unit.py b/project_operating_unit/tests/test_project_operating_unit.py index 2f64ee0129..ce7394b894 100644 --- a/project_operating_unit/tests/test_project_operating_unit.py +++ b/project_operating_unit/tests/test_project_operating_unit.py @@ -65,7 +65,7 @@ def _create_project(self, uid, operating_unit): return project def _create_task(self, uid, project): - task = self.task_obj.sudo(uid).create({ + task = self.task_obj.create({ 'name': 'Test Task', 'user_id': uid.id, 'project_id': project.id From a26bbdee29c0bc5c6f6a67c25248b6f7535a9d08 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Sat, 29 Feb 2020 12:08:24 +0000 Subject: [PATCH 03/17] Added translation using Weblate (Portuguese) --- project_operating_unit/i18n/pt.po | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 project_operating_unit/i18n/pt.po diff --git a/project_operating_unit/i18n/pt.po b/project_operating_unit/i18n/pt.po new file mode 100644 index 0000000000..c17acd8dc0 --- /dev/null +++ b/project_operating_unit/i18n/pt.po @@ -0,0 +1,31 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_operating_unit +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt\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_operating_unit +#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__operating_unit_id +#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__operating_unit_id +msgid "Operating Unit" +msgstr "" + +#. module: project_operating_unit +#: model:ir.model,name:project_operating_unit.model_project_project +msgid "Project" +msgstr "" + +#. module: project_operating_unit +#: model:ir.model,name:project_operating_unit.model_project_task +msgid "Task" +msgstr "" From 9484a75103c15358332912509490ebb427baa1bc Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Sat, 29 Feb 2020 12:35:29 +0000 Subject: [PATCH 04/17] Translated using Weblate (Portuguese) Currently translated at 100.0% (3 of 3 strings) Translation: operating-unit-12.0/operating-unit-12.0-project_operating_unit Translate-URL: https://translation.odoo-community.org/projects/operating-unit-12-0/operating-unit-12-0-project_operating_unit/pt/ --- project_operating_unit/i18n/pt.po | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/project_operating_unit/i18n/pt.po b/project_operating_unit/i18n/pt.po index c17acd8dc0..12e5bc3905 100644 --- a/project_operating_unit/i18n/pt.po +++ b/project_operating_unit/i18n/pt.po @@ -6,26 +6,28 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2020-02-29 15:13+0000\n" +"Last-Translator: Pedro Castro Silva \n" "Language-Team: none\n" "Language: pt\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: project_operating_unit #: model:ir.model.fields,field_description:project_operating_unit.field_project_project__operating_unit_id #: model:ir.model.fields,field_description:project_operating_unit.field_project_task__operating_unit_id msgid "Operating Unit" -msgstr "" +msgstr "Unidade Operacional" #. module: project_operating_unit #: model:ir.model,name:project_operating_unit.model_project_project msgid "Project" -msgstr "" +msgstr "Projeto" #. module: project_operating_unit #: model:ir.model,name:project_operating_unit.model_project_task msgid "Task" -msgstr "" +msgstr "Tarefa" From 2f59266385b5ae4004f8dcea69bf20f9946a91a9 Mon Sep 17 00:00:00 2001 From: scampbell Date: Sat, 7 Mar 2020 12:09:41 -0800 Subject: [PATCH 05/17] Group By Operating Unit Projects --- project_operating_unit/__manifest__.py | 2 +- .../i18n/project_operating_unit.pot | 1 + project_operating_unit/i18n/pt.po | 3 ++- project_operating_unit/views/project_project.xml | 13 +++++++++++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/project_operating_unit/__manifest__.py b/project_operating_unit/__manifest__.py index 0431cfbfdf..ed6514d4c0 100644 --- a/project_operating_unit/__manifest__.py +++ b/project_operating_unit/__manifest__.py @@ -5,7 +5,7 @@ "name": 'Project with Operating Units', "summary": """ This module adds operating unit information to projects and tasks.""", - "version": "12.0.1.0.0", + "version": "12.0.1.1.0", "author": "Open Source Integrators, " "Serpent Consulting Services Pvt. Ltd.," "Odoo Community Association (OCA)", diff --git a/project_operating_unit/i18n/project_operating_unit.pot b/project_operating_unit/i18n/project_operating_unit.pot index 07f0df5cbc..bf8bb02577 100644 --- a/project_operating_unit/i18n/project_operating_unit.pot +++ b/project_operating_unit/i18n/project_operating_unit.pot @@ -16,6 +16,7 @@ msgstr "" #. module: project_operating_unit #: model:ir.model.fields,field_description:project_operating_unit.field_project_project__operating_unit_id #: model:ir.model.fields,field_description:project_operating_unit.field_project_task__operating_unit_id +#: model_terms:ir.ui.view,arch_db:project_operating_unit.project_group_by_ou msgid "Operating Unit" msgstr "" diff --git a/project_operating_unit/i18n/pt.po b/project_operating_unit/i18n/pt.po index 12e5bc3905..7a9de7a96e 100644 --- a/project_operating_unit/i18n/pt.po +++ b/project_operating_unit/i18n/pt.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * project_operating_unit +# * project_operating_unit # msgid "" msgstr "" @@ -19,6 +19,7 @@ msgstr "" #. module: project_operating_unit #: model:ir.model.fields,field_description:project_operating_unit.field_project_project__operating_unit_id #: model:ir.model.fields,field_description:project_operating_unit.field_project_task__operating_unit_id +#: model_terms:ir.ui.view,arch_db:project_operating_unit.project_group_by_ou msgid "Operating Unit" msgstr "Unidade Operacional" diff --git a/project_operating_unit/views/project_project.xml b/project_operating_unit/views/project_project.xml index 65f3068789..9b72bf68e4 100644 --- a/project_operating_unit/views/project_project.xml +++ b/project_operating_unit/views/project_project.xml @@ -14,4 +14,17 @@ + + project.group.by.ou + project.project + + + + + + + + From 2788e163655c4d06b5afe2fcce1b9d5e53db7d07 Mon Sep 17 00:00:00 2001 From: Nikul Chaudhary Date: Sun, 16 Aug 2020 13:10:07 +0530 Subject: [PATCH 06/17] [MIG] Migrated project_operating_unit in v13 --- project_operating_unit/README.rst | 6 +- project_operating_unit/__manifest__.py | 27 ++--- .../models/project_project.py | 11 +- project_operating_unit/models/project_task.py | 11 +- .../security/project_security.xml | 36 +++--- .../tests/test_project_operating_unit.py | 109 +++++++++--------- .../views/project_project.xml | 19 +-- project_operating_unit/views/project_task.xml | 8 +- 8 files changed, 114 insertions(+), 113 deletions(-) diff --git a/project_operating_unit/README.rst b/project_operating_unit/README.rst index 485ee82663..b572cf5cf2 100644 --- a/project_operating_unit/README.rst +++ b/project_operating_unit/README.rst @@ -14,13 +14,13 @@ Project with Operating Units :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Foperating--unit-lightgray.png?logo=github - :target: https://github.com/OCA/operating-unit/tree/12.0/project_operating_unit + :target: https://github.com/OCA/operating-unit/tree/13.0/project_operating_unit :alt: OCA/operating-unit .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/operating-unit-12-0/operating-unit-12-0-project_operating_unit + :target: https://translation.odoo-community.org/projects/operating-unit-13-0/operating-unit-13-0-project_operating_unit :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/213/12.0 + :target: https://runbot.odoo-community.org/runbot/213/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| diff --git a/project_operating_unit/__manifest__.py b/project_operating_unit/__manifest__.py index ed6514d4c0..dee25f92cc 100644 --- a/project_operating_unit/__manifest__.py +++ b/project_operating_unit/__manifest__.py @@ -2,28 +2,23 @@ # Copyright (C) 2019 Serpent Consulting Services # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { - "name": 'Project with Operating Units', + "name": "Project with Operating Units", "summary": """ This module adds operating unit information to projects and tasks.""", - "version": "12.0.1.1.0", + "version": "13.0.1.0.0", "author": "Open Source Integrators, " - "Serpent Consulting Services Pvt. Ltd.," - "Odoo Community Association (OCA)", + "Serpent Consulting Services Pvt. Ltd.," + "Odoo Community Association (OCA)", "website": "https://github.com/OCA/operating-unit", "category": "Project", - "depends": [ - 'operating_unit', - 'project' - ], + "depends": ["operating_unit", "project"], "license": "AGPL-3", "data": [ - 'security/project_security.xml', - 'views/project_project.xml', - 'views/project_task.xml', - ], - 'installable': True, - 'development_status': 'Beta', - 'maintainers': [ - 'max3903', + "security/project_security.xml", + "views/project_project.xml", + "views/project_task.xml", ], + "installable": True, + "development_status": "Beta", + "maintainers": ["max3903"], } diff --git a/project_operating_unit/models/project_project.py b/project_operating_unit/models/project_project.py index 89f0c3597a..76406a036e 100644 --- a/project_operating_unit/models/project_project.py +++ b/project_operating_unit/models/project_project.py @@ -5,11 +5,12 @@ class ProjectProject(models.Model): - _inherit = 'project.project' + _inherit = "project.project" operating_unit_id = fields.Many2one( - comodel_name='operating.unit', - string='Operating Unit', - default=lambda self: self.env['res.users'].operating_unit_default_get( - self._uid) + comodel_name="operating.unit", + string="Operating Unit", + default=lambda self: self.env["res.users"].operating_unit_default_get( + self._uid + ), ) diff --git a/project_operating_unit/models/project_task.py b/project_operating_unit/models/project_task.py index c744090f5e..cbb568f70c 100644 --- a/project_operating_unit/models/project_task.py +++ b/project_operating_unit/models/project_task.py @@ -5,12 +5,13 @@ class ProjectTask(models.Model): - _inherit = 'project.task' + _inherit = "project.task" operating_unit_id = fields.Many2one( - comodel_name='operating.unit', + comodel_name="operating.unit", related="project_id.operating_unit_id", - string='Operating Unit', - default=lambda self: self.env['res.users'].operating_unit_default_get( - self._uid) + string="Operating Unit", + default=lambda self: self.env["res.users"].operating_unit_default_get( + self._uid + ), ) diff --git a/project_operating_unit/security/project_security.xml b/project_operating_unit/security/project_security.xml index 5fff7f644b..7ad8cffd31 100644 --- a/project_operating_unit/security/project_security.xml +++ b/project_operating_unit/security/project_security.xml @@ -1,31 +1,31 @@ - - - - ['|', ('operating_unit_id','=',False), ('operating_unit_id','in',user.operating_unit_ids.ids)] + + ['|', ('operating_unit_id','=',False), ('operating_unit_id','in',user.operating_unit_ids.ids)] Project Operating Unit - - - - - + + + + + - - - ['|', ('operating_unit_id','=',False), ('operating_unit_id','in',user.operating_unit_ids.ids)] + + ['|', ('operating_unit_id','=',False), ('operating_unit_id','in',user.operating_unit_ids.ids)] Project Task Operating Unit - - - - - + + + + + - diff --git a/project_operating_unit/tests/test_project_operating_unit.py b/project_operating_unit/tests/test_project_operating_unit.py index ce7394b894..5e84b473e6 100644 --- a/project_operating_unit/tests/test_project_operating_unit.py +++ b/project_operating_unit/tests/test_project_operating_unit.py @@ -5,35 +5,33 @@ class TestProject(common.TransactionCase): - def setUp(self): super(TestProject, self).setUp() - self.project_obj = self.env['project.project'] - self.task_obj = self.env['project.task'] - self.res_users_model = self.env['res.users'] + self.project_obj = self.env["project.project"] + self.task_obj = self.env["project.task"] + self.res_users_model = self.env["res.users"] - self.partner_1 = self.env['res.partner'].create({ - 'name': 'SERPENTCS ', - 'email': 'serpentcs@gmail.com'}) + self.partner_1 = self.env["res.partner"].create( + {"name": "SERPENTCS ", "email": "serpentcs@gmail.com"} + ) # Groups - self.grp_mngr =\ - self.env.ref('project.group_project_manager') - self.grp_user = self.env.ref('project.group_project_user') + self.grp_mngr = self.env.ref("project.group_project_manager") + self.grp_user = self.env.ref("project.group_project_user") # Company - self.company = self.env.ref('base.main_company') + self.company = self.env.ref("base.main_company") # Main Operating Unit - self.main_OU = self.env.ref('operating_unit.main_operating_unit') + self.main_OU = self.env.ref("operating_unit.main_operating_unit") # B2C Operating Unit - self.b2c_OU = self.env.ref('operating_unit.b2c_operating_unit') + self.b2c_OU = self.env.ref("operating_unit.b2c_operating_unit") # Create User 1 with Main OU - self.user1 = self._create_user('user_1', [self.grp_mngr, - self.grp_user], - self.company, [self.main_OU]) + self.user1 = self._create_user( + "user_1", [self.grp_mngr, self.grp_user], self.company, [self.main_OU] + ) # Create User 2 with B2C OU - self.user2 = self._create_user('user_2', [self.grp_mngr, - self.grp_user], - self.company, [self.b2c_OU]) + self.user2 = self._create_user( + "user_2", [self.grp_mngr, self.grp_user], self.company, [self.b2c_OU] + ) self.project1 = self._create_project(self.user1, self.main_OU) self.project2 = self._create_project(self.user2, self.b2c_OU) @@ -43,52 +41,59 @@ def setUp(self): def _create_user(self, login, groups, company, operating_units): """ Create a user. """ group_ids = [group.id for group in groups] - user = self.res_users_model.create({ - 'name': login, - 'login': login, - 'password': 'demo', - 'email': 'test@yourcompany.com', - 'company_id': company.id, - 'company_ids': [(4, company.id)], - 'operating_unit_ids': [(4, ou.id) for ou in operating_units], - 'groups_id': [(6, 0, group_ids)] - }) + user = self.res_users_model.create( + { + "name": login, + "login": login, + "password": "demo", + "email": "test@yourcompany.com", + "company_id": company.id, + "company_ids": [(4, company.id)], + "operating_unit_ids": [(4, ou.id) for ou in operating_units], + "groups_id": [(6, 0, group_ids)], + } + ) return user def _create_project(self, uid, operating_unit): - project = self.project_obj.sudo(uid).create({ - 'name': 'Test Project', - 'operating_unit_id': operating_unit.id, - 'privacy_visibility': 'employees', - 'partner_id': self.partner_1.id - }) + project = self.project_obj.with_user(uid).create( + { + "name": "Test Project", + "operating_unit_id": operating_unit.id, + "privacy_visibility": "employees", + "partner_id": self.partner_1.id, + } + ) return project def _create_task(self, uid, project): - task = self.task_obj.create({ - 'name': 'Test Task', - 'user_id': uid.id, - 'project_id': project.id - }) + task = self.task_obj.create( + {"name": "Test Task", "user_id": uid.id, "project_id": project.id} + ) return task def test_project(self): # User 2 is only assigned to B2C Operating Unit, and cannot # access Project for Main Operating Unit. - projects = self.project_obj.sudo(self.user2.id).search( - [('id', '=', self.project2.id), - ('operating_unit_id', '=', self.main_OU.id)]) - self.assertEqual(projects.ids, [], 'User 2 should not have access to ' - '%s' % self.main_OU.name) + projects = self.project_obj.with_user(self.user2.id).search( + [("id", "=", self.project2.id), ("operating_unit_id", "=", self.main_OU.id)] + ) + self.assertEqual( + projects.ids, + [], + "User 2 should not have access to " "%s" % self.main_OU.name, + ) self.assertEqual(self.project1.operating_unit_id.id, self.main_OU.id) def test_project_task(self): # User 2 is only assigned to B2C Operating Unit, and cannot # access Task for Main Operating Unit. - tasks = self.task_obj.sudo(self.user2.id).search( - [('id', '=', self.task2.id), - ('operating_unit_id', '=', self.main_OU.id)]) - self.assertEqual(tasks.ids, [], 'User 2 should not have access to ' - '%s' % self.main_OU.name) - self.assertEqual(self.task1.operating_unit_id.id, - self.project1.operating_unit_id.id) + tasks = self.task_obj.with_user(self.user2.id).search( + [("id", "=", self.task2.id), ("operating_unit_id", "=", self.main_OU.id)] + ) + self.assertEqual( + tasks.ids, [], "User 2 should not have access to " "%s" % self.main_OU.name + ) + self.assertEqual( + self.task1.operating_unit_id.id, self.project1.operating_unit_id.id + ) diff --git a/project_operating_unit/views/project_project.xml b/project_operating_unit/views/project_project.xml index 9b72bf68e4..dc949d4e86 100644 --- a/project_operating_unit/views/project_project.xml +++ b/project_operating_unit/views/project_project.xml @@ -2,29 +2,30 @@ - project.project.form project.project - + - + - project.group.by.ou project.project - + - + - diff --git a/project_operating_unit/views/project_task.xml b/project_operating_unit/views/project_task.xml index ee53d883ac..bc90cbb544 100644 --- a/project_operating_unit/views/project_task.xml +++ b/project_operating_unit/views/project_task.xml @@ -2,16 +2,14 @@ - project.task.form - project.task - + project.task + - + - From 17bfb400b8418d7f816c2a9123f7411dbf8b02ae Mon Sep 17 00:00:00 2001 From: Murtaza Mithaiwala Date: Fri, 25 Jun 2021 15:08:28 +0530 Subject: [PATCH 07/17] [FIX] pre-commit. --- project_operating_unit/README.rst | 7 ++++--- project_operating_unit/__manifest__.py | 2 +- project_operating_unit/readme/CONTRIBUTORS.rst | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/project_operating_unit/README.rst b/project_operating_unit/README.rst index b572cf5cf2..316fc93b0b 100644 --- a/project_operating_unit/README.rst +++ b/project_operating_unit/README.rst @@ -14,13 +14,13 @@ Project with Operating Units :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Foperating--unit-lightgray.png?logo=github - :target: https://github.com/OCA/operating-unit/tree/13.0/project_operating_unit + :target: https://github.com/OCA/operating-unit/tree/14.0/project_operating_unit :alt: OCA/operating-unit .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/operating-unit-13-0/operating-unit-13-0-project_operating_unit + :target: https://translation.odoo-community.org/projects/operating-unit-14-0/operating-unit-14-0-project_operating_unit :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/213/13.0 + :target: https://runbot.odoo-community.org/runbot/213/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -64,6 +64,7 @@ Contributors * Nikul Chaudhary * Maxime Chambreuil +* Murtaza Mithaiwala Other credits ~~~~~~~~~~~~~ diff --git a/project_operating_unit/__manifest__.py b/project_operating_unit/__manifest__.py index dee25f92cc..895b24bdad 100644 --- a/project_operating_unit/__manifest__.py +++ b/project_operating_unit/__manifest__.py @@ -5,7 +5,7 @@ "name": "Project with Operating Units", "summary": """ This module adds operating unit information to projects and tasks.""", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "author": "Open Source Integrators, " "Serpent Consulting Services Pvt. Ltd.," "Odoo Community Association (OCA)", diff --git a/project_operating_unit/readme/CONTRIBUTORS.rst b/project_operating_unit/readme/CONTRIBUTORS.rst index e61704632a..6530909328 100644 --- a/project_operating_unit/readme/CONTRIBUTORS.rst +++ b/project_operating_unit/readme/CONTRIBUTORS.rst @@ -1,2 +1,3 @@ * Nikul Chaudhary * Maxime Chambreuil +* Murtaza Mithaiwala From 84570e07ae895f5d6c98ef90814a68a5580ec3c1 Mon Sep 17 00:00:00 2001 From: Murtaza Mithaiwala Date: Fri, 25 Jun 2021 15:36:51 +0530 Subject: [PATCH 08/17] [14.0][MIG] project_operating_unit. --- .../security/project_security.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/project_operating_unit/security/project_security.xml b/project_operating_unit/security/project_security.xml index 7ad8cffd31..1b067bd778 100644 --- a/project_operating_unit/security/project_security.xml +++ b/project_operating_unit/security/project_security.xml @@ -10,10 +10,10 @@ Project Operating Unit - - - - + + + + @@ -23,9 +23,9 @@ Project Task Operating Unit - - - - + + + + From dc4ac6bbc77e59d25df2327fa64cdfadcb1ab10d Mon Sep 17 00:00:00 2001 From: Urvisha-OSI Date: Fri, 4 Nov 2022 15:06:56 +0530 Subject: [PATCH 09/17] [FIX] run pre-commit for solve issue --- project_operating_unit/README.rst | 4 +-- .../i18n/project_operating_unit.pot | 25 ++++++++++++++++--- project_operating_unit/i18n/pt.po | 18 +++++++++++++ .../static/description/index.html | 7 +++--- .../tests/test_project_operating_unit.py | 2 +- 5 files changed, 46 insertions(+), 10 deletions(-) diff --git a/project_operating_unit/README.rst b/project_operating_unit/README.rst index 316fc93b0b..344a398d55 100644 --- a/project_operating_unit/README.rst +++ b/project_operating_unit/README.rst @@ -46,7 +46,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. @@ -93,6 +93,6 @@ Current `maintainer `__: |maintainer-max3903| -This module is part of the `OCA/operating-unit `_ project on GitHub. +This module is part of the `OCA/operating-unit `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/project_operating_unit/i18n/project_operating_unit.pot b/project_operating_unit/i18n/project_operating_unit.pot index bf8bb02577..1ada1ac686 100644 --- a/project_operating_unit/i18n/project_operating_unit.pot +++ b/project_operating_unit/i18n/project_operating_unit.pot @@ -1,18 +1,36 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * project_operating_unit +# * project_operating_unit # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\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_operating_unit +#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__display_name +#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__display_name +msgid "Display Name" +msgstr "" + +#. module: project_operating_unit +#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__id +#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__id +msgid "ID" +msgstr "" + +#. module: project_operating_unit +#: model:ir.model.fields,field_description:project_operating_unit.field_project_project____last_update +#: model:ir.model.fields,field_description:project_operating_unit.field_project_task____last_update +msgid "Last Modified on" +msgstr "" + #. module: project_operating_unit #: model:ir.model.fields,field_description:project_operating_unit.field_project_project__operating_unit_id #: model:ir.model.fields,field_description:project_operating_unit.field_project_task__operating_unit_id @@ -29,4 +47,3 @@ msgstr "" #: model:ir.model,name:project_operating_unit.model_project_task msgid "Task" msgstr "" - diff --git a/project_operating_unit/i18n/pt.po b/project_operating_unit/i18n/pt.po index 7a9de7a96e..b57bdbcf92 100644 --- a/project_operating_unit/i18n/pt.po +++ b/project_operating_unit/i18n/pt.po @@ -16,6 +16,24 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.10\n" +#. module: project_operating_unit +#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__display_name +#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__display_name +msgid "Display Name" +msgstr "" + +#. module: project_operating_unit +#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__id +#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__id +msgid "ID" +msgstr "" + +#. module: project_operating_unit +#: model:ir.model.fields,field_description:project_operating_unit.field_project_project____last_update +#: model:ir.model.fields,field_description:project_operating_unit.field_project_task____last_update +msgid "Last Modified on" +msgstr "" + #. module: project_operating_unit #: model:ir.model.fields,field_description:project_operating_unit.field_project_project__operating_unit_id #: model:ir.model.fields,field_description:project_operating_unit.field_project_task__operating_unit_id diff --git a/project_operating_unit/static/description/index.html b/project_operating_unit/static/description/index.html index 0a9ce5cd75..c26ef91d2b 100644 --- a/project_operating_unit/static/description/index.html +++ b/project_operating_unit/static/description/index.html @@ -367,7 +367,7 @@

Project with Operating Units

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

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

+

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

This module adds operating unit information to projects and tasks.

Table of contents

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

@@ -414,6 +414,7 @@

Contributors

@@ -432,7 +433,7 @@

Maintainers

promote its widespread use.

Current maintainer:

max3903

-

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

+

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

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

diff --git a/project_operating_unit/tests/test_project_operating_unit.py b/project_operating_unit/tests/test_project_operating_unit.py index 5e84b473e6..073e8d6d80 100644 --- a/project_operating_unit/tests/test_project_operating_unit.py +++ b/project_operating_unit/tests/test_project_operating_unit.py @@ -39,7 +39,7 @@ def setUp(self): self.task2 = self._create_task(self.user2, self.project2) def _create_user(self, login, groups, company, operating_units): - """ Create a user. """ + """Create a user.""" group_ids = [group.id for group in groups] user = self.res_users_model.create( { From 0142994bf26f9d74522663779675da7bbd7a5c6b Mon Sep 17 00:00:00 2001 From: hugues de keyzer Date: Fri, 17 Mar 2023 13:32:29 +0100 Subject: [PATCH 10/17] [MIG] project_operating_unit: migration to 15.0 --- project_operating_unit/__manifest__.py | 10 +-- project_operating_unit/models/project_task.py | 3 - .../tests/test_project_operating_unit.py | 71 +++++++++++-------- project_operating_unit/views/project_task.xml | 2 +- 4 files changed, 48 insertions(+), 38 deletions(-) diff --git a/project_operating_unit/__manifest__.py b/project_operating_unit/__manifest__.py index 895b24bdad..f9aaf20df0 100644 --- a/project_operating_unit/__manifest__.py +++ b/project_operating_unit/__manifest__.py @@ -5,20 +5,22 @@ "name": "Project with Operating Units", "summary": """ This module adds operating unit information to projects and tasks.""", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "author": "Open Source Integrators, " - "Serpent Consulting Services Pvt. Ltd.," + "Serpent Consulting Services Pvt. Ltd., " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/operating-unit", "category": "Project", - "depends": ["operating_unit", "project"], + "depends": [ + "operating_unit", + "project", + ], "license": "AGPL-3", "data": [ "security/project_security.xml", "views/project_project.xml", "views/project_task.xml", ], - "installable": True, "development_status": "Beta", "maintainers": ["max3903"], } diff --git a/project_operating_unit/models/project_task.py b/project_operating_unit/models/project_task.py index cbb568f70c..60f59348ef 100644 --- a/project_operating_unit/models/project_task.py +++ b/project_operating_unit/models/project_task.py @@ -11,7 +11,4 @@ class ProjectTask(models.Model): comodel_name="operating.unit", related="project_id.operating_unit_id", string="Operating Unit", - default=lambda self: self.env["res.users"].operating_unit_default_get( - self._uid - ), ) diff --git a/project_operating_unit/tests/test_project_operating_unit.py b/project_operating_unit/tests/test_project_operating_unit.py index 073e8d6d80..82e5ba439a 100644 --- a/project_operating_unit/tests/test_project_operating_unit.py +++ b/project_operating_unit/tests/test_project_operating_unit.py @@ -1,74 +1,85 @@ # Copyright (C) 2019 Open Source Integrators # Copyright (C) 2019 Serpent Consulting Services # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +from odoo import fields from odoo.tests import common class TestProject(common.TransactionCase): - def setUp(self): - super(TestProject, self).setUp() - self.project_obj = self.env["project.project"] - self.task_obj = self.env["project.task"] - self.res_users_model = self.env["res.users"] + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.project_obj = cls.env["project.project"] + cls.task_obj = cls.env["project.task"] + cls.res_users_model = cls.env["res.users"] - self.partner_1 = self.env["res.partner"].create( + cls.partner_1 = cls.env["res.partner"].create( {"name": "SERPENTCS ", "email": "serpentcs@gmail.com"} ) # Groups - self.grp_mngr = self.env.ref("project.group_project_manager") - self.grp_user = self.env.ref("project.group_project_user") + cls.grp_mngr = cls.env.ref("project.group_project_manager") + cls.grp_user = cls.env.ref("project.group_project_user") # Company - self.company = self.env.ref("base.main_company") + cls.company = cls.env.ref("base.main_company") # Main Operating Unit - self.main_OU = self.env.ref("operating_unit.main_operating_unit") + cls.main_OU = cls.env.ref("operating_unit.main_operating_unit") # B2C Operating Unit - self.b2c_OU = self.env.ref("operating_unit.b2c_operating_unit") + cls.b2c_OU = cls.env.ref("operating_unit.b2c_operating_unit") # Create User 1 with Main OU - self.user1 = self._create_user( - "user_1", [self.grp_mngr, self.grp_user], self.company, [self.main_OU] + cls.user1 = cls._create_user( + "user_1", [cls.grp_mngr, cls.grp_user], cls.company, [cls.main_OU] ) # Create User 2 with B2C OU - self.user2 = self._create_user( - "user_2", [self.grp_mngr, self.grp_user], self.company, [self.b2c_OU] + cls.user2 = cls._create_user( + "user_2", [cls.grp_mngr, cls.grp_user], cls.company, [cls.b2c_OU] ) - self.project1 = self._create_project(self.user1, self.main_OU) - self.project2 = self._create_project(self.user2, self.b2c_OU) - self.task1 = self._create_task(self.user1, self.project1) - self.task2 = self._create_task(self.user2, self.project2) + cls.project1 = cls._create_project(cls.user1, cls.main_OU) + cls.project2 = cls._create_project(cls.user2, cls.b2c_OU) + cls.task1 = cls._create_task(cls.user1, cls.project1) + cls.task2 = cls._create_task(cls.user2, cls.project2) - def _create_user(self, login, groups, company, operating_units): + @classmethod + def _create_user(cls, login, groups, company, operating_units): """Create a user.""" group_ids = [group.id for group in groups] - user = self.res_users_model.create( + user = cls.res_users_model.create( { "name": login, "login": login, "password": "demo", "email": "test@yourcompany.com", "company_id": company.id, - "company_ids": [(4, company.id)], - "operating_unit_ids": [(4, ou.id) for ou in operating_units], - "groups_id": [(6, 0, group_ids)], + "company_ids": [fields.Command.link(company.id)], + "operating_unit_ids": [ + fields.Command.link(ou.id) for ou in operating_units + ], + "groups_id": [fields.Command.set(group_ids)], } ) return user - def _create_project(self, uid, operating_unit): - project = self.project_obj.with_user(uid).create( + @classmethod + def _create_project(cls, uid, operating_unit): + project = cls.project_obj.with_user(uid).create( { "name": "Test Project", "operating_unit_id": operating_unit.id, "privacy_visibility": "employees", - "partner_id": self.partner_1.id, + "partner_id": cls.partner_1.id, } ) return project - def _create_task(self, uid, project): - task = self.task_obj.create( - {"name": "Test Task", "user_id": uid.id, "project_id": project.id} + @classmethod + def _create_task(cls, uid, project): + task = cls.task_obj.create( + { + "name": "Test Task", + "user_ids": [fields.Command.link(uid.id)], + "project_id": project.id, + } ) return task diff --git a/project_operating_unit/views/project_task.xml b/project_operating_unit/views/project_task.xml index bc90cbb544..7a196bcadd 100644 --- a/project_operating_unit/views/project_task.xml +++ b/project_operating_unit/views/project_task.xml @@ -7,7 +7,7 @@ project.task - + From 5c8a475c6ca0d8731def6ecfb2ec9c1c14302f4b Mon Sep 17 00:00:00 2001 From: hugues de keyzer Date: Fri, 17 Mar 2023 15:55:53 +0100 Subject: [PATCH 11/17] [MIG] project_operating_unit: migration to 16.0 --- project_operating_unit/README.rst | 23 +++++---- project_operating_unit/__manifest__.py | 2 +- .../i18n/project_operating_unit.pot | 20 +------- project_operating_unit/i18n/pt.po | 18 ------- .../static/description/index.html | 48 ++++++++++--------- 5 files changed, 40 insertions(+), 71 deletions(-) diff --git a/project_operating_unit/README.rst b/project_operating_unit/README.rst index 344a398d55..7b0b230201 100644 --- a/project_operating_unit/README.rst +++ b/project_operating_unit/README.rst @@ -2,10 +2,13 @@ Project with Operating Units ============================ -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:9b62c87767d573deaf62aaec01eaa849edc553018ba92d581d94655f4899f53a + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -14,16 +17,16 @@ Project with Operating Units :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Foperating--unit-lightgray.png?logo=github - :target: https://github.com/OCA/operating-unit/tree/14.0/project_operating_unit + :target: https://github.com/OCA/operating-unit/tree/16.0/project_operating_unit :alt: OCA/operating-unit .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/operating-unit-14-0/operating-unit-14-0-project_operating_unit + :target: https://translation.odoo-community.org/projects/operating-unit-16-0/operating-unit-16-0-project_operating_unit :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/213/14.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/operating-unit&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds operating unit information to projects and tasks. @@ -45,8 +48,8 @@ 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 `_. +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. @@ -93,6 +96,6 @@ Current `maintainer `__: |maintainer-max3903| -This module is part of the `OCA/operating-unit `_ project on GitHub. +This module is part of the `OCA/operating-unit `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/project_operating_unit/__manifest__.py b/project_operating_unit/__manifest__.py index f9aaf20df0..3ddc626358 100644 --- a/project_operating_unit/__manifest__.py +++ b/project_operating_unit/__manifest__.py @@ -5,7 +5,7 @@ "name": "Project with Operating Units", "summary": """ This module adds operating unit information to projects and tasks.""", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "author": "Open Source Integrators, " "Serpent Consulting Services Pvt. Ltd., " "Odoo Community Association (OCA)", diff --git a/project_operating_unit/i18n/project_operating_unit.pot b/project_operating_unit/i18n/project_operating_unit.pot index 1ada1ac686..8e66fe6236 100644 --- a/project_operating_unit/i18n/project_operating_unit.pot +++ b/project_operating_unit/i18n/project_operating_unit.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,24 +13,6 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: project_operating_unit -#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__display_name -#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__display_name -msgid "Display Name" -msgstr "" - -#. module: project_operating_unit -#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__id -#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__id -msgid "ID" -msgstr "" - -#. module: project_operating_unit -#: model:ir.model.fields,field_description:project_operating_unit.field_project_project____last_update -#: model:ir.model.fields,field_description:project_operating_unit.field_project_task____last_update -msgid "Last Modified on" -msgstr "" - #. module: project_operating_unit #: model:ir.model.fields,field_description:project_operating_unit.field_project_project__operating_unit_id #: model:ir.model.fields,field_description:project_operating_unit.field_project_task__operating_unit_id diff --git a/project_operating_unit/i18n/pt.po b/project_operating_unit/i18n/pt.po index b57bdbcf92..7a9de7a96e 100644 --- a/project_operating_unit/i18n/pt.po +++ b/project_operating_unit/i18n/pt.po @@ -16,24 +16,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.10\n" -#. module: project_operating_unit -#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__display_name -#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__display_name -msgid "Display Name" -msgstr "" - -#. module: project_operating_unit -#: model:ir.model.fields,field_description:project_operating_unit.field_project_project__id -#: model:ir.model.fields,field_description:project_operating_unit.field_project_task__id -msgid "ID" -msgstr "" - -#. module: project_operating_unit -#: model:ir.model.fields,field_description:project_operating_unit.field_project_project____last_update -#: model:ir.model.fields,field_description:project_operating_unit.field_project_task____last_update -msgid "Last Modified on" -msgstr "" - #. module: project_operating_unit #: model:ir.model.fields,field_description:project_operating_unit.field_project_project__operating_unit_id #: model:ir.model.fields,field_description:project_operating_unit.field_project_task__operating_unit_id diff --git a/project_operating_unit/static/description/index.html b/project_operating_unit/static/description/index.html index c26ef91d2b..ce81cb8411 100644 --- a/project_operating_unit/static/description/index.html +++ b/project_operating_unit/static/description/index.html @@ -1,20 +1,20 @@ - + - + Project with Operating Units