@@ -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'] |