2023-05-03 11:56:13 +02:00
|
|
|
from rest_framework import viewsets
|
2023-05-07 11:48:53 +02:00
|
|
|
from rest_framework.response import Response
|
|
|
|
from rest_framework.views import APIView
|
2023-04-10 09:34:57 +02:00
|
|
|
|
2023-05-09 10:32:18 +02:00
|
|
|
from .models import Apartament, User
|
2023-05-03 11:56:13 +02:00
|
|
|
from .serializer import (ApartamentListSerializer,
|
|
|
|
ApartamentDetailSerializer)
|
2023-05-01 12:39:34 +02:00
|
|
|
|
|
|
|
|
2023-05-03 11:56:13 +02:00
|
|
|
class ApartamentViewSet(viewsets.ReadOnlyModelViewSet):
|
|
|
|
"""Вывод списка квартир или отдельной квартиры"""
|
2023-05-01 12:39:34 +02:00
|
|
|
|
2023-05-03 11:56:13 +02:00
|
|
|
def get_queryset(self):
|
2023-05-01 12:39:34 +02:00
|
|
|
apartaments = Apartament.objects.all()
|
2023-05-07 12:42:06 +02:00
|
|
|
print(apartaments)
|
2023-05-03 11:56:13 +02:00
|
|
|
return apartaments
|
|
|
|
|
|
|
|
def get_serializer_class(self):
|
|
|
|
if self.action == 'list':
|
|
|
|
return ApartamentListSerializer
|
|
|
|
elif self.action == "retrieve":
|
2023-05-07 11:48:53 +02:00
|
|
|
return ApartamentDetailSerializer
|
|
|
|
|
|
|
|
|
2023-05-09 10:32:18 +02:00
|
|
|
# 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):
|
2023-05-07 11:48:53 +02:00
|
|
|
"""Вывод отдельных квартир для сравнения"""
|
2023-05-09 10:32:18 +02:00
|
|
|
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 квартир
|
|
|
|
|
2023-05-07 11:48:53 +02:00
|
|
|
for i in apartaments_id:
|
2023-05-09 10:32:18 +02:00
|
|
|
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})
|