chore: initial import
This commit is contained in:
82
api/apps/commerce/views.py
Normal file
82
api/apps/commerce/views.py
Normal file
@@ -0,0 +1,82 @@
|
||||
from rest_framework import mixins, permissions, viewsets
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
|
||||
from . import models, serializers
|
||||
|
||||
|
||||
class ProductPublicViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
"""Public storefront products."""
|
||||
|
||||
queryset = models.Product.objects.filter(is_active=True).select_related("category")
|
||||
serializer_class = serializers.ProductSerializer
|
||||
permission_classes = [permissions.AllowAny]
|
||||
lookup_field = "slug"
|
||||
|
||||
|
||||
class ProductAdminViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.Product.objects.select_related("category").all()
|
||||
serializer_class = serializers.ProductSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
|
||||
class ProductCategoryPublicViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
queryset = models.ProductCategory.objects.filter(is_active=True)
|
||||
serializer_class = serializers.ProductCategorySerializer
|
||||
permission_classes = [permissions.AllowAny]
|
||||
lookup_field = "slug"
|
||||
|
||||
|
||||
class ProductCategoryAdminViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.ProductCategory.objects.all()
|
||||
serializer_class = serializers.ProductCategorySerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
|
||||
class DeliveryZonePublicViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
queryset = models.DeliveryZone.objects.filter(is_active=True)
|
||||
serializer_class = serializers.DeliveryZoneSerializer
|
||||
permission_classes = [permissions.AllowAny]
|
||||
|
||||
|
||||
class DeliveryZoneAdminViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.DeliveryZone.objects.all()
|
||||
serializer_class = serializers.DeliveryZoneSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
|
||||
class DeliveryOverrideCodeAdminViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.DeliveryOverrideCode.objects.all()
|
||||
serializer_class = serializers.DeliveryOverrideCodeSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
lookup_field = "code"
|
||||
|
||||
@action(methods=["post"], detail=True, permission_classes=[permissions.IsAuthenticated])
|
||||
def activate(self, request, code=None):
|
||||
override_code = self.get_object()
|
||||
override_code.is_active = True
|
||||
override_code.save(update_fields=["is_active"])
|
||||
return Response(self.get_serializer(override_code).data)
|
||||
|
||||
@action(methods=["post"], detail=True, permission_classes=[permissions.IsAuthenticated])
|
||||
def deactivate(self, request, code=None):
|
||||
override_code = self.get_object()
|
||||
override_code.is_active = False
|
||||
override_code.save(update_fields=["is_active"])
|
||||
return Response(self.get_serializer(override_code).data)
|
||||
|
||||
|
||||
class OrderPublicViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
|
||||
queryset = models.Order.objects.all()
|
||||
serializer_class = serializers.OrderSerializer
|
||||
permission_classes = [permissions.AllowAny]
|
||||
|
||||
|
||||
class OrderAdminViewSet(viewsets.ModelViewSet):
|
||||
queryset = (
|
||||
models.Order.objects.select_related("delivery_override_code")
|
||||
.prefetch_related("items")
|
||||
.all()
|
||||
)
|
||||
serializer_class = serializers.OrderAdminSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
Reference in New Issue
Block a user