mirror of
https://github.com/inventree/InvenTree.git
synced 2025-10-24 09:57:40 +00:00
make application of PathScopedMixin more intentional -> more efficient
This commit is contained in:
@@ -45,12 +45,12 @@ class OptFilter:
|
|||||||
self.is_filterable_vals = kwargs.pop('is_filterable_vals', {})
|
self.is_filterable_vals = kwargs.pop('is_filterable_vals', {})
|
||||||
|
|
||||||
# remove filter args from kwargs
|
# remove filter args from kwargs
|
||||||
kwargs = PathScopedMixin.gather_filters(self, kwargs)
|
# TODO remove: kwargs = PathScopedMixin.gather_filters(self, kwargs)
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
PathScopedMixin.do_filtering(self, *args, **kwargs)
|
# TODO remove: PathScopedMixin.do_filtering(self, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class PathScopedMixin(serializers.Serializer):
|
class PathScopedMixin:
|
||||||
"""Mixin to disable a serializer field based on kwargs passed to the view."""
|
"""Mixin to disable a serializer field based on kwargs passed to the view."""
|
||||||
|
|
||||||
_was_filtered = False
|
_was_filtered = False
|
||||||
@@ -86,6 +86,10 @@ class PathScopedMixin(serializers.Serializer):
|
|||||||
tgs_vals[k] = str2bool(val) if isinstance(val, str) else val
|
tgs_vals[k] = str2bool(val) if isinstance(val, str) else val
|
||||||
self.filter_target_values = tgs_vals
|
self.filter_target_values = tgs_vals
|
||||||
|
|
||||||
|
# TODO remove
|
||||||
|
if len(self.filter_targets) == 0:
|
||||||
|
raise ValueError('No filter targets found')
|
||||||
|
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
def do_filtering(self, *args, **kwargs):
|
def do_filtering(self, *args, **kwargs):
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ from InvenTree.serializers import (
|
|||||||
InvenTreeDecimalField,
|
InvenTreeDecimalField,
|
||||||
InvenTreeModelSerializer,
|
InvenTreeModelSerializer,
|
||||||
NotesFieldMixin,
|
NotesFieldMixin,
|
||||||
|
PathScopedMixin,
|
||||||
can_filter,
|
can_filter,
|
||||||
)
|
)
|
||||||
from stock.generators import generate_batch_code
|
from stock.generators import generate_batch_code
|
||||||
@@ -55,6 +56,7 @@ from .status_codes import BuildStatus
|
|||||||
|
|
||||||
|
|
||||||
class BuildSerializer(
|
class BuildSerializer(
|
||||||
|
PathScopedMixin,
|
||||||
NotesFieldMixin,
|
NotesFieldMixin,
|
||||||
DataImportExportSerializerMixin,
|
DataImportExportSerializerMixin,
|
||||||
InvenTreeCustomStatusSerializerMixin,
|
InvenTreeCustomStatusSerializerMixin,
|
||||||
@@ -1156,7 +1158,9 @@ class BuildAutoAllocationSerializer(serializers.Serializer):
|
|||||||
raise ValidationError(_('Failed to start auto-allocation task'))
|
raise ValidationError(_('Failed to start auto-allocation task'))
|
||||||
|
|
||||||
|
|
||||||
class BuildItemSerializer(DataImportExportSerializerMixin, InvenTreeModelSerializer):
|
class BuildItemSerializer(
|
||||||
|
PathScopedMixin, DataImportExportSerializerMixin, InvenTreeModelSerializer
|
||||||
|
):
|
||||||
"""Serializes a BuildItem object, which is an allocation of a stock item against a build order."""
|
"""Serializes a BuildItem object, which is an allocation of a stock item against a build order."""
|
||||||
|
|
||||||
export_child_fields = [
|
export_child_fields = [
|
||||||
@@ -1291,7 +1295,9 @@ class BuildItemSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
|
|||||||
quantity = InvenTreeDecimalField(label=_('Allocated Quantity'))
|
quantity = InvenTreeDecimalField(label=_('Allocated Quantity'))
|
||||||
|
|
||||||
|
|
||||||
class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSerializer):
|
class BuildLineSerializer(
|
||||||
|
PathScopedMixin, DataImportExportSerializerMixin, InvenTreeModelSerializer
|
||||||
|
):
|
||||||
"""Serializer for a BuildItem object."""
|
"""Serializer for a BuildItem object."""
|
||||||
|
|
||||||
export_exclude_fields = ['allocations']
|
export_exclude_fields = ['allocations']
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ from InvenTree.serializers import (
|
|||||||
InvenTreeMoneySerializer,
|
InvenTreeMoneySerializer,
|
||||||
InvenTreeTagModelSerializer,
|
InvenTreeTagModelSerializer,
|
||||||
NotesFieldMixin,
|
NotesFieldMixin,
|
||||||
|
PathScopedMixin,
|
||||||
RemoteImageMixin,
|
RemoteImageMixin,
|
||||||
can_filter,
|
can_filter,
|
||||||
)
|
)
|
||||||
@@ -250,7 +251,10 @@ class ContactSerializer(DataImportExportSerializerMixin, InvenTreeModelSerialize
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class ManufacturerPartSerializer(
|
class ManufacturerPartSerializer(
|
||||||
DataImportExportSerializerMixin, InvenTreeTagModelSerializer, NotesFieldMixin
|
PathScopedMixin,
|
||||||
|
DataImportExportSerializerMixin,
|
||||||
|
InvenTreeTagModelSerializer,
|
||||||
|
NotesFieldMixin,
|
||||||
):
|
):
|
||||||
"""Serializer for ManufacturerPart object."""
|
"""Serializer for ManufacturerPart object."""
|
||||||
|
|
||||||
@@ -300,7 +304,7 @@ class ManufacturerPartSerializer(
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class ManufacturerPartParameterSerializer(
|
class ManufacturerPartParameterSerializer(
|
||||||
DataImportExportSerializerMixin, InvenTreeModelSerializer
|
PathScopedMixin, DataImportExportSerializerMixin, InvenTreeModelSerializer
|
||||||
):
|
):
|
||||||
"""Serializer for the ManufacturerPartParameter model."""
|
"""Serializer for the ManufacturerPartParameter model."""
|
||||||
|
|
||||||
@@ -524,7 +528,7 @@ class SupplierPartSerializer(
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class SupplierPriceBreakSerializer(
|
class SupplierPriceBreakSerializer(
|
||||||
DataImportExportSerializerMixin, InvenTreeModelSerializer
|
PathScopedMixin, DataImportExportSerializerMixin, InvenTreeModelSerializer
|
||||||
):
|
):
|
||||||
"""Serializer for SupplierPriceBreak object."""
|
"""Serializer for SupplierPriceBreak object."""
|
||||||
|
|
||||||
|
|||||||
@@ -303,6 +303,7 @@ class AbstractExtraLineMeta:
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class PurchaseOrderSerializer(
|
class PurchaseOrderSerializer(
|
||||||
|
PathScopedMixin,
|
||||||
NotesFieldMixin,
|
NotesFieldMixin,
|
||||||
TotalPriceMixin,
|
TotalPriceMixin,
|
||||||
InvenTreeCustomStatusSerializerMixin,
|
InvenTreeCustomStatusSerializerMixin,
|
||||||
@@ -462,6 +463,7 @@ class PurchaseOrderIssueSerializer(OrderAdjustSerializer):
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class PurchaseOrderLineItemSerializer(
|
class PurchaseOrderLineItemSerializer(
|
||||||
|
PathScopedMixin,
|
||||||
DataImportExportSerializerMixin,
|
DataImportExportSerializerMixin,
|
||||||
AbstractLineItemSerializer,
|
AbstractLineItemSerializer,
|
||||||
InvenTreeModelSerializer,
|
InvenTreeModelSerializer,
|
||||||
@@ -695,7 +697,7 @@ class PurchaseOrderLineItemSerializer(
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class PurchaseOrderExtraLineSerializer(
|
class PurchaseOrderExtraLineSerializer(
|
||||||
AbstractExtraLineSerializer, InvenTreeModelSerializer
|
PathScopedMixin, AbstractExtraLineSerializer, InvenTreeModelSerializer
|
||||||
):
|
):
|
||||||
"""Serializer for a PurchaseOrderExtraLine object."""
|
"""Serializer for a PurchaseOrderExtraLine object."""
|
||||||
|
|
||||||
@@ -958,6 +960,7 @@ class PurchaseOrderReceiveSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class SalesOrderSerializer(
|
class SalesOrderSerializer(
|
||||||
|
PathScopedMixin,
|
||||||
NotesFieldMixin,
|
NotesFieldMixin,
|
||||||
TotalPriceMixin,
|
TotalPriceMixin,
|
||||||
InvenTreeCustomStatusSerializerMixin,
|
InvenTreeCustomStatusSerializerMixin,
|
||||||
@@ -1051,9 +1054,9 @@ class SalesOrderIssueSerializer(OrderAdjustSerializer):
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class SalesOrderLineItemSerializer(
|
class SalesOrderLineItemSerializer(
|
||||||
|
PathScopedMixin,
|
||||||
DataImportExportSerializerMixin,
|
DataImportExportSerializerMixin,
|
||||||
AbstractLineItemSerializer,
|
AbstractLineItemSerializer,
|
||||||
PathScopedMixin,
|
|
||||||
InvenTreeModelSerializer,
|
InvenTreeModelSerializer,
|
||||||
):
|
):
|
||||||
"""Serializer for a SalesOrderLineItem object."""
|
"""Serializer for a SalesOrderLineItem object."""
|
||||||
@@ -1219,7 +1222,9 @@ class SalesOrderLineItemSerializer(
|
|||||||
|
|
||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class SalesOrderShipmentSerializer(NotesFieldMixin, InvenTreeModelSerializer):
|
class SalesOrderShipmentSerializer(
|
||||||
|
PathScopedMixin, NotesFieldMixin, InvenTreeModelSerializer
|
||||||
|
):
|
||||||
"""Serializer for the SalesOrderShipment class."""
|
"""Serializer for the SalesOrderShipment class."""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -1265,7 +1270,7 @@ class SalesOrderShipmentSerializer(NotesFieldMixin, InvenTreeModelSerializer):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class SalesOrderAllocationSerializer(InvenTreeModelSerializer):
|
class SalesOrderAllocationSerializer(PathScopedMixin, InvenTreeModelSerializer):
|
||||||
"""Serializer for the SalesOrderAllocation model.
|
"""Serializer for the SalesOrderAllocation model.
|
||||||
|
|
||||||
This includes some fields from the related model objects.
|
This includes some fields from the related model objects.
|
||||||
@@ -1781,7 +1786,7 @@ class SalesOrderShipmentAllocationSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class SalesOrderExtraLineSerializer(
|
class SalesOrderExtraLineSerializer(
|
||||||
AbstractExtraLineSerializer, InvenTreeModelSerializer
|
PathScopedMixin, AbstractExtraLineSerializer, InvenTreeModelSerializer
|
||||||
):
|
):
|
||||||
"""Serializer for a SalesOrderExtraLine object."""
|
"""Serializer for a SalesOrderExtraLine object."""
|
||||||
|
|
||||||
@@ -1799,6 +1804,7 @@ class SalesOrderExtraLineSerializer(
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class ReturnOrderSerializer(
|
class ReturnOrderSerializer(
|
||||||
|
PathScopedMixin,
|
||||||
NotesFieldMixin,
|
NotesFieldMixin,
|
||||||
InvenTreeCustomStatusSerializerMixin,
|
InvenTreeCustomStatusSerializerMixin,
|
||||||
AbstractOrderSerializer,
|
AbstractOrderSerializer,
|
||||||
@@ -1991,6 +1997,7 @@ class ReturnOrderReceiveSerializer(serializers.Serializer):
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class ReturnOrderLineItemSerializer(
|
class ReturnOrderLineItemSerializer(
|
||||||
|
PathScopedMixin,
|
||||||
DataImportExportSerializerMixin,
|
DataImportExportSerializerMixin,
|
||||||
AbstractLineItemSerializer,
|
AbstractLineItemSerializer,
|
||||||
InvenTreeModelSerializer,
|
InvenTreeModelSerializer,
|
||||||
@@ -2049,7 +2056,7 @@ class ReturnOrderLineItemSerializer(
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class ReturnOrderExtraLineSerializer(
|
class ReturnOrderExtraLineSerializer(
|
||||||
AbstractExtraLineSerializer, InvenTreeModelSerializer
|
PathScopedMixin, AbstractExtraLineSerializer, InvenTreeModelSerializer
|
||||||
):
|
):
|
||||||
"""Serializer for a ReturnOrderExtraLine object."""
|
"""Serializer for a ReturnOrderExtraLine object."""
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ from InvenTree.serializers import (
|
|||||||
CfFloatField,
|
CfFloatField,
|
||||||
CfListField,
|
CfListField,
|
||||||
FilterableListSerializer,
|
FilterableListSerializer,
|
||||||
|
PathScopedMixin,
|
||||||
can_filter,
|
can_filter,
|
||||||
)
|
)
|
||||||
from users.serializers import UserSerializer
|
from users.serializers import UserSerializer
|
||||||
@@ -63,7 +64,9 @@ logger = structlog.get_logger('inventree')
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class CategorySerializer(
|
class CategorySerializer(
|
||||||
DataImportExportSerializerMixin, InvenTree.serializers.InvenTreeModelSerializer
|
PathScopedMixin,
|
||||||
|
DataImportExportSerializerMixin,
|
||||||
|
InvenTree.serializers.InvenTreeModelSerializer,
|
||||||
):
|
):
|
||||||
"""Serializer for PartCategory."""
|
"""Serializer for PartCategory."""
|
||||||
|
|
||||||
@@ -311,7 +314,9 @@ class PartParameterTemplateSerializer(
|
|||||||
return queryset.annotate(parts=SubqueryCount('instances'))
|
return queryset.annotate(parts=SubqueryCount('instances'))
|
||||||
|
|
||||||
|
|
||||||
class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer):
|
class PartBriefSerializer(
|
||||||
|
PathScopedMixin, InvenTree.serializers.InvenTreeModelSerializer
|
||||||
|
):
|
||||||
"""Serializer for Part (brief detail)."""
|
"""Serializer for Part (brief detail)."""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -388,7 +393,9 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer):
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class PartParameterSerializer(
|
class PartParameterSerializer(
|
||||||
DataImportExportSerializerMixin, InvenTree.serializers.InvenTreeModelSerializer
|
PathScopedMixin,
|
||||||
|
DataImportExportSerializerMixin,
|
||||||
|
InvenTree.serializers.InvenTreeModelSerializer,
|
||||||
):
|
):
|
||||||
"""JSON serializers for the PartParameter model."""
|
"""JSON serializers for the PartParameter model."""
|
||||||
|
|
||||||
@@ -622,7 +629,7 @@ class DefaultLocationSerializer(InvenTree.serializers.InvenTreeModelSerializer):
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class PartSerializer(
|
class PartSerializer(
|
||||||
InvenTree.serializers.PathScopedMixin,
|
PathScopedMixin,
|
||||||
DataImportExportSerializerMixin,
|
DataImportExportSerializerMixin,
|
||||||
InvenTree.serializers.NotesFieldMixin,
|
InvenTree.serializers.NotesFieldMixin,
|
||||||
InvenTree.serializers.RemoteImageMixin,
|
InvenTree.serializers.RemoteImageMixin,
|
||||||
@@ -1611,7 +1618,9 @@ class BomItemSubstituteSerializer(InvenTree.serializers.InvenTreeModelSerializer
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class BomItemSerializer(
|
class BomItemSerializer(
|
||||||
DataImportExportSerializerMixin, InvenTree.serializers.InvenTreeModelSerializer
|
PathScopedMixin,
|
||||||
|
DataImportExportSerializerMixin,
|
||||||
|
InvenTree.serializers.InvenTreeModelSerializer,
|
||||||
):
|
):
|
||||||
"""Serializer for BomItem object."""
|
"""Serializer for BomItem object."""
|
||||||
|
|
||||||
|
|||||||
@@ -197,7 +197,9 @@ class LocationBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer):
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class StockItemTestResultSerializer(
|
class StockItemTestResultSerializer(
|
||||||
DataImportExportSerializerMixin, InvenTree.serializers.InvenTreeModelSerializer
|
PathScopedMixin,
|
||||||
|
DataImportExportSerializerMixin,
|
||||||
|
InvenTree.serializers.InvenTreeModelSerializer,
|
||||||
):
|
):
|
||||||
"""Serializer for the StockItemTestResult model."""
|
"""Serializer for the StockItemTestResult model."""
|
||||||
|
|
||||||
@@ -299,6 +301,7 @@ class StockItemTestResultSerializer(
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class StockItemSerializer(
|
class StockItemSerializer(
|
||||||
|
PathScopedMixin,
|
||||||
DataImportExportSerializerMixin,
|
DataImportExportSerializerMixin,
|
||||||
InvenTreeCustomStatusSerializerMixin,
|
InvenTreeCustomStatusSerializerMixin,
|
||||||
InvenTree.serializers.InvenTreeTagModelSerializer,
|
InvenTree.serializers.InvenTreeTagModelSerializer,
|
||||||
@@ -1125,7 +1128,9 @@ class LocationTreeSerializer(InvenTree.serializers.InvenTreeModelSerializer):
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class LocationSerializer(
|
class LocationSerializer(
|
||||||
DataImportExportSerializerMixin, InvenTree.serializers.InvenTreeTagModelSerializer
|
PathScopedMixin,
|
||||||
|
DataImportExportSerializerMixin,
|
||||||
|
InvenTree.serializers.InvenTreeTagModelSerializer,
|
||||||
):
|
):
|
||||||
"""Detailed information about a stock location."""
|
"""Detailed information about a stock location."""
|
||||||
|
|
||||||
@@ -1210,8 +1215,8 @@ class LocationSerializer(
|
|||||||
|
|
||||||
@register_importer()
|
@register_importer()
|
||||||
class StockTrackingSerializer(
|
class StockTrackingSerializer(
|
||||||
DataImportExportSerializerMixin,
|
|
||||||
PathScopedMixin,
|
PathScopedMixin,
|
||||||
|
DataImportExportSerializerMixin,
|
||||||
InvenTree.serializers.InvenTreeModelSerializer,
|
InvenTree.serializers.InvenTreeModelSerializer,
|
||||||
):
|
):
|
||||||
"""Serializer for StockItemTracking model."""
|
"""Serializer for StockItemTracking model."""
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ from InvenTree.serializers import (
|
|||||||
CfSerializerMethodField,
|
CfSerializerMethodField,
|
||||||
FilterableListSerializer,
|
FilterableListSerializer,
|
||||||
InvenTreeModelSerializer,
|
InvenTreeModelSerializer,
|
||||||
|
PathScopedMixin,
|
||||||
can_filter,
|
can_filter,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -238,7 +239,7 @@ class ApiTokenSerializer(InvenTreeModelSerializer):
|
|||||||
user_detail = UserSerializer(source='user', read_only=True)
|
user_detail = UserSerializer(source='user', read_only=True)
|
||||||
|
|
||||||
|
|
||||||
class GroupSerializer(InvenTreeModelSerializer):
|
class GroupSerializer(PathScopedMixin, InvenTreeModelSerializer):
|
||||||
"""Serializer for a 'Group'."""
|
"""Serializer for a 'Group'."""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
Reference in New Issue
Block a user