/
api.py
33 lines (24 loc) · 1.1 KB
/
api.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -*- coding: utf-8 -*-
from django.http import Http404
from rest_framework import viewsets
from ..models import Invoice, InvoiceLine
from ..serializers import InvoiceSerializer, InvoiceListSerializer, InvoiceLineSerializer
class InvoiceViewSet(viewsets.ModelViewSet):
queryset = Invoice.objects.all()
serializer_class = InvoiceSerializer
def get_queryset(self):
return Invoice.objects.filter(company__users=self.request.user)\
.exclude(status=Invoice.STATUS.canceled)\
.select_related('client', 'company')
def get_serializer_class(self):
if self.action == 'list':
return InvoiceListSerializer
return self.serializer_class
class InvoiceLineViewSet(viewsets.ModelViewSet):
serializer_class = InvoiceLineSerializer
def get_queryset(self):
if 'invoice_pk' not in self.kwargs:
raise Http404()
return InvoiceLine.objects.filter(invoice_id=self.kwargs['invoice_pk'])
def perform_create(self, serializer):
serializer.save(invoice_id=self.kwargs['invoice_pk'])