From 9150dc42b354c70f075f1175122c7876f7cc6c81 Mon Sep 17 00:00:00 2001 From: kj1352 Date: Mon, 18 Jul 2022 21:26:13 +0530 Subject: [PATCH] Partial commit -- invoice item API --- invoice/admin.py | 4 +++- invoice/models.py | 2 +- invoice/serializers.py | 14 ++++++++++++++ invoice/urls.py | 7 +++++++ invoice/views.py | 27 +++++++++++++++++++++++++-- workx_backend/urls.py | 4 +++- 6 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 invoice/serializers.py create mode 100644 invoice/urls.py diff --git a/invoice/admin.py b/invoice/admin.py index 8c38f3f..04934fb 100644 --- a/invoice/admin.py +++ b/invoice/admin.py @@ -1,3 +1,5 @@ from django.contrib import admin +from .models import * -# Register your models here. + +admin.site.register([Invoice, Item]) diff --git a/invoice/models.py b/invoice/models.py index 804d1bb..a2acb6e 100644 --- a/invoice/models.py +++ b/invoice/models.py @@ -25,4 +25,4 @@ class Item(models.Model): return self.amount * self.quantity def __str__(self): - return self.name + return self.id diff --git a/invoice/serializers.py b/invoice/serializers.py new file mode 100644 index 0000000..7035240 --- /dev/null +++ b/invoice/serializers.py @@ -0,0 +1,14 @@ +from rest_framework import serializers +from .models import Item, Invoice + + +class ItemSerializer(serializers.ModelSerializer): + class Meta: + model = Item + fields = ['id', 'name', 'amount', 'quantity', 'invoice', 'item_total'] + + +class InvoiceSerializer(serializers.ModelSerializer): + class Meta: + model = Invoice + fields = ['id', 'project', 'invoice_id', 'raised_date', 'due_date', 'paid_date', 'is_archived'] diff --git a/invoice/urls.py b/invoice/urls.py new file mode 100644 index 0000000..e18d25f --- /dev/null +++ b/invoice/urls.py @@ -0,0 +1,7 @@ +from django.urls import path +from . import views + +urlpatterns = [ + path('invoices/', views.InvoiceList.as_view()), + path('invoice-items/', views.ItemList.as_view()), +] diff --git a/invoice/views.py b/invoice/views.py index 91ea44a..2cfd30e 100644 --- a/invoice/views.py +++ b/invoice/views.py @@ -1,3 +1,26 @@ -from django.shortcuts import render +from rest_framework.response import Response +from rest_framework.views import APIView +from rest_framework.authentication import TokenAuthentication, SessionAuthentication +from rest_framework.permissions import IsAuthenticated +from .models import Item, Invoice +from .serializers import ItemSerializer, InvoiceSerializer -# Create your views here. + +class ItemList(APIView): + authentication_classes = [TokenAuthentication, SessionAuthentication] + permission_classes = [IsAuthenticated] + + def get(self, request): + items = Item.objects.filter(pk=Item.invoice) + serializer = ItemSerializer(items, many=True) + return Response(serializer.data) + + +class InvoiceList(APIView): + authentication_classes = [TokenAuthentication, SessionAuthentication] + permission_classes = [IsAuthenticated] + + def get(self, request): + items = Invoice.objects.all() + serializer = InvoiceSerializer(items, many=True) + return Response(serializer.data) diff --git a/workx_backend/urls.py b/workx_backend/urls.py index 7390f56..1ab036c 100644 --- a/workx_backend/urls.py +++ b/workx_backend/urls.py @@ -7,6 +7,7 @@ from client import urls as clientUrls from employee import urls as employeeUrls from project import urls as projectUrls from representative import urls as representativeUrls +from invoice import urls as invoiceUrls schema_view = get_schema_view( @@ -33,7 +34,8 @@ urlpatterns = [ path('', include(clientUrls)), path('', include(employeeUrls)), path('', include(projectUrls)), - path('', include(representativeUrls)) + path('', include(representativeUrls)), + path('', include(invoiceUrls)) ])) ])), ]