GM-68: Реализовать метод возвращения списка избранного для пользователя
This commit is contained in:
parent
96ecdc69ca
commit
0647c46292
|
|
@ -125,22 +125,20 @@ class EstablishmentEmployeeSerializer(serializers.ModelSerializer):
|
|||
fields = ('id', 'name', 'position_translated', 'awards')
|
||||
|
||||
|
||||
class EstablishmentListSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for Establishment model."""
|
||||
|
||||
class EstablishmentBaseSerializer(serializers.ModelSerializer):
|
||||
"""Base serializer for Establishment model."""
|
||||
name_translated = serializers.CharField(allow_null=True)
|
||||
type = EstablishmentTypeSerializer(source='establishment_type')
|
||||
subtypes = EstablishmentSubTypeSerializer(many=True)
|
||||
address = AddressSerializer()
|
||||
tags = MetaDataContentSerializer(many=True)
|
||||
preview_image = serializers.SerializerMethodField()
|
||||
in_favorites = serializers.BooleanField()
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
|
||||
model = models.Establishment
|
||||
fields = (
|
||||
fields = [
|
||||
'id',
|
||||
'name_translated',
|
||||
'price_level',
|
||||
|
|
@ -151,8 +149,7 @@ class EstablishmentListSerializer(serializers.ModelSerializer):
|
|||
'preview_image',
|
||||
'address',
|
||||
'tags',
|
||||
'in_favorites',
|
||||
)
|
||||
]
|
||||
|
||||
def get_preview_image(self, obj):
|
||||
"""Get preview image"""
|
||||
|
|
@ -160,6 +157,20 @@ class EstablishmentListSerializer(serializers.ModelSerializer):
|
|||
thumbnail_key='establishment_preview')
|
||||
|
||||
|
||||
class EstablishmentListSerializer(EstablishmentBaseSerializer):
|
||||
"""Serializer for Establishment model."""
|
||||
# Annotated fields
|
||||
in_favorites = serializers.BooleanField(allow_null=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
|
||||
model = models.Establishment
|
||||
fields = EstablishmentBaseSerializer.Meta.fields + [
|
||||
'in_favorites',
|
||||
]
|
||||
|
||||
|
||||
class EstablishmentDetailSerializer(EstablishmentListSerializer):
|
||||
"""Serializer for Establishment model."""
|
||||
description_translated = serializers.CharField(allow_null=True)
|
||||
|
|
@ -184,7 +195,7 @@ class EstablishmentDetailSerializer(EstablishmentListSerializer):
|
|||
"""Meta class."""
|
||||
|
||||
model = models.Establishment
|
||||
fields = EstablishmentListSerializer.Meta.fields + (
|
||||
fields = EstablishmentListSerializer.Meta.fields + [
|
||||
'description_translated',
|
||||
'price_level',
|
||||
'image',
|
||||
|
|
@ -202,7 +213,7 @@ class EstablishmentDetailSerializer(EstablishmentListSerializer):
|
|||
'menu',
|
||||
'best_price_menu',
|
||||
'best_price_carte',
|
||||
)
|
||||
]
|
||||
|
||||
def get_review(self, obj):
|
||||
"""Serializer method for getting last published review"""
|
||||
|
|
|
|||
|
|
@ -1 +1,17 @@
|
|||
"""Serializers for app favorites."""
|
||||
from .models import Favorites
|
||||
from rest_framework import serializers
|
||||
from establishment.serializers import EstablishmentBaseSerializer
|
||||
|
||||
|
||||
class FavoritesEstablishmentListSerializer(serializers.ModelSerializer):
|
||||
"""Serializer for model Favorites"""
|
||||
detail = EstablishmentBaseSerializer(source='content_object')
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
model = Favorites
|
||||
fields = (
|
||||
'id',
|
||||
'detail',
|
||||
)
|
||||
|
|
|
|||
12
apps/favorites/urls.py
Normal file
12
apps/favorites/urls.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
"""Favorites urlpaths."""
|
||||
from django.urls import path
|
||||
from . import views
|
||||
|
||||
|
||||
app_name = 'favorites'
|
||||
|
||||
urlpatterns = [
|
||||
path('establishments/', views.FavoritesEstablishmentListView.as_view(),
|
||||
name='establishment-list'),
|
||||
path('remove/<int:pk>/', views.FavoritesDestroyView.as_view(), name='delete-favorites'),
|
||||
]
|
||||
25
apps/favorites/views.py
Normal file
25
apps/favorites/views.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
"""Views for app favorites."""
|
||||
from rest_framework import generics
|
||||
from .serializers import FavoritesEstablishmentListSerializer
|
||||
from .models import Favorites
|
||||
|
||||
|
||||
class FavoritesBaseView(generics.GenericAPIView):
|
||||
"""Base view for Favorites."""
|
||||
def get_queryset(self):
|
||||
"""Override get_queryset method."""
|
||||
return Favorites.objects.by_user(self.request.user)
|
||||
|
||||
|
||||
class FavoritesEstablishmentListView(FavoritesBaseView, generics.ListAPIView):
|
||||
"""List views for favorites"""
|
||||
serializer_class = FavoritesEstablishmentListSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
"""Override get_queryset method"""
|
||||
return super().get_queryset().by_content_type(app_label='establishment',
|
||||
model='establishment')
|
||||
|
||||
|
||||
class FavoritesDestroyView(FavoritesBaseView, generics.DestroyAPIView):
|
||||
"""Destroy view for favorites"""
|
||||
|
|
@ -29,4 +29,5 @@ urlpatterns = [
|
|||
path('main/', include('main.urls')),
|
||||
path('translation/', include('translation.urls')),
|
||||
path('comments/', include('comment.urls.web')),
|
||||
path('favorites/', include('favorites.urls')),
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user