init
This commit is contained in:
50
backend/product/views.py
Normal file
50
backend/product/views.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from rest_framework import viewsets
|
||||
from django.db import models
|
||||
from .models import Product, EventProduct
|
||||
from .serializers import ProductSerializer, EventProductSerializer
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from account.permissions import RoleAllowed
|
||||
|
||||
from rest_framework import viewsets, filters
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from drf_spectacular.utils import extend_schema
|
||||
|
||||
@extend_schema(
|
||||
tags=["Product"],
|
||||
description="Seznam produktů, jejich vytváření a úprava. Produkty lze filtrovat a třídit dle názvu nebo kódu."
|
||||
)
|
||||
class ProductViewSet(viewsets.ModelViewSet):
|
||||
queryset = (
|
||||
Product.objects.all()
|
||||
.prefetch_related(
|
||||
models.Prefetch(
|
||||
'event_products',
|
||||
queryset=EventProduct.objects.select_related('event').all(),
|
||||
to_attr='event_products_all'
|
||||
)
|
||||
)
|
||||
.order_by("name")
|
||||
)
|
||||
serializer_class = ProductSerializer
|
||||
filter_backends = [DjangoFilterBackend, filters.OrderingFilter, filters.SearchFilter]
|
||||
filterset_fields = ["code"]
|
||||
ordering_fields = ["name", "code"]
|
||||
search_fields = ["name", "code", "event_products__event__name"]
|
||||
|
||||
permission_classes = [RoleAllowed("admin", "squareManager")]
|
||||
|
||||
|
||||
@extend_schema(
|
||||
tags=["EventProduct"],
|
||||
description="Propojení produktů s událostmi. Zde se nastavují data prodeje konkrétního produktu na konkrétní události."
|
||||
)
|
||||
class EventProductViewSet(viewsets.ModelViewSet):
|
||||
# queryset = EventProduct.objects.select_related("product", "event").all().order_by("start_selling_date")
|
||||
queryset = EventProduct.objects.select_related("product").order_by("start_selling_date")
|
||||
serializer_class = EventProductSerializer
|
||||
filter_backends = [DjangoFilterBackend, filters.OrderingFilter, filters.SearchFilter]
|
||||
filterset_fields = ["product", "event"]
|
||||
ordering_fields = ["start_selling_date", "end_selling_date"]
|
||||
search_fields = ["product__name", "event__name"]
|
||||
|
||||
permission_classes = [RoleAllowed("admin", "squareManager")]
|
||||
Reference in New Issue
Block a user