Fix validation for Build model (#6038)

* Fix validation for Build model

- Move checks into clean() method
- Allows errors to be handled cleanly when editing from the admin interface

* Fix unit test
This commit is contained in:
Oliver 2023-12-06 09:48:49 +11:00 committed by GitHub
parent f70a049102
commit 2aef05c1c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 7 deletions

View File

@ -109,12 +109,6 @@ class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBar
self.validate_reference_field(self.reference)
self.reference_int = self.rebuild_reference_field(self.reference)
# Prevent changing target part after creation
if self.has_field_changed('part'):
raise ValidationError({
'part': _('Build order part cannot be changed')
})
try:
super().save(*args, **kwargs)
except InvalidMove:
@ -122,6 +116,17 @@ class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBar
'parent': _('Invalid choice for parent build'),
})
def clean(self):
"""Validate the BuildOrder model"""
super().clean()
# Prevent changing target part after creation
if self.has_field_changed('part'):
raise ValidationError({
'part': _('Build order part cannot be changed')
})
@staticmethod
def filterByDate(queryset, min_date, max_date):
"""Filter by 'minimum and maximum date range'.

View File

@ -491,7 +491,7 @@ class BuildTest(BuildTestBase):
# Should not be able to change the part after the Build is saved
with self.assertRaises(ValidationError):
bo.part = assembly_2
bo.save()
bo.clean()
def test_cancel(self):
"""Test cancellation of the build"""