favorites refactoring
This commit is contained in:
parent
e6144d8f33
commit
0f6786fb13
|
|
@ -9,6 +9,7 @@ from location.serializers import AddressSerializer
|
||||||
from main.serializers import MetaDataContentSerializer, AwardSerializer, CurrencySerializer
|
from main.serializers import MetaDataContentSerializer, AwardSerializer, CurrencySerializer
|
||||||
from review import models as review_models
|
from review import models as review_models
|
||||||
from timetable.models import Timetable
|
from timetable.models import Timetable
|
||||||
|
from utils import exceptions as utils_exceptions
|
||||||
|
|
||||||
|
|
||||||
class ContactPhonesSerializer(serializers.ModelSerializer):
|
class ContactPhonesSerializer(serializers.ModelSerializer):
|
||||||
|
|
@ -293,7 +294,7 @@ class EstablishmentFavoritesCreateSerializer(serializers.ModelSerializer):
|
||||||
if self.get_user().favorites.by_content_type(app_label='establishment',
|
if self.get_user().favorites.by_content_type(app_label='establishment',
|
||||||
model='establishment',
|
model='establishment',
|
||||||
object_id=establishment_id).exists():
|
object_id=establishment_id).exists():
|
||||||
raise serializers.ValidationError()
|
raise utils_exceptions.FavoritesError()
|
||||||
|
|
||||||
attrs['establishment'] = establishment_qs.first()
|
attrs['establishment'] = establishment_qs.first()
|
||||||
return attrs
|
return attrs
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,6 @@ urlpatterns = [
|
||||||
name='create-comment'),
|
name='create-comment'),
|
||||||
path('<int:pk>/comment/<int:comment_id>/', views.EstablishmentCommentRUDView.as_view(),
|
path('<int:pk>/comment/<int:comment_id>/', views.EstablishmentCommentRUDView.as_view(),
|
||||||
name='rud-comment'),
|
name='rud-comment'),
|
||||||
path('<int:pk>/favorites/', views.EstablishmentFavoritesCreateView.as_view()),
|
path('<int:pk>/favorites/add/', views.EstablishmentFavoritesCreateView.as_view()),
|
||||||
path('<int:pk>/favorites/<int:favorites_id>/', views.EstablishmentFavoritesDestroyView.as_view()),
|
path('<int:pk>/favorites/delete/', views.EstablishmentFavoritesDestroyView.as_view()),
|
||||||
]
|
]
|
||||||
|
|
@ -6,7 +6,6 @@ from rest_framework import generics, permissions
|
||||||
from comment import models as comment_models
|
from comment import models as comment_models
|
||||||
from establishment import filters
|
from establishment import filters
|
||||||
from establishment import models, serializers
|
from establishment import models, serializers
|
||||||
from favorites import models as favorites_models
|
|
||||||
from utils.views import JWTGenericViewMixin
|
from utils.views import JWTGenericViewMixin
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -83,7 +82,6 @@ class EstablishmentCommentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
class EstablishmentFavoritesCreateView(generics.CreateAPIView):
|
class EstablishmentFavoritesCreateView(generics.CreateAPIView):
|
||||||
"""View for adding establishment to favorites."""
|
"""View for adding establishment to favorites."""
|
||||||
serializer_class = serializers.EstablishmentFavoritesCreateSerializer
|
serializer_class = serializers.EstablishmentFavoritesCreateSerializer
|
||||||
queryset = favorites_models.Favorites.objects.all()
|
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentFavoritesDestroyView(generics.DestroyAPIView):
|
class EstablishmentFavoritesDestroyView(generics.DestroyAPIView):
|
||||||
|
|
@ -93,7 +91,7 @@ class EstablishmentFavoritesDestroyView(generics.DestroyAPIView):
|
||||||
"""
|
"""
|
||||||
Returns the object the view is displaying.
|
Returns the object the view is displaying.
|
||||||
"""
|
"""
|
||||||
lookup_url_kwargs = ('pk', 'favorites_id')
|
lookup_url_kwargs = ('pk',)
|
||||||
assert lookup_url_kwargs not in self.kwargs.keys(), (
|
assert lookup_url_kwargs not in self.kwargs.keys(), (
|
||||||
'Expected view %s to be called with a URL keyword argument '
|
'Expected view %s to be called with a URL keyword argument '
|
||||||
'named "%s". Fix your URL conf, or set the `.lookup_field` '
|
'named "%s". Fix your URL conf, or set the `.lookup_field` '
|
||||||
|
|
@ -102,10 +100,10 @@ class EstablishmentFavoritesDestroyView(generics.DestroyAPIView):
|
||||||
)
|
)
|
||||||
|
|
||||||
obj = get_object_or_404(
|
obj = get_object_or_404(
|
||||||
self.request.user.favorites.by_content_type(app_label='establishment',
|
self.request.user.favorites.by_user(user=self.request.user)
|
||||||
|
.by_content_type(app_label='establishment',
|
||||||
model='establishment',
|
model='establishment',
|
||||||
object_id=self.kwargs['pk'])
|
object_id=self.kwargs['pk']))
|
||||||
.filter(id=self.kwargs['favorites_id']))
|
|
||||||
# May raise a permission denied
|
# May raise a permission denied
|
||||||
self.check_object_permissions(self.request, obj)
|
self.check_object_permissions(self.request, obj)
|
||||||
return obj
|
return obj
|
||||||
|
|
|
||||||
|
|
@ -133,3 +133,12 @@ class WrongAuthCredentials(AuthErrorMixin):
|
||||||
The exception should be raised when credentials is not valid for this user
|
The exception should be raised when credentials is not valid for this user
|
||||||
"""
|
"""
|
||||||
default_detail = _('Wrong authorization credentials')
|
default_detail = _('Wrong authorization credentials')
|
||||||
|
|
||||||
|
|
||||||
|
class FavoritesError(exceptions.APIException):
|
||||||
|
"""
|
||||||
|
The exception should be thrown when you item that user
|
||||||
|
want add to favorites already exists.
|
||||||
|
"""
|
||||||
|
status_code = status.HTTP_400_BAD_REQUEST
|
||||||
|
default_detail = _('Item is already in favorites.')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user