Skip to content
Snippets Groups Projects
billPriceSum.py 1.54 KiB
from rest_framework import generics, response
from core.models.bill import Bill, BillSearchQuerySet
from core.serializers.bill import BillSerializer
from rest_framework import permissions, authentication
from django.db.models import Sum

class BillSumPriceListView(generics.ListAPIView):
    queryset = Bill.objects.all()
    serializer_class = BillSerializer
    permission_classes = (permissions.IsAuthenticated,)

    
    def get(self, request, *args, **kwargs):
        item = request.GET.get('item')

        categorieModel = {
            1: "Food",
            2: "Transportation",
            3: "Shopping",
            4: "Entertainment",
            5: "Housing",
            6: "Utilities",
            7: "Other",
            8: "Salary",
            9: "Interest",
            10: "Investment",
            11: "Child benefit",
            12: "Pension",
            13: "Income",
        }
        queryset = self.filter_queryset(self.get_queryset())
        user = None
        if self.request.user.is_authenticated:
            user = self.request.user
        data = {}

        for i in range(1,12):
            qs = BillSearchQuerySet(Bill).searchCategories(query=i, user=user)
            if item == 'today':
                qs = qs.searchByDay(user=user)
            elif item == 'month':
                qs = qs.searchByMonth(user=user)
            total_price = qs.aggregate(Sum('price'))
            data[categorieModel[i]] = total_price['price__sum']
        return response.Response(data)
    
BillSumPriceListViewAPI = BillSumPriceListView.as_view()