From 76cb1fbfd797e33cda0aed84a3ea31ce3a0cb527 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Sun, 9 Dec 2018 17:26:34 +0100 Subject: [PATCH] [quality_control_stock][FIX] the stock user should be able to create quality control inspection without necessarily being quality control user. It is common that the person doing the picking is not going to be the same as the one doing the inspection. So when a stock user create the transfer, the system will create the necessary qc inspections, regardless if the user has permissions to process them. --- quality_control_stock/__manifest__.py | 1 + .../security/ir.model.access.csv | 8 +++++++ .../tests/test_quality_control_stock.py | 24 ++++++++++++++++++- 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 quality_control_stock/security/ir.model.access.csv diff --git a/quality_control_stock/__manifest__.py b/quality_control_stock/__manifest__.py index f95766f6f..3d60bb1c3 100644 --- a/quality_control_stock/__manifest__.py +++ b/quality_control_stock/__manifest__.py @@ -20,6 +20,7 @@ "stock", ], "data": [ + "security/ir.model.access.csv", "data/quality_control_stock_data.xml", "views/qc_inspection_view.xml", "views/stock_picking_view.xml", diff --git a/quality_control_stock/security/ir.model.access.csv b/quality_control_stock/security/ir.model.access.csv new file mode 100644 index 000000000..96a249167 --- /dev/null +++ b/quality_control_stock/security/ir.model.access.csv @@ -0,0 +1,8 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_user_qc_inspection_stock_user,qc_inspection stock user,quality_control.model_qc_inspection,stock.group_stock_user,1,1,1,0 +access_user_qc_inspection_line_stock_user,qc_inspection_line stock user,quality_control.model_qc_inspection_line,stock.group_stock_user,1,1,1,0 +access_user_qc_test_stock_user,qc_test stock_user,quality_control.model_qc_test,stock.group_stock_user,1,0,0,0 +access_user_qc_test_question_stock_user,qc_test_question stock user,quality_control.model_qc_test_question,stock.group_stock_user,1,0,0,0 +access_user_qc_test_question_value_stock_user,qc_test_question_value_stock_user,quality_control.model_qc_test_question_value,stock.group_stock_user,1,0,0,0 +access_manager_qc_trigger_stock_user,qc_trigger stock user,quality_control.model_qc_trigger,stock.group_stock_user,1,0,0,0 +access_manager_qc_trigger_product_category_line_stock_user,qc_trigger product_category line stock user,quality_control.model_qc_trigger_product_category_line,stock.group_stock_user,1,0,0,0 diff --git a/quality_control_stock/tests/test_quality_control_stock.py b/quality_control_stock/tests/test_quality_control_stock.py index e3e8a9648..88fdb091a 100644 --- a/quality_control_stock/tests/test_quality_control_stock.py +++ b/quality_control_stock/tests/test_quality_control_stock.py @@ -9,6 +9,8 @@ class TestQualityControl(TransactionCase): def setUp(self): super(TestQualityControl, self).setUp() + + self.users_model = self.env['res.users'] self.picking_model = self.env['stock.picking'] self.inspection_model = self.env['qc.inspection'] self.qc_trigger_model = self.env['qc.trigger'] @@ -33,6 +35,11 @@ class TestQualityControl(TransactionCase): 'name': 'Lot for tests', 'product_id': self.product.id, }) + self.group_stock_user = self.env.ref('stock.group_stock_user') + self.company1 = self.env.ref('base.main_company') + self.user1_id = self._create_user( + 'user_1', [self.group_stock_user], self.company1) + move_vals = { 'name': self.product.name, 'product_id': self.product.id, @@ -42,7 +49,7 @@ class TestQualityControl(TransactionCase): 'location_dest_id': self.location_dest.id, 'quantity_done': 1.0 } - self.picking1 = self.picking_model \ + self.picking1 = self.picking_model.sudo(self.user1_id) \ .with_context(default_picking_type_id=self.picking_type.id) \ .create({ 'partner_id': self.partner1.id, @@ -69,6 +76,21 @@ class TestQualityControl(TransactionCase): }) sequence += 10 + def _create_user(self, login, groups, company): + """ Create a user.""" + group_ids = [group.id for group in groups] + user = self.users_model.with_context({'no_reset_password': True}).\ + create({ + 'name': 'Sale User', + 'login': login, + 'password': 'test', + 'email': 'test@yourcompany.com', + 'company_id': company.id, + 'company_ids': [(4, company.id)], + 'groups_id': [(6, 0, group_ids)] + }) + return user.id + def test_inspection_create_for_product(self): self.product.qc_triggers = [( 0, 0, {