From 606c5a9bd9d3f025568c4a4d0e526e0d5856614d Mon Sep 17 00:00:00 2001 From: Jose Cano Date: Mon, 24 Jun 2024 12:47:43 +0200 Subject: [PATCH] [16.0][FIX] project_sequence: Force generate sequence when it is empty. --- project_sequence/models/project_project.py | 2 +- .../tests/test_project_sequence.py | 25 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/project_sequence/models/project_project.py b/project_sequence/models/project_project.py index 32eb5d9c03..ddd5b5a6c8 100644 --- a/project_sequence/models/project_project.py +++ b/project_sequence/models/project_project.py @@ -72,7 +72,7 @@ def create(self, vals_list): # It is important to set sequence_code before calling super() because # other modules such as hr_timesheet expect the name to always have a value for vals in vals_list: - if "sequence_code" not in vals: + if not vals.get("sequence_code", False): vals["sequence_code"] = self.env["ir.sequence"].next_by_code( "project.sequence" ) diff --git a/project_sequence/tests/test_project_sequence.py b/project_sequence/tests/test_project_sequence.py index a9b9645c48..5eaa040374 100644 --- a/project_sequence/tests/test_project_sequence.py +++ b/project_sequence/tests/test_project_sequence.py @@ -118,16 +118,35 @@ def test_sequence_unique(self): @users("manager") def test_project_without_sequence(self): """Preexisting projects had no sequence, and they should display fine.""" - proj1 = self.env["project.project"].create( - {"name": "one", "sequence_code": False} + proj1 = self.env["project.project"].search( + [ + ("sequence_code", "=", False), + ], + limit=1, ) - self.assertEqual(proj1.display_name, "one") + proj1.name = "one" self.assertFalse(proj1.sequence_code) + self.assertEqual(proj1.display_name, "one") # Make sure that the sequence is not increased proj2 = self.env["project.project"].create({"name": "two"}) self.assertEqual(proj2.sequence_code, "23-00011") self.assertEqual(proj2.display_name, "23-00011 - two") + @users("manager") + def test_project_with_empty_sequence(self): + """Sequence is applied when creating project with an empty sequence""" + proj1 = self.env["project.project"].create( + {"name": "whatever", "sequence_code": ""} + ) + self.assertEqual(proj1.sequence_code, "23-00011") + self.assertEqual(proj1.display_name, "23-00011 - whatever") + # Sequence is applied when creating project with sequence in False + proj2 = self.env["project.project"].create( + {"name": "whatever", "sequence_code": False} + ) + self.assertEqual(proj2.sequence_code, "23-00012") + self.assertEqual(proj2.display_name, "23-00012 - whatever") + def test_custom_pattern(self): """Display name pattern can be customized.""" self.env["ir.config_parameter"].set_param(