mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 20:16:44 +00:00
Fixes to the way ManufacturerPart is saved, manufacturer table filtering and test units
This commit is contained in:
parent
bb69e38c1a
commit
45ca8d0e93
@ -94,6 +94,7 @@ class ManufacturerPartList(generics.ListCreateAPIView):
|
|||||||
queryset = ManufacturerPart.objects.all().prefetch_related(
|
queryset = ManufacturerPart.objects.all().prefetch_related(
|
||||||
'part',
|
'part',
|
||||||
'manufacturer',
|
'manufacturer',
|
||||||
|
'supplier_parts',
|
||||||
)
|
)
|
||||||
|
|
||||||
serializer_class = ManufacturerPartSerializer
|
serializer_class = ManufacturerPartSerializer
|
||||||
@ -141,6 +142,12 @@ class ManufacturerPartList(generics.ListCreateAPIView):
|
|||||||
if part is not None:
|
if part is not None:
|
||||||
queryset = queryset.filter(part=part)
|
queryset = queryset.filter(part=part)
|
||||||
|
|
||||||
|
# Filter by supplier part?
|
||||||
|
supplier_part = params.get('supplier_part', None)
|
||||||
|
|
||||||
|
if supplier_part is not None:
|
||||||
|
queryset = queryset.filter(supplier_parts=supplier_part)
|
||||||
|
|
||||||
# Filter by 'active' status of the part?
|
# Filter by 'active' status of the part?
|
||||||
active = params.get('active', None)
|
active = params.get('active', None)
|
||||||
|
|
||||||
|
@ -20,3 +20,20 @@
|
|||||||
part: 5
|
part: 5
|
||||||
manufacturer: 7
|
manufacturer: 7
|
||||||
MPN: 'MPN789'
|
MPN: 'MPN789'
|
||||||
|
|
||||||
|
# Supplier parts linked to Manufacturer parts
|
||||||
|
- model: company.supplierpart
|
||||||
|
pk: 10
|
||||||
|
fields:
|
||||||
|
part: 3
|
||||||
|
manufacturer_part: 2
|
||||||
|
supplier: 2
|
||||||
|
SKU: 'MPN456-APPEL'
|
||||||
|
|
||||||
|
- model: company.supplierpart
|
||||||
|
pk: 11
|
||||||
|
fields:
|
||||||
|
part: 3
|
||||||
|
manufacturer_part: 2
|
||||||
|
supplier: 3
|
||||||
|
SKU: 'MPN456-ZERG'
|
||||||
|
@ -52,20 +52,3 @@
|
|||||||
part: 2
|
part: 2
|
||||||
supplier: 2
|
supplier: 2
|
||||||
SKU: 'ZERGM312'
|
SKU: 'ZERGM312'
|
||||||
|
|
||||||
# Supplier parts linked to Manufacturer parts
|
|
||||||
- model: company.supplierpart
|
|
||||||
pk: 10
|
|
||||||
fields:
|
|
||||||
part: 3
|
|
||||||
manufacturer_part: 2
|
|
||||||
supplier: 2
|
|
||||||
SKU: 'MPN456-APPEL'
|
|
||||||
|
|
||||||
- model: company.supplierpart
|
|
||||||
pk: 11
|
|
||||||
fields:
|
|
||||||
part: 3
|
|
||||||
manufacturer_part: 2
|
|
||||||
supplier: 3
|
|
||||||
SKU: 'MPN456-ZERG'
|
|
||||||
|
@ -338,7 +338,7 @@ class ManufacturerPart(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, part, manufacturer, mpn, link, description):
|
def create(cls, part, manufacturer, mpn, description, link=None):
|
||||||
""" Check if ManufacturerPart instance does not already exist
|
""" Check if ManufacturerPart instance does not already exist
|
||||||
then create it
|
then create it
|
||||||
"""
|
"""
|
||||||
@ -415,8 +415,7 @@ class SupplierPart(models.Model):
|
|||||||
manufacturer_part = ManufacturerPart.create(part=self.part,
|
manufacturer_part = ManufacturerPart.create(part=self.part,
|
||||||
manufacturer=manufacturer,
|
manufacturer=manufacturer,
|
||||||
mpn=MPN,
|
mpn=MPN,
|
||||||
description=self.description,
|
description=self.description)
|
||||||
link=self.link)
|
|
||||||
self.manufacturer_part = manufacturer_part
|
self.manufacturer_part = manufacturer_part
|
||||||
else:
|
else:
|
||||||
# Update ManufacturerPart (if ID exists)
|
# Update ManufacturerPart (if ID exists)
|
||||||
|
@ -162,6 +162,8 @@ class SupplierPartSerializer(InvenTreeModelSerializer):
|
|||||||
|
|
||||||
MPN = serializers.StringRelatedField(source='manufacturer_part.MPN')
|
MPN = serializers.StringRelatedField(source='manufacturer_part.MPN')
|
||||||
|
|
||||||
|
manufacturer_part = ManufacturerPartSerializer(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = SupplierPart
|
model = SupplierPart
|
||||||
fields = [
|
fields = [
|
||||||
@ -175,6 +177,7 @@ class SupplierPartSerializer(InvenTreeModelSerializer):
|
|||||||
'manufacturer',
|
'manufacturer',
|
||||||
'MPN',
|
'MPN',
|
||||||
'manufacturer_detail',
|
'manufacturer_detail',
|
||||||
|
'manufacturer_part',
|
||||||
'description',
|
'description',
|
||||||
'link',
|
'link',
|
||||||
]
|
]
|
||||||
@ -190,25 +193,10 @@ class SupplierPartSerializer(InvenTreeModelSerializer):
|
|||||||
MPN = self.initial_data.get('MPN', None)
|
MPN = self.initial_data.get('MPN', None)
|
||||||
|
|
||||||
if manufacturer_id or MPN:
|
if manufacturer_id or MPN:
|
||||||
# Get SupplierPart data
|
kwargs = {'manufacturer': manufacturer_id,
|
||||||
part = validated_data.get('part', None)
|
'MPN': MPN,
|
||||||
description = validated_data.get('description', None)
|
}
|
||||||
link = validated_data.get('link', None)
|
supplier_part.save(**kwargs)
|
||||||
|
|
||||||
# Get manufacturer
|
|
||||||
try:
|
|
||||||
manufacturer = Company.objects.get(pk=int(manufacturer_id))
|
|
||||||
except Company.DoesNotExist:
|
|
||||||
manufacturer = None
|
|
||||||
|
|
||||||
# Create ManufacturerPart
|
|
||||||
manufacturer_part = ManufacturerPart.create(part=part,
|
|
||||||
manufacturer=manufacturer,
|
|
||||||
mpn=MPN,
|
|
||||||
description=description,
|
|
||||||
link=link)
|
|
||||||
supplier_part.manufacturer_part = manufacturer_part
|
|
||||||
supplier_part.save()
|
|
||||||
|
|
||||||
return supplier_part
|
return supplier_part
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
"{% url 'api-manufacturer-part-list' %}",
|
"{% url 'api-manufacturer-part-list' %}",
|
||||||
{
|
{
|
||||||
params: {
|
params: {
|
||||||
part: {{ part.id }},
|
supplier_part: {{ part.id }},
|
||||||
part_detail: true,
|
part_detail: true,
|
||||||
manufacturer_detail: true,
|
manufacturer_detail: true,
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user