Skip to content
Snippets Groups Projects
Commit 7a191d0f authored by Yirou QIU's avatar Yirou QIU
Browse files

Merge branch 'yrq/feature/billSumPrice' into 'main'

Yrq/feature/bill sum price

See merge request !8
parents 87229152 85799954
No related branches found
No related tags found
1 merge request!8Yrq/feature/bill sum price
from rest_framework import generics, response
from core.models.bill import Bill, BillSearchQuerySet
from core.serializers.bill import BillSerializer
from rest_framework import authentication
from django.db.models import Sum
class BillSumPriceListView(generics.ListAPIView):
queryset = Bill.objects.all()
serializer_class = BillSerializer
authentication_classes = [
authentication.SessionAuthentication,
authentication.TokenAuthentication
]
def get(self, request, *args, **kwargs):
item = request.GET.get('item')
categorieModel = {
1: "Food",
2: "Groceries",
3: "Transportation",
4: "clothing",
5: "Entertainment",
6: "Bill",
7: "Sports",
8: "Electronics",
9: "Travel",
10: "House & Car",
11: "Others",
}
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.searchToday(user=user)
elif item == 'month':
qs = qs.searchThisMonth(user=user)
total_price = qs.aggregate(Sum('price'))
data[categorieModel[i]] = total_price['price__sum']
return response.Response(data)
BillSumPriceListViewAPI = BillSumPriceListView.as_view()
\ No newline at end of file
......@@ -35,5 +35,4 @@ class SearchBillListView(generics.ListAPIView):
result = qs.searchToday(user=user)
elif item == "title":
result = qs.searchTitle(keyword, user=user)
print(result)
return result
\ No newline at end of file
......@@ -41,20 +41,7 @@ class BillSearchQuerySet(models.QuerySet):
if user is not None:
qs = self.filter(user=user).filter(lookup)
return qs
# def searchTitle(self, keyword, user=None):
# lookup = Q(title__contains = keyword)
# qs = self.filter(lookup)
# if user is not None:
# qs = self.filter(user=user).filter(lookup)
# return qs
# def categorieAmount(self, date, categories, user=None):
# if date == "day":
# qs = self.searchCategories(categories, user=user).searchToday(user=user)
# elif date == "month":
# qs = self.searchCategories(categories, user=user).searchThisMonth(user=user)
class BillManager(models.Manager):
......
......@@ -8,6 +8,7 @@ from core.api.profile import ProfileViewSet
from core.api.coupon import CouponViewSet
from core.api.bill import *
from core.api.billSearch import SearchBillListView
from core.api.billPriceSum import BillSumPriceListViewAPI
router = routers.DefaultRouter()
......@@ -36,7 +37,10 @@ urlpatterns += [
path('api/bill/<uuid:pk>/', bill_detail_api, name="bill-detail"),
# bill search
path('api/bill/search/', SearchBillListView.as_view(), name="bill-search")
path('api/bill/search/', SearchBillListView.as_view(), name="bill-search"),
# bill price list searched by categories
path('api/bill/price-sum/', BillSumPriceListViewAPI, name="bill-price-sum")
]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment