From 17f67d020ab0436bda47621a190dafc841435a50 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 25 Nov 2019 15:00:53 +0300 Subject: [PATCH] back carousel api and test --- apps/establishment/serializers/common.py | 2 +- apps/establishment/tests.py | 17 +++-------------- apps/establishment/urls/back.py | 2 ++ apps/establishment/urls/common.py | 2 -- apps/news/serializers.py | 2 +- apps/news/tests.py | 17 +++-------------- apps/news/urls/back.py | 3 +-- apps/news/urls/common.py | 2 -- apps/utils/serializers.py | 4 ++-- apps/utils/views.py | 5 +++++ 10 files changed, 18 insertions(+), 38 deletions(-) diff --git a/apps/establishment/serializers/common.py b/apps/establishment/serializers/common.py index 9419c449..cb102ff1 100644 --- a/apps/establishment/serializers/common.py +++ b/apps/establishment/serializers/common.py @@ -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.')}) diff --git a/apps/establishment/tests.py b/apps/establishment/tests.py index 6d456a45..c2613d30 100644 --- a/apps/establishment/tests.py +++ b/apps/establishment/tests.py @@ -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) diff --git a/apps/establishment/urls/back.py b/apps/establishment/urls/back.py index a06adc3b..63bb286d 100644 --- a/apps/establishment/urls/back.py +++ b/apps/establishment/urls/back.py @@ -9,6 +9,8 @@ app_name = 'establishment' urlpatterns = [ path('', views.EstablishmentListCreateView.as_view(), name='list'), path('/', views.EstablishmentRUDView.as_view(), name='detail'), + path('/carousels/', views.EstablishmentCarouselCreateDestroyView.as_view(), + name='create-destroy-carousels'), path('/schedule//', views.EstablishmentScheduleRUDView.as_view(), name='schedule-rud'), path('/schedule/', views.EstablishmentScheduleCreateView.as_view(), diff --git a/apps/establishment/urls/common.py b/apps/establishment/urls/common.py index 3f46df90..e37c38f8 100644 --- a/apps/establishment/urls/common.py +++ b/apps/establishment/urls/common.py @@ -18,6 +18,4 @@ urlpatterns = [ name='rud-comment'), path('slug//favorites/', views.EstablishmentFavoritesCreateDestroyView.as_view(), name='create-destroy-favorites'), - path('slug//carousels/', views.EstablishmentCarouselCreateDestroyView.as_view(), - name='create-destroy-carousels') ] diff --git a/apps/news/serializers.py b/apps/news/serializers.py index f58e7c24..cc5087f6 100644 --- a/apps/news/serializers.py +++ b/apps/news/serializers.py @@ -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.')}) diff --git a/apps/news/tests.py b/apps/news/tests.py index a87e457a..1754c15f 100644 --- a/apps/news/tests.py +++ b/apps/news/tests.py @@ -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) diff --git a/apps/news/urls/back.py b/apps/news/urls/back.py index 9126b3e9..982e7810 100644 --- a/apps/news/urls/back.py +++ b/apps/news/urls/back.py @@ -13,6 +13,5 @@ urlpatterns = [ name='gallery-list'), path('/gallery//', views.NewsBackOfficeGalleryCreateDestroyView.as_view(), name='gallery-create-destroy'), - path('slug//carousels/', views.NewsCarouselCreateDestroyView.as_view(), - name='create-destroy-carousels'), + path('/carousels/', views.NewsCarouselCreateDestroyView.as_view(), name='create-destroy-carousels'), ] diff --git a/apps/news/urls/common.py b/apps/news/urls/common.py index e2aae7a1..f5c809de 100644 --- a/apps/news/urls/common.py +++ b/apps/news/urls/common.py @@ -7,6 +7,4 @@ common_urlpatterns = [ path('slug//', views.NewsDetailView.as_view(), name='rud'), path('slug//favorites/', views.NewsFavoritesCreateDestroyView.as_view(), name='create-destroy-favorites'), - path('slug//carousels/', views.NewsCarouselCreateDestroyView.as_view(), - name='create-destroy-carousels'), ] diff --git a/apps/utils/serializers.py b/apps/utils/serializers.py index 634246b7..f55b69bc 100644 --- a/apps/utils/serializers.py +++ b/apps/utils/serializers.py @@ -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): diff --git a/apps/utils/views.py b/apps/utils/views.py index 8becc9ea..478a3cb2 100644 --- a/apps/utils/views.py +++ b/apps/utils/views.py @@ -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.