mirror of
https://github.com/inventree/InvenTree.git
synced 2025-10-24 18:07:38 +00:00
remove new duplication
This commit is contained in:
@@ -53,6 +53,12 @@ class PathScopedMixin:
|
|||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
"""Initialization routine for the serializer."""
|
"""Initialization routine for the serializer."""
|
||||||
|
# add list_serializer_class to meta if not present
|
||||||
|
if not isinstance(self, FilterableListSerializer) and (
|
||||||
|
not hasattr(self.Meta, 'list_serializer_class')
|
||||||
|
):
|
||||||
|
self.Meta.list_serializer_class = FilterableListSerializer
|
||||||
|
|
||||||
self.gather_filters(kwargs)
|
self.gather_filters(kwargs)
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.do_filtering(*args, **kwargs)
|
self.do_filtering(*args, **kwargs)
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ from InvenTree.mixins import DataImportExportSerializerMixin
|
|||||||
from InvenTree.serializers import (
|
from InvenTree.serializers import (
|
||||||
CfCharField,
|
CfCharField,
|
||||||
CfIntegerField,
|
CfIntegerField,
|
||||||
FilterableListSerializer,
|
|
||||||
InvenTreeDecimalField,
|
InvenTreeDecimalField,
|
||||||
InvenTreeModelSerializer,
|
InvenTreeModelSerializer,
|
||||||
NotesFieldMixin,
|
NotesFieldMixin,
|
||||||
@@ -112,7 +111,6 @@ class BuildSerializer(
|
|||||||
'status_text',
|
'status_text',
|
||||||
'level',
|
'level',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
reference = serializers.CharField(required=True)
|
reference = serializers.CharField(required=True)
|
||||||
|
|
||||||
@@ -1204,7 +1202,6 @@ class BuildItemSerializer(
|
|||||||
'bom_part_id',
|
'bom_part_id',
|
||||||
'bom_part_name',
|
'bom_part_name',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
# Export-only fields
|
# Export-only fields
|
||||||
bom_reference = serializers.CharField(
|
bom_reference = serializers.CharField(
|
||||||
@@ -1355,7 +1352,6 @@ class BuildLineSerializer(
|
|||||||
'build_detail',
|
'build_detail',
|
||||||
]
|
]
|
||||||
read_only_fields = ['build', 'bom_item', 'allocations']
|
read_only_fields = ['build', 'bom_item', 'allocations']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
# Build info fields
|
# Build info fields
|
||||||
build_reference = serializers.CharField(
|
build_reference = serializers.CharField(
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ from InvenTree.mixins import DataImportExportSerializerMixin
|
|||||||
from InvenTree.ready import isGeneratingSchema
|
from InvenTree.ready import isGeneratingSchema
|
||||||
from InvenTree.serializers import (
|
from InvenTree.serializers import (
|
||||||
CfCharField,
|
CfCharField,
|
||||||
FilterableListSerializer,
|
|
||||||
InvenTreeCurrencySerializer,
|
InvenTreeCurrencySerializer,
|
||||||
InvenTreeDecimalField,
|
InvenTreeDecimalField,
|
||||||
InvenTreeImageSerializerField,
|
InvenTreeImageSerializerField,
|
||||||
@@ -277,7 +276,6 @@ class ManufacturerPartSerializer(
|
|||||||
'notes',
|
'notes',
|
||||||
'tags',
|
'tags',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
tags = TagListSerializerField(required=False)
|
tags = TagListSerializerField(required=False)
|
||||||
|
|
||||||
@@ -389,7 +387,6 @@ class SupplierPartSerializer(
|
|||||||
'barcode_hash',
|
'barcode_hash',
|
||||||
'pack_quantity_native',
|
'pack_quantity_native',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
tags = TagListSerializerField(required=False)
|
tags = TagListSerializerField(required=False)
|
||||||
|
|
||||||
@@ -554,7 +551,6 @@ class SupplierPriceBreakSerializer(
|
|||||||
'supplier_detail',
|
'supplier_detail',
|
||||||
'updated',
|
'updated',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def annotate_queryset(queryset):
|
def annotate_queryset(queryset):
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ from InvenTree.helpers import (
|
|||||||
)
|
)
|
||||||
from InvenTree.mixins import DataImportExportSerializerMixin
|
from InvenTree.mixins import DataImportExportSerializerMixin
|
||||||
from InvenTree.serializers import (
|
from InvenTree.serializers import (
|
||||||
FilterableListSerializer,
|
|
||||||
InvenTreeCurrencySerializer,
|
InvenTreeCurrencySerializer,
|
||||||
InvenTreeDecimalField,
|
InvenTreeDecimalField,
|
||||||
InvenTreeModelSerializer,
|
InvenTreeModelSerializer,
|
||||||
@@ -332,7 +331,6 @@ class PurchaseOrderSerializer(
|
|||||||
'supplier': {'required': True},
|
'supplier': {'required': True},
|
||||||
'order_currency': {'required': False},
|
'order_currency': {'required': False},
|
||||||
}
|
}
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
def skip_create_fields(self):
|
def skip_create_fields(self):
|
||||||
"""Skip these fields when instantiating a new object."""
|
"""Skip these fields when instantiating a new object."""
|
||||||
@@ -502,7 +500,6 @@ class PurchaseOrderLineItemSerializer(
|
|||||||
'internal_part',
|
'internal_part',
|
||||||
'internal_part_name',
|
'internal_part_name',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
def skip_create_fields(self):
|
def skip_create_fields(self):
|
||||||
"""Return a list of fields to skip when creating a new object."""
|
"""Return a list of fields to skip when creating a new object."""
|
||||||
@@ -710,7 +707,6 @@ class PurchaseOrderExtraLineSerializer(
|
|||||||
"""Metaclass options."""
|
"""Metaclass options."""
|
||||||
|
|
||||||
model = order.models.PurchaseOrderExtraLine
|
model = order.models.PurchaseOrderExtraLine
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
|
|
||||||
class PurchaseOrderLineItemReceiveSerializer(serializers.Serializer):
|
class PurchaseOrderLineItemReceiveSerializer(serializers.Serializer):
|
||||||
@@ -985,7 +981,6 @@ class SalesOrderSerializer(
|
|||||||
])
|
])
|
||||||
read_only_fields = ['status', 'creation_date', 'shipment_date']
|
read_only_fields = ['status', 'creation_date', 'shipment_date']
|
||||||
extra_kwargs = {'order_currency': {'required': False}}
|
extra_kwargs = {'order_currency': {'required': False}}
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
def skip_create_fields(self):
|
def skip_create_fields(self):
|
||||||
"""Skip these fields when instantiating a new object."""
|
"""Skip these fields when instantiating a new object."""
|
||||||
@@ -1086,7 +1081,6 @@ class SalesOrderLineItemSerializer(
|
|||||||
'building',
|
'building',
|
||||||
'on_order',
|
'on_order',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def annotate_queryset(queryset):
|
def annotate_queryset(queryset):
|
||||||
@@ -1244,7 +1238,6 @@ class SalesOrderShipmentSerializer(
|
|||||||
'link',
|
'link',
|
||||||
'notes',
|
'notes',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def annotate_queryset(queryset):
|
def annotate_queryset(queryset):
|
||||||
@@ -1298,7 +1291,6 @@ class SalesOrderAllocationSerializer(PathScopedMixin, InvenTreeModelSerializer):
|
|||||||
'shipment_detail',
|
'shipment_detail',
|
||||||
]
|
]
|
||||||
read_only_fields = ['line', '']
|
read_only_fields = ['line', '']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
part = serializers.PrimaryKeyRelatedField(source='item.part', read_only=True)
|
part = serializers.PrimaryKeyRelatedField(source='item.part', read_only=True)
|
||||||
order = serializers.PrimaryKeyRelatedField(
|
order = serializers.PrimaryKeyRelatedField(
|
||||||
@@ -1823,7 +1815,6 @@ class ReturnOrderSerializer(
|
|||||||
'total_price',
|
'total_price',
|
||||||
])
|
])
|
||||||
read_only_fields = ['creation_date']
|
read_only_fields = ['creation_date']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
def skip_create_fields(self):
|
def skip_create_fields(self):
|
||||||
"""Skip these fields when instantiating a new object."""
|
"""Skip these fields when instantiating a new object."""
|
||||||
@@ -2022,7 +2013,6 @@ class ReturnOrderLineItemSerializer(
|
|||||||
'target_date',
|
'target_date',
|
||||||
'link',
|
'link',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
order_detail = can_filter(
|
order_detail = can_filter(
|
||||||
ReturnOrderSerializer(
|
ReturnOrderSerializer(
|
||||||
@@ -2060,7 +2050,6 @@ class ReturnOrderExtraLineSerializer(
|
|||||||
"""Metaclass options."""
|
"""Metaclass options."""
|
||||||
|
|
||||||
model = order.models.ReturnOrderExtraLine
|
model = order.models.ReturnOrderExtraLine
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
order_detail = can_filter(
|
order_detail = can_filter(
|
||||||
ReturnOrderSerializer(
|
ReturnOrderSerializer(
|
||||||
|
|||||||
@@ -92,7 +92,6 @@ class CategorySerializer(
|
|||||||
'parent_default_location',
|
'parent_default_location',
|
||||||
]
|
]
|
||||||
read_only_fields = ['level', 'pathstring']
|
read_only_fields = ['level', 'pathstring']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def annotate_queryset(queryset):
|
def annotate_queryset(queryset):
|
||||||
@@ -353,7 +352,6 @@ class PartBriefSerializer(
|
|||||||
'pricing_max',
|
'pricing_max',
|
||||||
]
|
]
|
||||||
read_only_fields = ['barcode_hash']
|
read_only_fields = ['barcode_hash']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
category_default_location = serializers.IntegerField(
|
category_default_location = serializers.IntegerField(
|
||||||
read_only=True, allow_null=True
|
read_only=True, allow_null=True
|
||||||
@@ -418,7 +416,6 @@ class PartParameterSerializer(
|
|||||||
'updated_by_detail',
|
'updated_by_detail',
|
||||||
]
|
]
|
||||||
read_only_fields = ['updated', 'updated_by']
|
read_only_fields = ['updated', 'updated_by']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
"""Save the PartParameter instance."""
|
"""Save the PartParameter instance."""
|
||||||
@@ -719,7 +716,6 @@ class PartSerializer(
|
|||||||
'tags',
|
'tags',
|
||||||
]
|
]
|
||||||
read_only_fields = ['barcode_hash', 'creation_date', 'creation_user']
|
read_only_fields = ['barcode_hash', 'creation_date', 'creation_user']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
tags = TagListSerializerField(required=False)
|
tags = TagListSerializerField(required=False)
|
||||||
|
|
||||||
@@ -1674,7 +1670,6 @@ class BomItemSerializer(
|
|||||||
# Annotate the total potential quantity we can build
|
# Annotate the total potential quantity we can build
|
||||||
'can_build',
|
'can_build',
|
||||||
]
|
]
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
quantity = InvenTree.serializers.InvenTreeDecimalField(required=True)
|
quantity = InvenTree.serializers.InvenTreeDecimalField(required=True)
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ from importer.registry import register_importer
|
|||||||
from InvenTree.mixins import DataImportExportSerializerMixin
|
from InvenTree.mixins import DataImportExportSerializerMixin
|
||||||
from InvenTree.serializers import (
|
from InvenTree.serializers import (
|
||||||
CfListField,
|
CfListField,
|
||||||
FilterableListSerializer,
|
|
||||||
InvenTreeCurrencySerializer,
|
InvenTreeCurrencySerializer,
|
||||||
InvenTreeDecimalField,
|
InvenTreeDecimalField,
|
||||||
InvenTreeModelSerializer,
|
InvenTreeModelSerializer,
|
||||||
@@ -224,7 +223,6 @@ class StockItemTestResultSerializer(
|
|||||||
'template_detail',
|
'template_detail',
|
||||||
]
|
]
|
||||||
read_only_fields = ['pk', 'user', 'date']
|
read_only_fields = ['pk', 'user', 'date']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
user_detail = can_filter(
|
user_detail = can_filter(
|
||||||
UserSerializer(source='user', read_only=True, allow_null=True)
|
UserSerializer(source='user', read_only=True, allow_null=True)
|
||||||
@@ -403,7 +401,6 @@ class StockItemSerializer(
|
|||||||
"""
|
"""
|
||||||
Fields used when creating a stock item
|
Fields used when creating a stock item
|
||||||
"""
|
"""
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
part = serializers.PrimaryKeyRelatedField(
|
part = serializers.PrimaryKeyRelatedField(
|
||||||
queryset=part_models.Part.objects.all(),
|
queryset=part_models.Part.objects.all(),
|
||||||
@@ -1160,7 +1157,6 @@ class LocationSerializer(
|
|||||||
'tags',
|
'tags',
|
||||||
]
|
]
|
||||||
read_only_fields = ['barcode_hash', 'icon', 'level', 'pathstring']
|
read_only_fields = ['barcode_hash', 'icon', 'level', 'pathstring']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def annotate_queryset(queryset):
|
def annotate_queryset(queryset):
|
||||||
@@ -1237,7 +1233,6 @@ class StockTrackingSerializer(
|
|||||||
'user_detail',
|
'user_detail',
|
||||||
]
|
]
|
||||||
read_only_fields = ['date', 'user', 'label', 'tracking_type']
|
read_only_fields = ['date', 'user', 'label', 'tracking_type']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
label = serializers.CharField(read_only=True)
|
label = serializers.CharField(read_only=True)
|
||||||
|
|
||||||
|
|||||||
@@ -247,7 +247,6 @@ class GroupSerializer(PathScopedMixin, InvenTreeModelSerializer):
|
|||||||
|
|
||||||
model = Group
|
model = Group
|
||||||
fields = ['pk', 'name', 'permissions', 'roles', 'users']
|
fields = ['pk', 'name', 'permissions', 'roles', 'users']
|
||||||
list_serializer_class = FilterableListSerializer
|
|
||||||
|
|
||||||
permissions = can_filter(
|
permissions = can_filter(
|
||||||
CfSerializerMethodField(allow_null=True, read_only=True),
|
CfSerializerMethodField(allow_null=True, read_only=True),
|
||||||
|
|||||||
Reference in New Issue
Block a user