diff --git a/invoice/serializers.py b/invoice/serializers.py index f2e8159..7f0b903 100644 --- a/invoice/serializers.py +++ b/invoice/serializers.py @@ -11,6 +11,15 @@ class ItemSerializer(serializers.ModelSerializer): class InvoiceSerializer(WritableNestedModelSerializer): + items = ItemSerializer(many=True) + + class Meta: + model = Invoice + fields = ['id', 'title', 'project', 'invoice_id', 'raised_date', 'due_date', 'paid_date', 'is_archived', + 'invoice_total_with_tax', 'items'] + + +class DetailedInvoiceSerializer(serializers.ModelSerializer): project = ProjectSerializer(read_only=True) items = ItemSerializer(many=True) diff --git a/invoice/urls.py b/invoice/urls.py index b3bed2a..1e2205e 100644 --- a/invoice/urls.py +++ b/invoice/urls.py @@ -6,6 +6,7 @@ from rest_framework import routers router = routers.DefaultRouter() router.register(r'items', views.ItemViewSet) router.register(r'invoices', views.InvoiceViewSet) +router.register(r'detailed-invoices', views.DetailedInvoiceViewSet) urlpatterns = [ diff --git a/invoice/views.py b/invoice/views.py index 22453ff..b19af38 100644 --- a/invoice/views.py +++ b/invoice/views.py @@ -2,7 +2,7 @@ from rest_framework import viewsets from rest_framework.authentication import TokenAuthentication, SessionAuthentication from rest_framework.permissions import IsAuthenticated from .models import Item, Invoice -from .serializers import ItemSerializer, InvoiceSerializer +from .serializers import ItemSerializer, InvoiceSerializer, DetailedInvoiceSerializer class ItemViewSet(viewsets.ModelViewSet): @@ -17,3 +17,10 @@ class InvoiceViewSet(viewsets.ModelViewSet): serializer_class = InvoiceSerializer authentication_classes = [TokenAuthentication, SessionAuthentication] permission_classes = [IsAuthenticated] + + +class DetailedInvoiceViewSet(viewsets.ReadOnlyModelViewSet): + queryset = Invoice.objects.all() + serializer_class = DetailedInvoiceSerializer + authentication_classes = [TokenAuthentication, SessionAuthentication] + permission_classes = [IsAuthenticated] diff --git a/project/serializers.py b/project/serializers.py index 8fc0f21..5d4e1f9 100644 --- a/project/serializers.py +++ b/project/serializers.py @@ -1,11 +1,14 @@ from rest_framework import serializers from .models import Project from client.serializers import ClientSerializer +from employee.serializers import EmployeeSerializer class ProjectSerializer(serializers.ModelSerializer): client = ClientSerializer(read_only=True) + employee_set = EmployeeSerializer(read_only=True, many=True) class Meta: model = Project - fields = ['id', 'name', 'project_image', 'client', 'total_compensation', 'start_date', 'end_date'] + fields = ['id', 'name', 'project_image', 'client', 'total_compensation', 'start_date', 'end_date', + 'employee_set']