From bec98d355a08c6fdc09abaf3c73de0639a8fd2fe Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 9 Jul 2021 00:49:19 +1000 Subject: [PATCH] Improvements - part_detail defaults to True for BuildSerializer - Handle invalid parent for BuildOrder --- InvenTree/build/models.py | 12 +++++++++++- InvenTree/build/serializers.py | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index f1190a6346..774e606040 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -21,6 +21,7 @@ from django.core.validators import MinValueValidator from markdownx.models import MarkdownxField from mptt.models import MPTTModel, TreeForeignKey +from mptt.exceptions import InvalidMove from InvenTree.status_codes import BuildStatus, StockStatus, StockHistoryCode from InvenTree.helpers import increment, getSetting, normalize, MakeBarcode @@ -89,11 +90,20 @@ class Build(MPTTModel): responsible: User (or group) responsible for completing the build """ + OVERDUE_FILTER = Q(status__in=BuildStatus.ACTIVE_CODES) & ~Q(target_date=None) & Q(target_date__lte=datetime.now().date()) + @staticmethod def get_api_url(): return reverse('api-build-list') - OVERDUE_FILTER = Q(status__in=BuildStatus.ACTIVE_CODES) & ~Q(target_date=None) & Q(target_date__lte=datetime.now().date()) + def save(self, *args, **kwargs): + + try: + super().save(*args, **kwargs) + except InvalidMove: + raise ValidationError({ + 'parent': _('Invalid choice for parent build'), + }) class Meta: verbose_name = _("Build Order") diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index 0677320401..5c0fced884 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -62,7 +62,7 @@ class BuildSerializer(InvenTreeModelSerializer): return queryset def __init__(self, *args, **kwargs): - part_detail = kwargs.pop('part_detail', False) + part_detail = kwargs.pop('part_detail', True) super().__init__(*args, **kwargs)