| @@ -11,6 +11,15 @@ class ItemSerializer(serializers.ModelSerializer): | |||||
| class InvoiceSerializer(WritableNestedModelSerializer): | 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) | project = ProjectSerializer(read_only=True) | ||||
| items = ItemSerializer(many=True) | items = ItemSerializer(many=True) | ||||
| @@ -6,6 +6,7 @@ from rest_framework import routers | |||||
| router = routers.DefaultRouter() | router = routers.DefaultRouter() | ||||
| router.register(r'items', views.ItemViewSet) | router.register(r'items', views.ItemViewSet) | ||||
| router.register(r'invoices', views.InvoiceViewSet) | router.register(r'invoices', views.InvoiceViewSet) | ||||
| router.register(r'detailed-invoices', views.DetailedInvoiceViewSet) | |||||
| urlpatterns = [ | urlpatterns = [ | ||||
| @@ -2,7 +2,7 @@ from rest_framework import viewsets | |||||
| from rest_framework.authentication import TokenAuthentication, SessionAuthentication | from rest_framework.authentication import TokenAuthentication, SessionAuthentication | ||||
| from rest_framework.permissions import IsAuthenticated | from rest_framework.permissions import IsAuthenticated | ||||
| from .models import Item, Invoice | from .models import Item, Invoice | ||||
| from .serializers import ItemSerializer, InvoiceSerializer | |||||
| from .serializers import ItemSerializer, InvoiceSerializer, DetailedInvoiceSerializer | |||||
| class ItemViewSet(viewsets.ModelViewSet): | class ItemViewSet(viewsets.ModelViewSet): | ||||
| @@ -17,3 +17,10 @@ class InvoiceViewSet(viewsets.ModelViewSet): | |||||
| serializer_class = InvoiceSerializer | serializer_class = InvoiceSerializer | ||||
| authentication_classes = [TokenAuthentication, SessionAuthentication] | authentication_classes = [TokenAuthentication, SessionAuthentication] | ||||
| permission_classes = [IsAuthenticated] | permission_classes = [IsAuthenticated] | ||||
| class DetailedInvoiceViewSet(viewsets.ReadOnlyModelViewSet): | |||||
| queryset = Invoice.objects.all() | |||||
| serializer_class = DetailedInvoiceSerializer | |||||
| authentication_classes = [TokenAuthentication, SessionAuthentication] | |||||
| permission_classes = [IsAuthenticated] | |||||
| @@ -1,11 +1,14 @@ | |||||
| from rest_framework import serializers | from rest_framework import serializers | ||||
| from .models import Project | from .models import Project | ||||
| from client.serializers import ClientSerializer | from client.serializers import ClientSerializer | ||||
| from employee.serializers import EmployeeSerializer | |||||
| class ProjectSerializer(serializers.ModelSerializer): | class ProjectSerializer(serializers.ModelSerializer): | ||||
| client = ClientSerializer(read_only=True) | client = ClientSerializer(read_only=True) | ||||
| employee_set = EmployeeSerializer(read_only=True, many=True) | |||||
| class Meta: | class Meta: | ||||
| model = Project | 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'] | |||||