establishment carousel web and mobile api
This commit is contained in:
parent
fa183bfc92
commit
a5d5dc1335
|
|
@ -395,6 +395,7 @@ class Establishment(GalleryModelMixin, ProjectBaseMixin, URLImageMixin,
|
|||
verbose_name=_('Tag'))
|
||||
reviews = generic.GenericRelation(to='review.Review')
|
||||
comments = generic.GenericRelation(to='comment.Comment')
|
||||
carousels = generic.GenericRelation(to='main.Carousel')
|
||||
favorites = generic.GenericRelation(to='favorites.Favorites')
|
||||
currency = models.ForeignKey(Currency, blank=True, null=True, default=None,
|
||||
on_delete=models.PROTECT,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ from review.serializers import ReviewShortSerializer
|
|||
from tag.serializers import TagBaseSerializer
|
||||
from timetable.serialziers import ScheduleRUDSerializer
|
||||
from utils import exceptions as utils_exceptions
|
||||
from utils.serializers import ImageBaseSerializer
|
||||
from utils.serializers import ImageBaseSerializer, CarouselCreateSerializer
|
||||
from utils.serializers import (ProjectModelSerializer, TranslatedField,
|
||||
FavoritesCreateSerializer)
|
||||
|
||||
|
|
@ -426,6 +426,27 @@ class EstablishmentFavoritesCreateSerializer(FavoritesCreateSerializer):
|
|||
return super().create(validated_data)
|
||||
|
||||
|
||||
class EstablishmentCarouselCreateSerializer(CarouselCreateSerializer):
|
||||
"""Serializer to carousel object w/ model News."""
|
||||
|
||||
def validate(self, attrs):
|
||||
establishment = models.Establishment.objects.filter(slug=self.slug).first()
|
||||
if not establishment:
|
||||
raise serializers.ValidationError({'detail': _('Object not found.')})
|
||||
|
||||
if establishment.carousels.exists():
|
||||
raise utils_exceptions.CarouselError()
|
||||
|
||||
attrs['establishment'] = establishment
|
||||
return attrs
|
||||
|
||||
def create(self, validated_data, *args, **kwargs):
|
||||
validated_data.update({
|
||||
'content_object': validated_data.pop('establishment')
|
||||
})
|
||||
return super().create(validated_data)
|
||||
|
||||
|
||||
class CompanyBaseSerializer(serializers.ModelSerializer):
|
||||
"""Company base serializer"""
|
||||
phone_list = serializers.SerializerMethodField(source='phones', read_only=True)
|
||||
|
|
|
|||
|
|
@ -17,5 +17,7 @@ urlpatterns = [
|
|||
path('slug/<slug:slug>/comments/<int:comment_id>/', views.EstablishmentCommentRUDView.as_view(),
|
||||
name='rud-comment'),
|
||||
path('slug/<slug:slug>/favorites/', views.EstablishmentFavoritesCreateDestroyView.as_view(),
|
||||
name='create-destroy-favorites')
|
||||
name='create-destroy-favorites'),
|
||||
path('slug/<slug:slug>/carousels/', views.EstablishmentCarouselCreateDestroyView.as_view(),
|
||||
name='create-destroy-carousels')
|
||||
]
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ from comment.serializers import CommentRUDSerializer
|
|||
from establishment import filters, models, serializers
|
||||
from main import methods
|
||||
from utils.pagination import EstablishmentPortionPagination
|
||||
from utils.views import FavoritesCreateDestroyMixinView
|
||||
from utils.views import FavoritesCreateDestroyMixinView, CarouselCreateDestroyMixinView
|
||||
|
||||
|
||||
class EstablishmentMixinView:
|
||||
|
|
@ -34,7 +34,7 @@ class EstablishmentListView(EstablishmentMixinView, generics.ListAPIView):
|
|||
serializer_class = serializers.EstablishmentListRetrieveSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
return super().get_queryset().with_schedule()\
|
||||
return super().get_queryset().with_schedule() \
|
||||
.with_extended_address_related().with_currency_related()
|
||||
|
||||
|
||||
|
|
@ -105,9 +105,9 @@ class EstablishmentCommentListView(generics.ListAPIView):
|
|||
|
||||
establishment = get_object_or_404(models.Establishment, slug=self.kwargs['slug'])
|
||||
return comment_models.Comment.objects.by_content_type(app_label='establishment',
|
||||
model='establishment')\
|
||||
.by_object_id(object_id=establishment.pk)\
|
||||
.order_by('-created')
|
||||
model='establishment') \
|
||||
.by_object_id(object_id=establishment.pk) \
|
||||
.order_by('-created')
|
||||
|
||||
|
||||
class EstablishmentCommentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||
|
|
@ -139,6 +139,13 @@ class EstablishmentFavoritesCreateDestroyView(FavoritesCreateDestroyMixinView):
|
|||
serializer_class = serializers.EstablishmentFavoritesCreateSerializer
|
||||
|
||||
|
||||
class EstablishmentCarouselCreateDestroyView(CarouselCreateDestroyMixinView):
|
||||
"""View for create/destroy establishment from carousel."""
|
||||
|
||||
_model = models.Establishment
|
||||
serializer_class = serializers.EstablishmentCarouselCreateSerializer
|
||||
|
||||
|
||||
class EstablishmentNearestRetrieveView(EstablishmentListView, generics.ListAPIView):
|
||||
"""Resource for getting list of nearest establishments."""
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user