Files
eggs-backend/core/apps/eggs/views/party.py
husanjon ab73d05ecc
Some checks failed
Build and Push to Docker Hub / build-test-push (push) Failing after 1m55s
gold eggs backend
2026-04-15 08:59:36 +02:00

46 lines
1.7 KiB
Python

"""
Party view
"""
from django.db.models import Q
from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from core.apps.eggs import models
from core.apps.eggs import serializers
from core.http.permissions import IsRole
class PartViewSet(viewsets.ModelViewSet):
queryset = models.Party.objects.all()
http_method_names = ["get", "post", "put", "patch", "delete"]
permission_classes = [IsAuthenticated, IsRole(["admin", "sklad", "courier"])]
def get_serializer_class(self):
if self.request.method == "GET":
return serializers.PartySerializer
else:
return serializers.PartyCreateSerializer
@action(detail=False, methods=["get"])
def search(self, request):
search_query = request.query_params.get("query", "")
results = self.queryset.filter(
Q(user_id__username__icontains=search_query)
| Q(count__icontains=search_query)
| Q(price__icontains=search_query)
| Q(sold__icontains=search_query)
| Q(sold_price__icontains=search_query)
| Q(invoices__name__icontains=search_query)
| Q(groups__product_id__name__icontains=search_query)
| Q(groups__entry_price__icontains=search_query)
| Q(groups__unit_price__icontains=search_query)
| Q(groups__wholesale_price__icontains=search_query)
| Q(groups__quantity__icontains=search_query)
| Q(groups__broken_eggs__icontains=search_query)
).distinct()
serializer = self.get_serializer(results, many=True)
return Response()