From 096b6aeaa72f426ec0ecad6e7e52ed318e88c8e8 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Wed, 15 Mar 2023 22:22:50 +1100 Subject: [PATCH] Add serializer for the ReturnOrderReport model - A little bit of refactoring along the way --- InvenTree/report/serializers.py | 94 ++++++++++++++------------------- 1 file changed, 39 insertions(+), 55 deletions(-) diff --git a/InvenTree/report/serializers.py b/InvenTree/report/serializers.py index 155da6e7cc..330279834f 100644 --- a/InvenTree/report/serializers.py +++ b/InvenTree/report/serializers.py @@ -4,99 +4,83 @@ from InvenTree.serializers import (InvenTreeAttachmentSerializerField, InvenTreeModelSerializer) from .models import (BillOfMaterialsReport, BuildReport, PurchaseOrderReport, - SalesOrderReport, TestReport) + ReturnOrderReport, SalesOrderReport, TestReport) -class TestReportSerializer(InvenTreeModelSerializer): +class ReportSerializerBase(InvenTreeModelSerializer): + """Base class for report serializer""" + + template = InvenTreeAttachmentSerializerField(required=True) + + @staticmethod + def report_fields(): + """Generic serializer fields for a report template""" + + return [ + 'pk', + 'name', + 'description', + 'template', + 'filters', + 'enabled', + ] + + +class TestReportSerializer(ReportSerializerBase): """Serializer class for the TestReport model""" class Meta: """Metaclass options.""" model = TestReport - fields = [ - 'pk', - 'name', - 'description', - 'template', - 'filters', - 'enabled', - ] - - template = InvenTreeAttachmentSerializerField(required=True) + fields = ReportSerializerBase.report_fields() -class BuildReportSerializer(InvenTreeModelSerializer): +class BuildReportSerializer(ReportSerializerBase): """Serializer class for the BuildReport model""" class Meta: """Metaclass options.""" model = BuildReport - fields = [ - 'pk', - 'name', - 'description', - 'template', - 'filters', - 'enabled', - ] - - template = InvenTreeAttachmentSerializerField(required=True) + fields = ReportSerializerBase.report_fields() -class BOMReportSerializer(InvenTreeModelSerializer): +class BOMReportSerializer(ReportSerializerBase): """Serializer class for the BillOfMaterialsReport model""" class Meta: """Metaclass options.""" model = BillOfMaterialsReport - fields = [ - 'pk', - 'name', - 'description', - 'template', - 'filters', - 'enabled', - ] - - template = InvenTreeAttachmentSerializerField(required=True) + fields = ReportSerializerBase.report_fields() -class PurchaseOrderReportSerializer(InvenTreeModelSerializer): +class PurchaseOrderReportSerializer(ReportSerializerBase): """Serializer class for the PurchaseOrdeReport model""" class Meta: """Metaclass options.""" model = PurchaseOrderReport - fields = [ - 'pk', - 'name', - 'description', - 'template', - 'filters', - 'enabled', - ] - - template = InvenTreeAttachmentSerializerField(required=True) + fields = ReportSerializerBase.report_fields() -class SalesOrderReportSerializer(InvenTreeModelSerializer): +class SalesOrderReportSerializer(ReportSerializerBase): """Serializer class for the SalesOrderReport model""" class Meta: """Metaclass options.""" model = SalesOrderReport - fields = [ - 'pk', - 'name', - 'description', - 'template', - 'filters', - 'enabled', - ] + fields = ReportSerializerBase.report_fields() - template = InvenTreeAttachmentSerializerField(required=True) + +class ReturnOrderReportSerializer(ReportSerializerBase): + """Serializer class for the ReturnOrderReport model""" + + class Meta: + """Metaclass options""" + + model = ReturnOrderReport + fields = ReportSerializerBase.report_fields()