from rest_framework import viewsets from rest_framework.response import Response from rest_framework.views import APIView from .models import Apartament, User from .serializer import (ApartamentListSerializer, ApartamentDetailSerializer) class ApartamentViewSet(viewsets.ReadOnlyModelViewSet): """Вывод списка квартир или отдельной квартиры""" def get_queryset(self): apartaments = Apartament.objects.all() print(apartaments) return apartaments def get_serializer_class(self): if self.action == 'list': return ApartamentListSerializer elif self.action == "retrieve": return ApartamentDetailSerializer # class ApartamentGetManyViewSet(viewsets.ViewSet): # def retrieve(self, request): # user_id = request.query_params.get("user_id", None) # получение id пользователя # apartaments = [] # apartaments_id = User.objects.get(pk=user_id).apartaments_for_comparison.split(',') # получение id квартир # for i in apartaments_id: # apartaments.append(ApartamentDetailSerializer(Apartament.objects.get(pk=i)).data) # return Response({'results': apartaments}) # def list(self, request): # pk = request.query_params.get("pk", None) # получение id пользователя # apartaments = [] # apartaments_id = User.objects.get(pk=pk).apartaments_for_comparison.split(',') # получение id квартир # TODO: доработать class ApartamentGetManyViewSet(viewsets.ReadOnlyModelViewSet): """Вывод отдельных квартир для сравнения""" def get_queryset(self): pk = self.request.query_params.get("pk", None) # получение id пользователя queryset = [] if self.action == "retrieve": # если для страницы сравнения apartaments_id = User.objects.get(pk=pk).apartaments_for_comparison.split(',') # получение id квартир elif self.action == "list": # если для страницы избранного apartaments_id = User.objects.get(pk=pk).favorites_apartaments.split(',') # получение id квартир for i in apartaments_id: queryset.append(Apartament.objects.get(pk=i)) return queryset serializer_class = ApartamentDetailSerializer # def retrieve(self, request, *args, **kwargs): # pk = request.query_params.get("pk", None) # получение id пользователя # apartaments = [] # print(f"pk: {pk}") # if request.query_params.get("page") == "comparison": # если для страницы сравнения # apartaments_id = User.objects.get(pk=pk).apartaments_for_comparison.split(',') # получение id квартир # elif request.query_params.get("page") == "favorites": # если для страницы избранного # apartaments_id = User.objects.get(pk=pk).favorites_apartaments.split(',') # получение id квартир # for i in apartaments_id: # apartaments.append(ApartamentDetailSerializer(Apartament.objects.get(pk=i)).data) # return Response({"results": apartaments}) # def retrieve(self, request, *args, **kwargs): # apartaments_id = request.COOKIES["apartament_comparison_id"].split(',') # получение куки пример (123,453) # apartaments = [] # for i in apartaments_id: # apartaments.append(ApartamentDetailSerializer(Apartament.objects.get(pk=i)).data) # return Response({"results": apartaments})