From 0162f1e6a47fa7e9648ee248a1d9702e17855409 Mon Sep 17 00:00:00 2001 From: kj1352 Date: Thu, 21 Jul 2022 18:00:22 +0530 Subject: [PATCH] Updated serializers to get details in READ ONLY format --- client/serializers.py | 16 ++++++++++------ invoice/models.py | 14 +------------- invoice/serializers.py | 4 +++- project/serializers.py | 3 +++ 4 files changed, 17 insertions(+), 20 deletions(-) diff --git a/client/serializers.py b/client/serializers.py index afa4665..8d55aed 100644 --- a/client/serializers.py +++ b/client/serializers.py @@ -26,13 +26,17 @@ class CitySerializer(serializers.ModelSerializer): fields = ['id', 'name', 'state'] -class ClientSerializer(serializers.ModelSerializer): - class Meta: - model = Client - fields = ['id', 'name', 'address'] - - class AddressSerializer(serializers.ModelSerializer): + tax_type = TaxTypeSerializer(read_only=True) + class Meta: model = Address fields = ['id', 'city', 'address_line1', 'address_line2', 'postal_code', 'tax_type', 'tax_id'] + + +class ClientSerializer(serializers.ModelSerializer): + address = AddressSerializer(read_only=True) + + class Meta: + model = Client + fields = ['id', 'name', 'address'] diff --git a/invoice/models.py b/invoice/models.py index d3a68ab..ed0e675 100644 --- a/invoice/models.py +++ b/invoice/models.py @@ -13,25 +13,13 @@ class Invoice(models.Model): is_archived = models.BooleanField(default=False) @property - def invoice_total(self): + def invoice_total_without_tax(self): items = Item.objects.filter(invoice=self.pk) total = 0 for item in items: total += item.item_total return total - @property - def invoice_total_after_tax(self): - items = Item.objects.filter(invoice=self.pk) - project = Project.objects.get(client=self.project) - client = Client.objects.get(pk=project.client) - address = Address.objects.get(pk=client.address) - tax_type = TaxType.objects.get(pk=address.tax_type) - total = 0 - for item in items: - total += item.item_total - return total - def __str__(self): return self.invoice_id diff --git a/invoice/serializers.py b/invoice/serializers.py index 9ae6ee7..d726e22 100644 --- a/invoice/serializers.py +++ b/invoice/serializers.py @@ -1,6 +1,7 @@ from rest_framework import serializers from drf_writable_nested.serializers import WritableNestedModelSerializer from .models import Item, Invoice +from project.serializers import ProjectSerializer class ItemSerializer(serializers.ModelSerializer): @@ -10,9 +11,10 @@ class ItemSerializer(serializers.ModelSerializer): class InvoiceSerializer(WritableNestedModelSerializer): + project = ProjectSerializer(read_only=True) items = ItemSerializer(many=True) class Meta: model = Invoice fields = ['id', 'title', 'project', 'invoice_id', 'raised_date', 'due_date', 'paid_date', 'is_archived', - 'invoice_total', 'items'] + 'invoice_total_without_tax', 'items'] diff --git a/project/serializers.py b/project/serializers.py index 37c6f3f..8fc0f21 100644 --- a/project/serializers.py +++ b/project/serializers.py @@ -1,8 +1,11 @@ from rest_framework import serializers from .models import Project +from client.serializers import ClientSerializer class ProjectSerializer(serializers.ModelSerializer): + client = ClientSerializer(read_only=True) + class Meta: model = Project fields = ['id', 'name', 'project_image', 'client', 'total_compensation', 'start_date', 'end_date']