mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Fixes for build item allocation rendering
This commit is contained in:
parent
ab16e1efc3
commit
9baf856d75
@ -16,9 +16,13 @@ Increment thi API version number whenever there is a significant change to the A
|
|||||||
v3 -> 2021-05-22:
|
v3 -> 2021-05-22:
|
||||||
- The updated StockItem "history tracking" now uses a different interface
|
- The updated StockItem "history tracking" now uses a different interface
|
||||||
|
|
||||||
|
v4 -> 2021-06-01
|
||||||
|
- BOM items can now accept "variant stock" to be assigned against them
|
||||||
|
- Many slight API tweaks were needed to get this to work properly!
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
INVENTREE_API_VERSION = 3
|
INVENTREE_API_VERSION = 4
|
||||||
|
|
||||||
|
|
||||||
def inventreeInstanceName():
|
def inventreeInstanceName():
|
||||||
|
@ -30,6 +30,7 @@ from InvenTree.models import InvenTreeAttachment
|
|||||||
import common.models
|
import common.models
|
||||||
|
|
||||||
import InvenTree.fields
|
import InvenTree.fields
|
||||||
|
import InvenTree.helpers
|
||||||
|
|
||||||
from stock import models as StockModels
|
from stock import models as StockModels
|
||||||
from part import models as PartModels
|
from part import models as PartModels
|
||||||
@ -1280,6 +1281,18 @@ class BuildItem(models.Model):
|
|||||||
# Simply remove the items from stock
|
# Simply remove the items from stock
|
||||||
item.take_stock(self.quantity, user)
|
item.take_stock(self.quantity, user)
|
||||||
|
|
||||||
|
def getStockItemThumbnail(self):
|
||||||
|
"""
|
||||||
|
Return qualified URL for part thumbnail image
|
||||||
|
"""
|
||||||
|
|
||||||
|
if self.stock_item and self.stock_item.part:
|
||||||
|
return InvenTree.helpers.getMediaUrl(self.stock_item.part.image.thumbnail.url)
|
||||||
|
elif self.bom_item and self.stock_item.sub_part:
|
||||||
|
return InvenTree.helpers.getMediaUrl(self.bom_item.sub_part.image.thumbnail.url)
|
||||||
|
else:
|
||||||
|
return InvenTree.helpers.getBlankThumbnail()
|
||||||
|
|
||||||
build = models.ForeignKey(
|
build = models.ForeignKey(
|
||||||
Build,
|
Build,
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
|
@ -97,9 +97,10 @@ class BuildSerializer(InvenTreeModelSerializer):
|
|||||||
class BuildItemSerializer(InvenTreeModelSerializer):
|
class BuildItemSerializer(InvenTreeModelSerializer):
|
||||||
""" Serializes a BuildItem object """
|
""" Serializes a BuildItem object """
|
||||||
|
|
||||||
|
bom_part = serializers.IntegerField(source='bom_item.sub_part.pk', read_only=True)
|
||||||
part = serializers.IntegerField(source='stock_item.part.pk', read_only=True)
|
part = serializers.IntegerField(source='stock_item.part.pk', read_only=True)
|
||||||
part_name = serializers.CharField(source='stock_item.part.full_name', read_only=True)
|
part_name = serializers.CharField(source='stock_item.part.full_name', read_only=True)
|
||||||
part_image = serializers.CharField(source='stock_item.part.image', read_only=True)
|
part_thumb = serializers.CharField(source='getStockItemThumbnail', read_only=True)
|
||||||
stock_item_detail = StockItemSerializerBrief(source='stock_item', read_only=True)
|
stock_item_detail = StockItemSerializerBrief(source='stock_item', read_only=True)
|
||||||
|
|
||||||
quantity = serializers.FloatField()
|
quantity = serializers.FloatField()
|
||||||
@ -108,11 +109,12 @@ class BuildItemSerializer(InvenTreeModelSerializer):
|
|||||||
model = BuildItem
|
model = BuildItem
|
||||||
fields = [
|
fields = [
|
||||||
'pk',
|
'pk',
|
||||||
|
'bom_part',
|
||||||
'build',
|
'build',
|
||||||
'install_into',
|
'install_into',
|
||||||
'part',
|
'part',
|
||||||
'part_name',
|
'part_name',
|
||||||
'part_image',
|
'part_thumb',
|
||||||
'stock_item',
|
'stock_item',
|
||||||
'stock_item_detail',
|
'stock_item_detail',
|
||||||
'quantity'
|
'quantity'
|
||||||
|
@ -372,7 +372,7 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) {
|
|||||||
data.forEach(function(item) {
|
data.forEach(function(item) {
|
||||||
|
|
||||||
// Group BuildItem objects by part
|
// Group BuildItem objects by part
|
||||||
var part = item.part;
|
var part = item.bom_part || item.part;
|
||||||
var key = parseInt(part);
|
var key = parseInt(part);
|
||||||
|
|
||||||
if (!(key in allocations)) {
|
if (!(key in allocations)) {
|
||||||
@ -461,6 +461,16 @@ function loadBuildOutputAllocationTable(buildInfo, output, options={}) {
|
|||||||
data: row.allocations,
|
data: row.allocations,
|
||||||
showHeader: true,
|
showHeader: true,
|
||||||
columns: [
|
columns: [
|
||||||
|
{
|
||||||
|
field: 'part',
|
||||||
|
title: '{% trans "Part" %}',
|
||||||
|
formatter: function(value, row) {
|
||||||
|
|
||||||
|
var html = imageHoverIcon(row.part_thumb);
|
||||||
|
html += renderLink(row.part_name, `/part/${value}/`);
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
width: '50%',
|
width: '50%',
|
||||||
field: 'quantity',
|
field: 'quantity',
|
||||||
|
Loading…
Reference in New Issue
Block a user