from django.http import HttpResponse from rest_framework import viewsets from rest_framework.decorators import detail_route from orchestra.api import router from orchestra.apps.accounts.api import AccountApiMixin from orchestra.utils.html import html_to_pdf from .models import Bill from .serializers import BillSerializer class BillViewSet(AccountApiMixin, viewsets.ModelViewSet): model = Bill serializer_class = BillSerializer @detail_route(methods=['get']) def document(self, request, pk): bill = self.get_object() content_type = request.META.get('HTTP_ACCEPT') if content_type == 'application/pdf': pdf = html_to_pdf(bill.html or bill.render()) return HttpResponse(pdf, content_type='application/pdf') else: return HttpResponse(bill.html or bill.render()) router.register('bills', BillViewSet)