diff --git a/project_stock/tests/common.py b/project_stock/tests/common.py
index eb7f9cb084..1eb846ff65 100644
--- a/project_stock/tests/common.py
+++ b/project_stock/tests/common.py
@@ -47,7 +47,7 @@ def setUpClass(cls):
cls.stage_in_progress = cls.env.ref("project.project_stage_1")
cls.stage_done = cls.env.ref("project.project_stage_2")
group_stock_user = "stock.group_stock_user"
- new_test_user(
+ cls.basic_user = new_test_user(
cls.env,
login="basic-user",
groups="project.group_project_user,%s" % group_stock_user,
diff --git a/project_stock/tests/test_project_stock.py b/project_stock/tests/test_project_stock.py
index 53278fc331..3428d562d1 100644
--- a/project_stock/tests/test_project_stock.py
+++ b/project_stock/tests/test_project_stock.py
@@ -1,8 +1,9 @@
-# Copyright 2022-2023 Tecnativa - Víctor Martínez
+# Copyright 2022-2024 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields
from odoo.tests import Form
from odoo.tests.common import users
+from odoo.tools import mute_logger
from .common import TestProjectStockBase
@@ -81,6 +82,15 @@ def test_project_task_without_analytic_account(self):
def test_project_task_without_analytic_account_manager_user(self):
self.test_project_task_without_analytic_account()
+ def test_project_task_user_access_without_stock_group(self):
+ self.basic_user.write(
+ {
+ "groups_id": [(6, 0, [self.env.ref("project.group_project_user").id])],
+ }
+ )
+ task_form = Form(self.task.with_user(self.basic_user))
+ self.assertEqual(task_form.project_id, self.project)
+
def test_project_task_analytic_lines_without_tags(self):
self.task = self.env["project.task"].browse(self.task.id)
self.task.write({"stage_id": self.stage_done.id})
@@ -173,6 +183,7 @@ def test_project_task_process_done(self):
def test_project_task_process_done_basic_user(self):
self.test_project_task_process_done()
+ @mute_logger("odoo.models.unlink")
def test_project_task_process_cancel(self):
self.task = self.env["project.task"].browse(self.task.id)
self.assertEqual(self.move_product_a.state, "draft")
@@ -212,6 +223,7 @@ def test_project_task_process_cancel(self):
def test_project_task_process_cancel_manager_user(self):
self.test_project_task_process_cancel()
+ @mute_logger("odoo.models.unlink")
def test_project_task_process_unreserve(self):
self.task = self.env["project.task"].browse(self.task.id)
self.assertEqual(self.move_product_a.state, "draft")
@@ -233,6 +245,7 @@ def test_project_task_process_unreserve(self):
self.assertEqual(self.move_product_b.reserved_availability, 0)
self.assertFalse(self.task.unreserve_visible)
+ @mute_logger("odoo.models.unlink")
def test_project_task_process_01(self):
"""Product A move cancel + Product B move OK."""
self.task = self.env["project.task"].browse(self.task.id)
@@ -290,6 +303,7 @@ def test_project_task_action_done(self):
def test_project_task_action_done_basic_user(self):
self.test_project_task_action_done()
+ @mute_logger("odoo.models.unlink")
def test_project_task_unlink(self):
self.assertTrue(self.env["project.task"].browse(self.task.id).unlink())
@@ -297,6 +311,7 @@ def test_project_task_unlink(self):
def test_project_task_unlink_basic_user(self):
self.test_project_task_unlink()
+ @mute_logger("odoo.models.unlink")
def test_project_project_onchange(self):
new_type = self.env.ref("stock.picking_type_out")
self.project.write({"picking_type_id": new_type.id})
diff --git a/project_stock/views/project_task_view.xml b/project_stock/views/project_task_view.xml
index f5be5b1b36..0f5395c3e2 100644
--- a/project_stock/views/project_task_view.xml
+++ b/project_stock/views/project_task_view.xml
@@ -40,13 +40,14 @@
/>
-
+
+
+
-
@@ -113,7 +121,6 @@
name="move_ids"
context="{'tree_view_ref': 'project_stock.view_stock_move_raw_tree', 'form_view_ref':'stock.view_move_form', 'default_company_id': company_id, 'default_state': 'draft', 'default_raw_material_task_id': id}"
attrs="{'readonly': [('done_stock_moves', '=', True),('stock_moves_is_locked', '=', True)]}"
- groups="stock.group_stock_user"
/>