feat: added creation endpoints
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from shop.api.v1.viewsets import (
|
||||
TaxViewSet,
|
||||
CustomerViewSet,
|
||||
ProductViewSet,
|
||||
ProductPriceViewSet,
|
||||
OrderViewSet,
|
||||
OrderLineViewSet,
|
||||
)
|
||||
|
||||
|
||||
router = DefaultRouter()
|
||||
|
||||
router.register("taxes", TaxViewSet)
|
||||
router.register("customers", CustomerViewSet)
|
||||
router.register("product", ProductViewSet)
|
||||
router.register("product-prices", ProductPriceViewSet)
|
||||
router.register("orders", OrderViewSet)
|
||||
router.register("orders/(?P<order_id>[^/.]+)/lines", OrderLineViewSet)
|
||||
|
||||
|
||||
urlpatterns = router.urls
|
||||
@@ -0,0 +1,99 @@
|
||||
from rest_framework import serializers
|
||||
from shop.models import Product, ProductPrice, Customer, Tax, OrderLine, Order
|
||||
|
||||
|
||||
class ProductSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Product
|
||||
fields = (
|
||||
"name",
|
||||
"description",
|
||||
"stock",
|
||||
"unit",
|
||||
)
|
||||
|
||||
|
||||
class ProductPriceSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ProductPrice
|
||||
fields = (
|
||||
"price",
|
||||
"date",
|
||||
"product",
|
||||
)
|
||||
|
||||
|
||||
class CustomerSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Customer
|
||||
fields = (
|
||||
"vat_id",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"email",
|
||||
"address",
|
||||
"city",
|
||||
"state",
|
||||
"country",
|
||||
"zip",
|
||||
)
|
||||
|
||||
|
||||
class TaxSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Tax
|
||||
fields = (
|
||||
"code",
|
||||
"value",
|
||||
)
|
||||
|
||||
|
||||
class OrderSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Order
|
||||
fields = (
|
||||
"uuid",
|
||||
"creation_date",
|
||||
"last_modification_date",
|
||||
"base_total",
|
||||
"total",
|
||||
"customer",
|
||||
"billing_address",
|
||||
"billing_city",
|
||||
"billing_state",
|
||||
"billing_country",
|
||||
"billing_zip",
|
||||
"shipping_address",
|
||||
"shipping_city",
|
||||
"shipping_state",
|
||||
"shipping_country",
|
||||
"shipping_zip",
|
||||
"contact_phone",
|
||||
)
|
||||
read_only_fields = (
|
||||
"uuid",
|
||||
"base_total",
|
||||
"total",
|
||||
)
|
||||
|
||||
|
||||
class OrderLineSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = OrderLine
|
||||
fields = (
|
||||
"product",
|
||||
"quantity",
|
||||
"order",
|
||||
"price",
|
||||
"base_total",
|
||||
"total",
|
||||
"taxes",
|
||||
"tax_value",
|
||||
)
|
||||
read_only_fields = (
|
||||
"price",
|
||||
"base_total",
|
||||
"total",
|
||||
"taxes",
|
||||
"tax_value",
|
||||
)
|
||||
@@ -0,0 +1,45 @@
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
|
||||
from shop.api.v1.serializers import (
|
||||
ProductSerializer,
|
||||
ProductPriceSerializer,
|
||||
CustomerSerializer,
|
||||
TaxSerializer,
|
||||
OrderSerializer,
|
||||
OrderLineSerializer,
|
||||
)
|
||||
from shop.models import Product, ProductPrice, Customer, Tax, Order, OrderLine
|
||||
|
||||
|
||||
class ProductViewSet(ModelViewSet):
|
||||
serializer_class = ProductSerializer
|
||||
queryset = Product.objects.all()
|
||||
|
||||
|
||||
class ProductPriceViewSet(ModelViewSet):
|
||||
serializer_class = ProductPriceSerializer
|
||||
queryset = ProductPrice.objects.all()
|
||||
|
||||
|
||||
class CustomerViewSet(ModelViewSet):
|
||||
serializer_class = CustomerSerializer
|
||||
queryset = Customer.objects.all()
|
||||
|
||||
|
||||
class TaxViewSet(ModelViewSet):
|
||||
serializer_class = TaxSerializer
|
||||
queryset = Tax.objects.all()
|
||||
|
||||
|
||||
class OrderViewSet(ModelViewSet):
|
||||
serializer_class = OrderSerializer
|
||||
queryset = Order.objects.all()
|
||||
lookup_field = "uuid"
|
||||
|
||||
|
||||
class OrderLineViewSet(ModelViewSet):
|
||||
serializer_class = OrderLineSerializer
|
||||
queryset = OrderLine.objects.all()
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().filter(order_id=self.kwargs.get("order_id"))
|
||||
Reference in New Issue
Block a user