Implementando api #32

Merged
mono merged 4 commits from implement_api into main 2024-09-08 22:39:15 -05:00
4 changed files with 6 additions and 25 deletions
Showing only changes of commit 19a618a671 - Show all commits

View File

@ -2,18 +2,18 @@ from rest_framework import viewsets
from rest_framework.response import Response from rest_framework.response import Response
from .models import Sale, SaleLine, Customer, Product from .models import Sale, SaleLine, Customer, Product
from .serializers import SaleSerializer, SaleWithLinesSerializer, ProductSerializer, CustomerSerializer from .serializers import SaleSerializer, ProductSerializer, CustomerSerializer
class SaleWithLinesViewSet(viewsets.ModelViewSet): class SaleView(viewsets.ModelViewSet):
queryset = Sale.objects.all() queryset = Sale.objects.all()
serializer_class = SaleWithLinesSerializer serializer_class = SaleSerializer
def create(self, request): def create(self, request):
data = request.data data = request.data
customer = Customer.objects.get(pk=data['customer']) customer = Customer.objects.get(pk=data['customer'])
date = data['date'] date = data['date']
lines = data['lines'] lines = data['saleline_set']
sale = Sale.objects.create(customer=customer, date=date) sale = Sale.objects.create(customer=customer, date=date)
for line in lines: for line in lines:
@ -30,11 +30,6 @@ class SaleWithLinesViewSet(viewsets.ModelViewSet):
return Response({'message': 'Venta creada con exito'}, status=201) return Response({'message': 'Venta creada con exito'}, status=201)
class SaleView(viewsets.ModelViewSet):
queryset = Sale.objects.all()
serializer_class = SaleSerializer
class ProductView(viewsets.ModelViewSet): class ProductView(viewsets.ModelViewSet):
queryset = Product.objects.all() queryset = Product.objects.all()
serializer_class = ProductSerializer serializer_class = ProductSerializer

View File

@ -9,23 +9,10 @@ class SaleLineSerializer(serializers.ModelSerializer):
fields = ['id', 'sale', 'product', 'unit_price', 'quantity'] fields = ['id', 'sale', 'product', 'unit_price', 'quantity']
class SaleWithLinesSerializer(serializers.ModelSerializer):
lines = SaleLineSerializer(many=True)
class Meta:
model = Sale
fields = ['id', 'customer', 'date', 'lines']
class SaleSerializer(serializers.ModelSerializer): class SaleSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Sale model = Sale
fields = ['id', 'customer', 'date'] fields = ['id', 'customer', 'date', 'saleline_set']
def to_representation(self, instance):
representation = super().to_representation(instance)
representation['lines'] = [line for line in instance.saleline_set.all().values()]
return representation
class ProductSerializer(serializers.ModelSerializer): class ProductSerializer(serializers.ModelSerializer):

View File

@ -21,7 +21,7 @@ class TestAPI(APITestCase):
data = { data = {
'customer': self.customer.id, 'customer': self.customer.id,
'date': '2024-09-02', 'date': '2024-09-02',
'lines': [ 'saleline_set': [
{'product': self.product.id, 'quantity': 2, 'unit_price': 3000}, {'product': self.product.id, 'quantity': 2, 'unit_price': 3000},
{'product': self.product.id, 'quantity': 3, 'unit_price': 5000} {'product': self.product.id, 'quantity': 3, 'unit_price': 5000}
], ],

View File

@ -22,6 +22,5 @@ urlpatterns = [
path("cuadrar_tarro", views.reconciliate_jar, name="reconciliate_jar"), path("cuadrar_tarro", views.reconciliate_jar, name="reconciliate_jar"),
path("cuadres", views.reconciliate_jar, name="reconciliations"), path("cuadres", views.reconciliate_jar, name="reconciliations"),
path("resumen_compra/<int:id>", views.purchase_summary, name="purchase_summary"), path("resumen_compra/<int:id>", views.purchase_summary, name="purchase_summary"),
path('api/sales_with_lines/', api_views.SaleWithLinesViewSet.as_view({'post': 'create'}), name='sale-create'),
path('api/', include(router.urls)), path('api/', include(router.urls)),
] ]