From 95f9d90877ef5eaed67d907e8326d8c7a99318ea Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 16 Sep 2024 12:41:04 +0930 Subject: [PATCH] feat(core): validate field milestone for all ticket types ref: #285 #292 --- app/core/forms/validate_ticket.py | 41 +++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/app/core/forms/validate_ticket.py b/app/core/forms/validate_ticket.py index 33e5e1252..9894ded1b 100644 --- a/app/core/forms/validate_ticket.py +++ b/app/core/forms/validate_ticket.py @@ -364,8 +364,35 @@ def field_edited(self, field:str) -> bool: def validate_field_milestone(self): - is_valid: bool = True + is_valid: bool = False + + if self.instance is not None: + + if self.instance.milestone is None: + + return True + else: + + if self.instance.project is None: + + self.combined_validation_error( + f'Milestones require a project', + code=f'milestone_requires_project', + ) + + return False + + if self.instance.project.id == self.instance.milestone.project.id: + + return True + + else: + + self.combined_validation_error( + f'Milestone must be from the same project', + code=f'milestone_same_project', + ) return is_valid @@ -513,13 +540,23 @@ def validate_ticket(self): validate_field_organization = True + validate_field_milestone: bool = False + if self.validate_field_milestone(): + + validate_field_milestone: bool = True + validate_field_status = False if self.validate_field_status(): validate_field_status = True - if validate_field_permission and validate_field_status and validate_field_organization: + if ( + validate_field_permission + and validate_field_status + and validate_field_milestone + and validate_field_organization + ): is_valid = True return is_valid