2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-10-24 09:57:40 +00:00

fix list serializer

This commit is contained in:
Matthias Mair
2025-10-14 21:00:31 +02:00
parent ff307e70ee
commit f30f41ef5d
6 changed files with 32 additions and 28 deletions

View File

@@ -1354,8 +1354,8 @@ class BuildLineSerializer(
'part_detail',
'build_detail',
]
read_only_fields = ['build', 'bom_item', 'allocations']
list_serializer_class = FilterableListSerializer
# Build info fields
build_reference = serializers.CharField(

View File

@@ -19,6 +19,7 @@ from InvenTree.mixins import DataImportExportSerializerMixin
from InvenTree.ready import isGeneratingSchema
from InvenTree.serializers import (
CfCharField,
FilterableListSerializer,
InvenTreeCurrencySerializer,
InvenTreeDecimalField,
InvenTreeImageSerializerField,
@@ -276,6 +277,7 @@ class ManufacturerPartSerializer(
'notes',
'tags',
]
list_serializer_class = FilterableListSerializer
tags = TagListSerializerField(required=False)
@@ -331,7 +333,10 @@ class ManufacturerPartParameterSerializer(
@register_importer()
class SupplierPartSerializer(
DataImportExportSerializerMixin, InvenTreeTagModelSerializer, NotesFieldMixin
PathScopedMixin,
DataImportExportSerializerMixin,
InvenTreeTagModelSerializer,
NotesFieldMixin,
):
"""Serializer for SupplierPart object."""
@@ -377,12 +382,12 @@ class SupplierPartSerializer(
'notes',
'tags',
]
read_only_fields = [
'availability_updated',
'barcode_hash',
'pack_quantity_native',
]
list_serializer_class = FilterableListSerializer
tags = TagListSerializerField(required=False)
@@ -547,6 +552,7 @@ class SupplierPriceBreakSerializer(
'supplier_detail',
'updated',
]
list_serializer_class = FilterableListSerializer
@staticmethod
def annotate_queryset(queryset):

View File

@@ -45,6 +45,7 @@ from InvenTree.helpers import (
)
from InvenTree.mixins import DataImportExportSerializerMixin
from InvenTree.serializers import (
FilterableListSerializer,
InvenTreeCurrencySerializer,
InvenTreeDecimalField,
InvenTreeModelSerializer,
@@ -316,7 +317,6 @@ class PurchaseOrderSerializer(
"""Metaclass options."""
model = order.models.PurchaseOrder
fields = AbstractOrderSerializer.order_fields([
'complete_date',
'supplier',
@@ -327,13 +327,12 @@ class PurchaseOrderSerializer(
'order_currency',
'destination',
])
read_only_fields = ['issue_date', 'complete_date', 'creation_date']
extra_kwargs = {
'supplier': {'required': True},
'order_currency': {'required': False},
}
list_serializer_class = FilterableListSerializer
def skip_create_fields(self):
"""Skip these fields when instantiating a new object."""
@@ -474,7 +473,6 @@ class PurchaseOrderLineItemSerializer(
"""Metaclass options."""
model = order.models.PurchaseOrderLineItem
fields = [
'pk',
'part',
@@ -504,6 +502,7 @@ class PurchaseOrderLineItemSerializer(
'internal_part',
'internal_part_name',
]
list_serializer_class = FilterableListSerializer
def skip_create_fields(self):
"""Return a list of fields to skip when creating a new object."""
@@ -711,6 +710,7 @@ class PurchaseOrderExtraLineSerializer(
"""Metaclass options."""
model = order.models.PurchaseOrderExtraLine
list_serializer_class = FilterableListSerializer
class PurchaseOrderLineItemReceiveSerializer(serializers.Serializer):
@@ -973,7 +973,6 @@ class SalesOrderSerializer(
"""Metaclass options."""
model = order.models.SalesOrder
fields = AbstractOrderSerializer.order_fields([
'customer',
'customer_detail',
@@ -984,10 +983,9 @@ class SalesOrderSerializer(
'shipments_count',
'completed_shipments_count',
])
read_only_fields = ['status', 'creation_date', 'shipment_date']
extra_kwargs = {'order_currency': {'required': False}}
list_serializer_class = FilterableListSerializer
def skip_create_fields(self):
"""Skip these fields when instantiating a new object."""
@@ -1065,7 +1063,6 @@ class SalesOrderLineItemSerializer(
"""Metaclass options."""
model = order.models.SalesOrderLineItem
fields = [
'pk',
'allocated',
@@ -1089,6 +1086,7 @@ class SalesOrderLineItemSerializer(
'building',
'on_order',
]
list_serializer_class = FilterableListSerializer
@staticmethod
def annotate_queryset(queryset):
@@ -1231,7 +1229,6 @@ class SalesOrderShipmentSerializer(
"""Metaclass options."""
model = order.models.SalesOrderShipment
fields = [
'pk',
'order',
@@ -1247,6 +1244,7 @@ class SalesOrderShipmentSerializer(
'link',
'notes',
]
list_serializer_class = FilterableListSerializer
@staticmethod
def annotate_queryset(queryset):
@@ -1280,7 +1278,6 @@ class SalesOrderAllocationSerializer(PathScopedMixin, InvenTreeModelSerializer):
"""Metaclass options."""
model = order.models.SalesOrderAllocation
fields = [
'pk',
'item',
@@ -1300,8 +1297,8 @@ class SalesOrderAllocationSerializer(PathScopedMixin, InvenTreeModelSerializer):
'location_detail',
'shipment_detail',
]
read_only_fields = ['line', '']
list_serializer_class = FilterableListSerializer
part = serializers.PrimaryKeyRelatedField(source='item.part', read_only=True)
order = serializers.PrimaryKeyRelatedField(
@@ -1817,7 +1814,6 @@ class ReturnOrderSerializer(
"""Metaclass options."""
model = order.models.ReturnOrder
fields = AbstractOrderSerializer.order_fields([
'complete_date',
'customer',
@@ -1826,8 +1822,8 @@ class ReturnOrderSerializer(
'order_currency',
'total_price',
])
read_only_fields = ['creation_date']
list_serializer_class = FilterableListSerializer
def skip_create_fields(self):
"""Skip these fields when instantiating a new object."""
@@ -2008,7 +2004,6 @@ class ReturnOrderLineItemSerializer(
"""Metaclass options."""
model = order.models.ReturnOrderLineItem
fields = [
'pk',
'order',
@@ -2027,6 +2022,7 @@ class ReturnOrderLineItemSerializer(
'target_date',
'link',
]
list_serializer_class = FilterableListSerializer
order_detail = can_filter(
ReturnOrderSerializer(
@@ -2064,6 +2060,7 @@ class ReturnOrderExtraLineSerializer(
"""Metaclass options."""
model = order.models.ReturnOrderExtraLine
list_serializer_class = FilterableListSerializer
order_detail = can_filter(
ReturnOrderSerializer(

View File

@@ -92,6 +92,7 @@ class CategorySerializer(
'parent_default_location',
]
read_only_fields = ['level', 'pathstring']
list_serializer_class = FilterableListSerializer
@staticmethod
def annotate_queryset(queryset):
@@ -351,8 +352,8 @@ class PartBriefSerializer(
'pricing_min',
'pricing_max',
]
read_only_fields = ['barcode_hash']
list_serializer_class = FilterableListSerializer
category_default_location = serializers.IntegerField(
read_only=True, allow_null=True
@@ -718,7 +719,7 @@ class PartSerializer(
'tags',
]
read_only_fields = ['barcode_hash', 'creation_date', 'creation_user']
# list_serializer_class = FilterableListSerializer
list_serializer_class = FilterableListSerializer
tags = TagListSerializerField(required=False)

View File

@@ -385,11 +385,6 @@ class StockItemSerializer(
'part_detail',
'location_detail',
]
"""
These fields are read-only in this context.
They can be updated by accessing the appropriate API endpoints
"""
read_only_fields = [
'allocated',
'barcode_hash',
@@ -397,14 +392,18 @@ class StockItemSerializer(
'stocktake_user',
'updated',
]
"""
Fields used when creating a stock item
These fields are read-only in this context.
They can be updated by accessing the appropriate API endpoints
"""
extra_kwargs = {
'use_pack_size': {'write_only': True},
'serial_numbers': {'write_only': True},
}
"""
Fields used when creating a stock item
"""
list_serializer_class = FilterableListSerializer
part = serializers.PrimaryKeyRelatedField(
queryset=part_models.Part.objects.all(),
@@ -1160,8 +1159,8 @@ class LocationSerializer(
'location_type_detail',
'tags',
]
read_only_fields = ['barcode_hash', 'icon', 'level', 'pathstring']
list_serializer_class = FilterableListSerializer
@staticmethod
def annotate_queryset(queryset):
@@ -1237,8 +1236,8 @@ class StockTrackingSerializer(
'user',
'user_detail',
]
read_only_fields = ['date', 'user', 'label', 'tracking_type']
list_serializer_class = FilterableListSerializer
label = serializers.CharField(read_only=True)

View File

@@ -247,6 +247,7 @@ class GroupSerializer(PathScopedMixin, InvenTreeModelSerializer):
model = Group
fields = ['pk', 'name', 'permissions', 'roles', 'users']
list_serializer_class = FilterableListSerializer
permissions = can_filter(
CfSerializerMethodField(allow_null=True, read_only=True),