feat: add catalogue image management (#1)
- Add CatalogueImage model with FK to Product - Add image resize service (strict/non-strict modes with configurable dimensions) - Add CRUD API endpoints with admin-only write permissions - Add catalogue_images field to product listing/detail endpoints - Serve media files in development via static() - 28 TDD tests covering model, API, permissions, resize, and product listing
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from .catalogue_images import CatalogueImageViewSet
|
||||
from .products import ProductView, ProductsFromTrytonView
|
||||
from .customers import CustomerView, CustomersFromTrytonView
|
||||
from .sales import (
|
||||
@@ -19,6 +20,8 @@ from .payments import (
|
||||
from .admin import AdminCodeValidateView
|
||||
|
||||
__all__ = [
|
||||
# Catalogue Images
|
||||
"CatalogueImageViewSet",
|
||||
# Products
|
||||
"ProductView",
|
||||
"ProductsFromTrytonView",
|
||||
|
||||
25
tienda_ilusion/don_confiao/api/catalogue_images.py
Normal file
25
tienda_ilusion/don_confiao/api/catalogue_images.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
|
||||
from ..image_service import resize_catalogue_image
|
||||
from ..models.catalogue_images import CatalogueImage
|
||||
from ..permissions import IsAdministrator
|
||||
from ..serializers.catalogue_images import CatalogueImageSerializer
|
||||
|
||||
|
||||
class CatalogueImageViewSet(viewsets.ModelViewSet):
|
||||
queryset = CatalogueImage.objects.all()
|
||||
serializer_class = CatalogueImageSerializer
|
||||
|
||||
def get_permissions(self):
|
||||
if self.action in ("create", "update", "partial_update", "destroy"):
|
||||
return [IsAuthenticated(), IsAdministrator()]
|
||||
return [IsAuthenticated()]
|
||||
|
||||
def perform_create(self, serializer):
|
||||
instance = serializer.save()
|
||||
resize_catalogue_image(instance.image)
|
||||
|
||||
def perform_update(self, serializer):
|
||||
instance = serializer.save()
|
||||
resize_catalogue_image(instance.image)
|
||||
Reference in New Issue
Block a user