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