back carousel api and test

This commit is contained in:
alex 2019-11-25 15:00:53 +03:00
parent a660ffcc31
commit 17f67d020a
10 changed files with 18 additions and 38 deletions

View File

@ -485,7 +485,7 @@ class EstablishmentCarouselCreateSerializer(CarouselCreateSerializer):
"""Serializer to carousel object w/ model News."""
def validate(self, attrs):
establishment = models.Establishment.objects.filter(slug=self.slug).first()
establishment = models.Establishment.objects.filter(pk=self.pk).first()
if not establishment:
raise serializers.ValidationError({'detail': _('Object not found.')})

View File

@ -445,24 +445,13 @@ class EstablishmentWebFavoriteTests(ChildTestCase):
class EstablishmentCarouselTests(ChildTestCase):
def test_web_carousel_CR(self):
def test_back_carousel_CR(self):
data = {
"object_id": self.establishment.id
}
response = self.client.post(f'/api/web/establishments/slug/{self.establishment.slug}/carousels/', data=data)
response = self.client.post(f'/api/back/establishments/{self.establishment.id}/carousels/', data=data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
response = self.client.delete(f'/api/web/establishments/slug/{self.establishment.slug}/carousels/')
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
def test_mobile_carousel_CR(self):
data = {
"object_id": self.establishment.id
}
response = self.client.post(f'/api/mobile/establishments/slug/{self.establishment.slug}/carousels/', data=data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
response = self.client.delete(f'/api/mobile/establishments/slug/{self.establishment.slug}/carousels/')
response = self.client.delete(f'/api/back/establishments/{self.establishment.id}/carousels/')
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

View File

@ -9,6 +9,8 @@ app_name = 'establishment'
urlpatterns = [
path('', views.EstablishmentListCreateView.as_view(), name='list'),
path('<int:pk>/', views.EstablishmentRUDView.as_view(), name='detail'),
path('<int:pk>/carousels/', views.EstablishmentCarouselCreateDestroyView.as_view(),
name='create-destroy-carousels'),
path('<int:pk>/schedule/<int:schedule_id>/', views.EstablishmentScheduleRUDView.as_view(),
name='schedule-rud'),
path('<int:pk>/schedule/', views.EstablishmentScheduleCreateView.as_view(),

View File

@ -18,6 +18,4 @@ urlpatterns = [
name='rud-comment'),
path('slug/<slug:slug>/favorites/', views.EstablishmentFavoritesCreateDestroyView.as_view(),
name='create-destroy-favorites'),
path('slug/<slug:slug>/carousels/', views.EstablishmentCarouselCreateDestroyView.as_view(),
name='create-destroy-carousels')
]

View File

@ -275,7 +275,7 @@ class NewsCarouselCreateSerializer(CarouselCreateSerializer):
"""Serializer to carousel object w/ model News."""
def validate(self, attrs):
news = models.News.objects.filter(slug=self.slug).first()
news = models.News.objects.filter(pk=self.pk).first()
if not news:
raise serializers.ValidationError({'detail': _('Object not found.')})

View File

@ -132,24 +132,13 @@ class NewsTestCase(BaseTestCase):
class NewsCarouselTests(BaseTestCase):
def test_web_carousel_CR(self):
def test_back_carousel_CR(self):
data = {
"object_id": self.test_news.id
}
response = self.client.post(f'/api/web/news/slug/{self.test_news.slug}/carousels/', data=data)
response = self.client.post(f'/api/back/news/{self.test_news.id}/carousels/', data=data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
response = self.client.delete(f'/api/web/news/slug/{self.test_news.slug}/carousels/')
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
def test_mobile_carousel_CR(self):
data = {
"object_id": self.test_news.id
}
response = self.client.post(f'/api/mobile/news/slug/{self.test_news.slug}/carousels/', data=data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
response = self.client.delete(f'/api/mobile/news/slug/{self.test_news.slug}/carousels/')
response = self.client.delete(f'/api/back/news/{self.test_news.id}/carousels/')
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

View File

@ -13,6 +13,5 @@ urlpatterns = [
name='gallery-list'),
path('<int:pk>/gallery/<int:image_id>/', views.NewsBackOfficeGalleryCreateDestroyView.as_view(),
name='gallery-create-destroy'),
path('slug/<slug:slug>/carousels/', views.NewsCarouselCreateDestroyView.as_view(),
name='create-destroy-carousels'),
path('<int:pk>/carousels/', views.NewsCarouselCreateDestroyView.as_view(), name='create-destroy-carousels'),
]

View File

@ -7,6 +7,4 @@ common_urlpatterns = [
path('slug/<slug:slug>/', views.NewsDetailView.as_view(), name='rud'),
path('slug/<slug:slug>/favorites/', views.NewsFavoritesCreateDestroyView.as_view(),
name='create-destroy-favorites'),
path('slug/<slug:slug>/carousels/', views.NewsCarouselCreateDestroyView.as_view(),
name='create-destroy-carousels'),
]

View File

@ -115,8 +115,8 @@ class CarouselCreateSerializer(serializers.ModelSerializer):
return self.context.get('request')
@property
def slug(self):
return self.request.parser_context.get('kwargs').get('slug')
def pk(self):
return self.request.parser_context.get('kwargs').get('pk')
class RecursiveFieldSerializer(serializers.Serializer):

View File

@ -155,6 +155,11 @@ class FavoritesCreateDestroyMixinView(BaseCreateDestroyMixinView):
class CarouselCreateDestroyMixinView(BaseCreateDestroyMixinView):
"""Carousel Create Destroy mixin."""
lookup_field = 'id'
def get_base_object(self):
return get_object_or_404(self._model, id=self.kwargs['pk'])
def get_object(self):
"""
Returns the object the view is displaying.