#90 feat(ReconcilaitionJar): create api view with pagination.
This commit is contained in:
parent
2a937653df
commit
c9cfc7f873
@ -2,6 +2,7 @@ from rest_framework import viewsets
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.status import HTTP_400_BAD_REQUEST
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.pagination import PageNumberPagination
|
||||
|
||||
from .models import Sale, SaleLine, Customer, Product, ReconciliationJar, PaymentMethods, AdminCode
|
||||
from .serializers import SaleSerializer, ProductSerializer, CustomerSerializer, ReconciliationJarSerializer, PaymentMethodSerializer, SaleForRenconciliationSerializer, SaleSummarySerializer
|
||||
@ -9,6 +10,12 @@ from .serializers import SaleSerializer, ProductSerializer, CustomerSerializer,
|
||||
from decimal import Decimal
|
||||
import json
|
||||
|
||||
|
||||
class Pagination(PageNumberPagination):
|
||||
page_size = 10
|
||||
page_size_query_param = 'page_size'
|
||||
|
||||
|
||||
class SaleView(viewsets.ModelViewSet):
|
||||
queryset = Sale.objects.all()
|
||||
serializer_class = SaleSerializer
|
||||
@ -131,3 +138,9 @@ class AdminCodeValidateView(APIView):
|
||||
def get(self, request, code):
|
||||
codes = AdminCode.objects.filter(value=code)
|
||||
return Response({'validCode': bool(codes)})
|
||||
|
||||
|
||||
class ReconciliateJarModelView(viewsets.ModelViewSet):
|
||||
queryset = ReconciliationJar.objects.all().order_by('-date_time')
|
||||
pagination_class = Pagination
|
||||
serializer_class = ReconciliationJarSerializer
|
||||
|
@ -197,6 +197,34 @@ class TestJarReconcliation(TestCase):
|
||||
purchases = Sale.objects.filter(reconciliation_id=content['id'])
|
||||
self.assertEqual(len(purchases), 3)
|
||||
|
||||
def test_list_reconciliations(self):
|
||||
self._create_simple_reconciliation()
|
||||
self._create_simple_reconciliation()
|
||||
|
||||
url = '/don_confiao/api/reconciliate_jar/'
|
||||
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
content = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(2, len(content['results']))
|
||||
self.assertEqual('2024-07-30T00:00:00Z',
|
||||
content['results'][0]['date_time'])
|
||||
|
||||
def test_list_reconciliations_pagination(self):
|
||||
self._create_simple_reconciliation()
|
||||
self._create_simple_reconciliation()
|
||||
|
||||
url = '/don_confiao/api/reconciliate_jar/?page=2&page_size=1'
|
||||
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
content = json.loads(response.content.decode('utf-8'))
|
||||
self.assertEqual(1, len(content['results']))
|
||||
self.assertEqual('2024-07-30T00:00:00Z',
|
||||
content['results'][0]['date_time'])
|
||||
|
||||
def _create_simple_reconciliation(self):
|
||||
reconciliation = ReconciliationJar()
|
||||
reconciliation.date_time = "2024-07-30"
|
||||
|
@ -10,7 +10,8 @@ router = DefaultRouter()
|
||||
router.register(r'sales', api_views.SaleView, basename='sale')
|
||||
router.register(r'customers', api_views.CustomerView, basename='customer')
|
||||
router.register(r'products', api_views.ProductView, basename='product')
|
||||
|
||||
router.register(r'reconciliate_jar', api_views.ReconciliateJarModelView,
|
||||
basename='reconciliate_jar')
|
||||
|
||||
urlpatterns = [
|
||||
path("", views.index, name="wellcome"),
|
||||
|
Loading…
Reference in New Issue
Block a user