Cancel build function now works

This commit is contained in:
Oliver Walters 2019-05-01 22:21:13 +10:00
parent 98109bb1a1
commit 7f63a94f15
3 changed files with 20 additions and 5 deletions

View File

@ -9,7 +9,7 @@ from django.utils.translation import ugettext as _
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.urls import reverse from django.urls import reverse
from django.db import models from django.db import models, transaction
from django.core.validators import MinValueValidator from django.core.validators import MinValueValidator
from stock.models import StockItem from stock.models import StockItem
@ -94,13 +94,11 @@ class Build(models.Model):
# Build status codes # Build status codes
PENDING = 10 # Build is pending / active PENDING = 10 # Build is pending / active
HOLDING = 20 # Build is currently being held
CANCELLED = 30 # Build was cancelled CANCELLED = 30 # Build was cancelled
COMPLETE = 40 # Build is complete COMPLETE = 40 # Build is complete
#: Build status codes #: Build status codes
BUILD_STATUS_CODES = {PENDING: _("Pending"), BUILD_STATUS_CODES = {PENDING: _("Pending"),
HOLDING: _("Holding"),
CANCELLED: _("Cancelled"), CANCELLED: _("Cancelled"),
COMPLETE: _("Complete"), COMPLETE: _("Complete"),
} }
@ -121,13 +119,23 @@ class Build(models.Model):
notes = models.TextField(blank=True) notes = models.TextField(blank=True)
""" Notes attached to each build output """ """ Notes attached to each build output """
@transaction.atomic
def cancelBuild(self): def cancelBuild(self):
""" Mark the Build as CANCELLED """ Mark the Build as CANCELLED
- Delete any pending BuildItem objects (but do not remove items from stock) - Delete any pending BuildItem objects (but do not remove items from stock)
- Set build status to CANCELLED
- Save the Build object
""" """
for item in BuildItem.objects.filter(build=self.id):
item.delete()
self.status = self.CANCELLED
self.save()
print("cancelled!") print("cancelled!")
@transaction.atomic
def completeBuild(self): def completeBuild(self):
""" Mark the Build as COMPLETE """ Mark the Build as COMPLETE
@ -172,7 +180,6 @@ class Build(models.Model):
return self.status in [ return self.status in [
self.PENDING, self.PENDING,
self.HOLDING
] ]
@property @property
@ -232,6 +239,7 @@ class BuildItem(models.Model):
Build, Build,
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name='allocated_stock', related_name='allocated_stock',
help_text='Build to allocate parts'
) )
stock_item = models.ForeignKey( stock_item = models.ForeignKey(

View File

@ -32,6 +32,13 @@ class BuildSerializer(InvenTreeModelSerializer):
'status_text', 'status_text',
'notes'] 'notes']
read_only_fields = [
'status',
'creation_date',
'completion_data',
'status_text',
]
class BuildItemSerializer(InvenTreeModelSerializer): class BuildItemSerializer(InvenTreeModelSerializer):
""" Serializes a BuildItem object """ """ Serializes a BuildItem object """

View File

@ -64,7 +64,7 @@ class BuildCancel(AjaxView):
def get_data(self): def get_data(self):
""" Provide JSON context data. """ """ Provide JSON context data. """
return { return {
'info': 'Build was cancelled' 'danger': 'Build was cancelled'
} }