2
0
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:
eeintech 2021-04-02 11:13:57 -04:00
parent bb69e38c1a
commit 45ca8d0e93
6 changed files with 34 additions and 40 deletions

View File

@ -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)

View File

@ -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'

View File

@ -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'

View File

@ -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)

View File

@ -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

View File

@ -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,
}, },