Merge branch 'fix/backoffice-slug-url' into 'develop'
Fix/backoffice slug url See merge request gm/gm-backend!169
This commit is contained in:
commit
29d05929ff
|
|
@ -232,9 +232,13 @@ class EstablishmentBackOfficeGallerySerializer(serializers.ModelSerializer):
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
"""Override validate method."""
|
"""Override validate method."""
|
||||||
establishment_pk = self.get_request_kwargs().get('pk')
|
establishment_pk = self.get_request_kwargs().get('pk')
|
||||||
|
establishment_slug = self.get_request_kwargs().get('slug')
|
||||||
|
|
||||||
|
search_kwargs = {'pk': establishment_pk} if establishment_pk else {'slug': establishment_slug}
|
||||||
|
|
||||||
image_id = self.get_request_kwargs().get('image_id')
|
image_id = self.get_request_kwargs().get('image_id')
|
||||||
|
|
||||||
establishment_qs = models.Establishment.objects.filter(pk=establishment_pk)
|
establishment_qs = models.Establishment.objects.filter(**search_kwargs)
|
||||||
image_qs = Image.objects.filter(id=image_id)
|
image_qs = Image.objects.filter(id=image_id)
|
||||||
|
|
||||||
if not establishment_qs.exists():
|
if not establishment_qs.exists():
|
||||||
|
|
|
||||||
|
|
@ -546,7 +546,9 @@ class EstablishmentCarouselCreateSerializer(CarouselCreateSerializer):
|
||||||
"""Serializer to carousel object w/ model News."""
|
"""Serializer to carousel object w/ model News."""
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
establishment = models.Establishment.objects.filter(pk=self.pk).first()
|
search_kwargs = {'pk': self.pk} if self.pk else {'slug': self.slug}
|
||||||
|
|
||||||
|
establishment = models.Establishment.objects.filter(**search_kwargs).first()
|
||||||
if not establishment:
|
if not establishment:
|
||||||
raise serializers.ValidationError({'detail': _('Object not found.')})
|
raise serializers.ValidationError({'detail': _('Object not found.')})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -104,18 +104,18 @@ class EstablishmentBTests(BaseTestCase):
|
||||||
response = self.client.post('/api/back/establishments/', data=data, format='json')
|
response = self.client.post('/api/back/establishments/', data=data, format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
|
||||||
response = self.client.get(f'/api/back/establishments/{self.establishment.id}/', format='json')
|
response = self.client.get(f'/api/back/establishments/slug/{self.establishment.slug}/', format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
update_data = {
|
update_data = {
|
||||||
'name': 'Test new establishment'
|
'name': 'Test new establishment'
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.patch(f'/api/back/establishments/{self.establishment.id}/',
|
response = self.client.patch(f'/api/back/establishments/slug/{self.establishment.slug}/',
|
||||||
data=update_data)
|
data=update_data)
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
response = self.client.delete(f'/api/back/establishments/{self.establishment.id}/',
|
response = self.client.delete(f'/api/back/establishments/slug/{self.establishment.slug}/',
|
||||||
format='json')
|
format='json')
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
@ -372,22 +372,22 @@ class EstablishmentShedulerTests(ChildTestCase):
|
||||||
'weekday': 1
|
'weekday': 1
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.post(f'/api/back/establishments/{self.establishment.id}/schedule/', data=data)
|
response = self.client.post(f'/api/back/establishments/slug/{self.establishment.slug}/schedule/', data=data)
|
||||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
schedule = response.data
|
schedule = response.data
|
||||||
|
|
||||||
response = self.client.get(f'/api/back/establishments/{self.establishment.id}/schedule/{schedule["id"]}/')
|
response = self.client.get(f'/api/back/establishments/slug/{self.establishment.slug}/schedule/{schedule["id"]}/')
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
update_data = {
|
update_data = {
|
||||||
'weekday': 2
|
'weekday': 2
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.patch(f'/api/back/establishments/{self.establishment.id}/schedule/{schedule["id"]}/',
|
response = self.client.patch(f'/api/back/establishments/slug/{self.establishment.slug}/schedule/{schedule["id"]}/',
|
||||||
data=update_data)
|
data=update_data)
|
||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
response = self.client.delete(f'/api/back/establishments/{self.establishment.id}/schedule/{schedule["id"]}/')
|
response = self.client.delete(f'/api/back/establishments/slug/{self.establishment.slug}/schedule/{schedule["id"]}/')
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -484,8 +484,8 @@ class EstablishmentCarouselTests(ChildTestCase):
|
||||||
"object_id": self.establishment.id
|
"object_id": self.establishment.id
|
||||||
}
|
}
|
||||||
|
|
||||||
response = self.client.post(f'/api/back/establishments/{self.establishment.id}/carousels/', data=data)
|
response = self.client.post(f'/api/back/establishments/slug/{self.establishment.slug}/carousels/', data=data)
|
||||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
|
||||||
response = self.client.delete(f'/api/back/establishments/{self.establishment.id}/carousels/')
|
response = self.client.delete(f'/api/back/establishments/slug/{self.establishment.slug}/carousels/')
|
||||||
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
|
||||||
|
|
|
||||||
|
|
@ -8,25 +8,25 @@ app_name = 'establishment'
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.EstablishmentListCreateView.as_view(), name='list'),
|
path('', views.EstablishmentListCreateView.as_view(), name='list'),
|
||||||
path('<int:pk>/', views.EstablishmentRUDView.as_view(), name='detail'),
|
path('slug/<slug:slug>/', views.EstablishmentRUDView.as_view(), name='detail'),
|
||||||
path('<int:pk>/carousels/', views.EstablishmentCarouselCreateDestroyView.as_view(),
|
path('slug/<slug:slug>/carousels/', views.EstablishmentCarouselCreateDestroyView.as_view(),
|
||||||
name='create-destroy-carousels'),
|
name='create-destroy-carousels'),
|
||||||
path('<int:pk>/schedule/<int:schedule_id>/', views.EstablishmentScheduleRUDView.as_view(),
|
path('slug/<slug:slug>/schedule/<int:schedule_id>/', views.EstablishmentScheduleRUDView.as_view(),
|
||||||
name='schedule-rud'),
|
name='schedule-rud'),
|
||||||
path('<int:pk>/schedule/', views.EstablishmentScheduleCreateView.as_view(),
|
path('slug/<slug:slug>/schedule/', views.EstablishmentScheduleCreateView.as_view(),
|
||||||
name='schedule-create'),
|
name='schedule-create'),
|
||||||
path('<int:pk>/gallery/', views.EstablishmentGalleryListView.as_view(),
|
path('slug/<slug:slug>/gallery/', views.EstablishmentGalleryListView.as_view(),
|
||||||
name='gallery-list'),
|
name='gallery-list'),
|
||||||
path('<int:pk>/gallery/<int:image_id>/',
|
path('slug/<slug:slug>/gallery/<int:image_id>/',
|
||||||
views.EstablishmentGalleryCreateDestroyView.as_view(),
|
views.EstablishmentGalleryCreateDestroyView.as_view(),
|
||||||
name='gallery-create-destroy'),
|
name='gallery-create-destroy'),
|
||||||
path('<int:pk>/companies/', views.EstablishmentCompanyListCreateView.as_view(),
|
path('slug/<slug:slug>/companies/', views.EstablishmentCompanyListCreateView.as_view(),
|
||||||
name='company-list-create'),
|
name='company-list-create'),
|
||||||
path('<int:pk>/companies/<int:company_pk>/', views.EstablishmentCompanyRUDView.as_view(),
|
path('slug/<slug:slug>/companies/<int:company_pk>/', views.EstablishmentCompanyRUDView.as_view(),
|
||||||
name='company-rud'),
|
name='company-rud'),
|
||||||
path('<int:pk>/notes/', views.EstablishmentNoteListCreateView.as_view(),
|
path('slug/<slug:slug>/notes/', views.EstablishmentNoteListCreateView.as_view(),
|
||||||
name='note-list-create'),
|
name='note-list-create'),
|
||||||
path('<int:pk>/notes/<int:note_pk>/', views.EstablishmentNoteRUDView.as_view(),
|
path('slug/<slug:slug>/notes/<int:note_pk>/', views.EstablishmentNoteRUDView.as_view(),
|
||||||
name='note-rud'),
|
name='note-rud'),
|
||||||
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
|
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
|
||||||
path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'),
|
path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'),
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ class EstablishmentListCreateView(EstablishmentMixinViews, generics.ListCreateAP
|
||||||
|
|
||||||
|
|
||||||
class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
lookup_field = 'slug'
|
||||||
queryset = models.Establishment.objects.all()
|
queryset = models.Establishment.objects.all()
|
||||||
serializer_class = serializers.EstablishmentRUDSerializer
|
serializer_class = serializers.EstablishmentRUDSerializer
|
||||||
permission_classes = [IsCountryAdmin | IsEstablishmentManager]
|
permission_classes = [IsCountryAdmin | IsEstablishmentManager]
|
||||||
|
|
@ -38,6 +39,7 @@ class EstablishmentRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
|
||||||
class EstablishmentScheduleRUDView(generics.RetrieveUpdateDestroyAPIView):
|
class EstablishmentScheduleRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""Establishment schedule RUD view"""
|
"""Establishment schedule RUD view"""
|
||||||
|
lookup_field = 'slug'
|
||||||
serializer_class = ScheduleRUDSerializer
|
serializer_class = ScheduleRUDSerializer
|
||||||
permission_classes = [IsEstablishmentManager]
|
permission_classes = [IsEstablishmentManager]
|
||||||
|
|
||||||
|
|
@ -45,11 +47,11 @@ class EstablishmentScheduleRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""
|
"""
|
||||||
Returns the object the view is displaying.
|
Returns the object the view is displaying.
|
||||||
"""
|
"""
|
||||||
establishment_pk = self.kwargs['pk']
|
establishment_slug = self.kwargs['slug']
|
||||||
schedule_id = self.kwargs['schedule_id']
|
schedule_id = self.kwargs['schedule_id']
|
||||||
|
|
||||||
establishment = get_object_or_404(klass=models.Establishment.objects.all(),
|
establishment = get_object_or_404(klass=models.Establishment.objects.all(),
|
||||||
pk=establishment_pk)
|
slug=establishment_slug)
|
||||||
schedule = get_object_or_404(klass=establishment.schedule,
|
schedule = get_object_or_404(klass=establishment.schedule,
|
||||||
id=schedule_id)
|
id=schedule_id)
|
||||||
|
|
||||||
|
|
@ -62,6 +64,7 @@ class EstablishmentScheduleRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
|
||||||
class EstablishmentScheduleCreateView(generics.CreateAPIView):
|
class EstablishmentScheduleCreateView(generics.CreateAPIView):
|
||||||
"""Establishment schedule Create view"""
|
"""Establishment schedule Create view"""
|
||||||
|
lookup_field = 'slug'
|
||||||
serializer_class = ScheduleCreateSerializer
|
serializer_class = ScheduleCreateSerializer
|
||||||
queryset = Timetable.objects.all()
|
queryset = Timetable.objects.all()
|
||||||
permission_classes = [IsEstablishmentManager]
|
permission_classes = [IsEstablishmentManager]
|
||||||
|
|
@ -210,6 +213,7 @@ class EstablishmentSubtypeRUDView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
class EstablishmentGalleryCreateDestroyView(EstablishmentMixinViews,
|
class EstablishmentGalleryCreateDestroyView(EstablishmentMixinViews,
|
||||||
CreateDestroyGalleryViewMixin):
|
CreateDestroyGalleryViewMixin):
|
||||||
"""Resource for a create|destroy gallery for establishment for back-office users."""
|
"""Resource for a create|destroy gallery for establishment for back-office users."""
|
||||||
|
lookup_field = 'slug'
|
||||||
serializer_class = serializers.EstablishmentBackOfficeGallerySerializer
|
serializer_class = serializers.EstablishmentBackOfficeGallerySerializer
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
|
|
@ -218,7 +222,7 @@ class EstablishmentGalleryCreateDestroyView(EstablishmentMixinViews,
|
||||||
"""
|
"""
|
||||||
establishment_qs = self.filter_queryset(self.get_queryset())
|
establishment_qs = self.filter_queryset(self.get_queryset())
|
||||||
|
|
||||||
establishment = get_object_or_404(establishment_qs, pk=self.kwargs.get('pk'))
|
establishment = get_object_or_404(establishment_qs, slug=self.kwargs.get('slug'))
|
||||||
gallery = get_object_or_404(establishment.establishment_gallery,
|
gallery = get_object_or_404(establishment.establishment_gallery,
|
||||||
image_id=self.kwargs.get('image_id'))
|
image_id=self.kwargs.get('image_id'))
|
||||||
|
|
||||||
|
|
@ -231,12 +235,13 @@ class EstablishmentGalleryCreateDestroyView(EstablishmentMixinViews,
|
||||||
class EstablishmentGalleryListView(EstablishmentMixinViews,
|
class EstablishmentGalleryListView(EstablishmentMixinViews,
|
||||||
generics.ListAPIView):
|
generics.ListAPIView):
|
||||||
"""Resource for returning gallery for establishment for back-office users."""
|
"""Resource for returning gallery for establishment for back-office users."""
|
||||||
|
lookup_field = 'slug'
|
||||||
serializer_class = serializers.ImageBaseSerializer
|
serializer_class = serializers.ImageBaseSerializer
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
"""Override get_object method."""
|
"""Override get_object method."""
|
||||||
qs = super(EstablishmentGalleryListView, self).get_queryset()
|
qs = super(EstablishmentGalleryListView, self).get_queryset()
|
||||||
establishment = get_object_or_404(qs, pk=self.kwargs.get('pk'))
|
establishment = get_object_or_404(qs, slug=self.kwargs.get('slug'))
|
||||||
|
|
||||||
# May raise a permission denied
|
# May raise a permission denied
|
||||||
self.check_object_permissions(self.request, establishment)
|
self.check_object_permissions(self.request, establishment)
|
||||||
|
|
@ -252,6 +257,7 @@ class EstablishmentCompanyListCreateView(EstablishmentMixinViews,
|
||||||
generics.ListCreateAPIView):
|
generics.ListCreateAPIView):
|
||||||
"""List|Create establishment company view."""
|
"""List|Create establishment company view."""
|
||||||
|
|
||||||
|
lookup_field = 'slug'
|
||||||
serializer_class = serializers.EstablishmentCompanyListCreateSerializer
|
serializer_class = serializers.EstablishmentCompanyListCreateSerializer
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
|
|
@ -259,7 +265,7 @@ class EstablishmentCompanyListCreateView(EstablishmentMixinViews,
|
||||||
establishment_qs = models.Establishment.objects.all()
|
establishment_qs = models.Establishment.objects.all()
|
||||||
filtered_ad_qs = self.filter_queryset(establishment_qs)
|
filtered_ad_qs = self.filter_queryset(establishment_qs)
|
||||||
|
|
||||||
establishment = get_object_or_404(filtered_ad_qs, pk=self.kwargs.get('pk'))
|
establishment = get_object_or_404(filtered_ad_qs, slug=self.kwargs.get('slug'))
|
||||||
|
|
||||||
# May raise a permission denied
|
# May raise a permission denied
|
||||||
self.check_object_permissions(self.request, establishment)
|
self.check_object_permissions(self.request, establishment)
|
||||||
|
|
@ -275,6 +281,7 @@ class EstablishmentCompanyRUDView(EstablishmentMixinViews,
|
||||||
generics.RetrieveUpdateDestroyAPIView):
|
generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""Create|Retrieve|Update|Destroy establishment company view."""
|
"""Create|Retrieve|Update|Destroy establishment company view."""
|
||||||
|
|
||||||
|
lookup_field = 'slug'
|
||||||
serializer_class = serializers.CompanyBaseSerializer
|
serializer_class = serializers.CompanyBaseSerializer
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
|
|
@ -282,7 +289,7 @@ class EstablishmentCompanyRUDView(EstablishmentMixinViews,
|
||||||
establishment_qs = models.Establishment.objects.all()
|
establishment_qs = models.Establishment.objects.all()
|
||||||
filtered_ad_qs = self.filter_queryset(establishment_qs)
|
filtered_ad_qs = self.filter_queryset(establishment_qs)
|
||||||
|
|
||||||
establishment = get_object_or_404(filtered_ad_qs, pk=self.kwargs.get('pk'))
|
establishment = get_object_or_404(filtered_ad_qs, slug=self.kwargs.get('slug'))
|
||||||
company = get_object_or_404(establishment.companies.all(), pk=self.kwargs.get('company_pk'))
|
company = get_object_or_404(establishment.companies.all(), pk=self.kwargs.get('company_pk'))
|
||||||
|
|
||||||
# May raise a permission denied
|
# May raise a permission denied
|
||||||
|
|
@ -295,6 +302,7 @@ class EstablishmentNoteListCreateView(EstablishmentMixinViews,
|
||||||
generics.ListCreateAPIView):
|
generics.ListCreateAPIView):
|
||||||
"""Retrieve|Update|Destroy establishment note view."""
|
"""Retrieve|Update|Destroy establishment note view."""
|
||||||
|
|
||||||
|
lookup_field = 'slug'
|
||||||
serializer_class = serializers.EstablishmentNoteListCreateSerializer
|
serializer_class = serializers.EstablishmentNoteListCreateSerializer
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
|
|
@ -302,7 +310,7 @@ class EstablishmentNoteListCreateView(EstablishmentMixinViews,
|
||||||
establishment_qs = models.Establishment.objects.all()
|
establishment_qs = models.Establishment.objects.all()
|
||||||
filtered_establishment_qs = self.filter_queryset(establishment_qs)
|
filtered_establishment_qs = self.filter_queryset(establishment_qs)
|
||||||
|
|
||||||
establishment = get_object_or_404(filtered_establishment_qs, pk=self.kwargs.get('pk'))
|
establishment = get_object_or_404(filtered_establishment_qs, slug=self.kwargs.get('slug'))
|
||||||
|
|
||||||
# May raise a permission denied
|
# May raise a permission denied
|
||||||
self.check_object_permissions(self.request, establishment)
|
self.check_object_permissions(self.request, establishment)
|
||||||
|
|
@ -318,6 +326,7 @@ class EstablishmentNoteRUDView(EstablishmentMixinViews,
|
||||||
generics.RetrieveUpdateDestroyAPIView):
|
generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""Create|Retrieve|Update|Destroy establishment note view."""
|
"""Create|Retrieve|Update|Destroy establishment note view."""
|
||||||
|
|
||||||
|
lookup_field = 'slug'
|
||||||
serializer_class = serializers.EstablishmentNoteBaseSerializer
|
serializer_class = serializers.EstablishmentNoteBaseSerializer
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
|
|
@ -325,7 +334,7 @@ class EstablishmentNoteRUDView(EstablishmentMixinViews,
|
||||||
establishment_qs = models.Establishment.objects.all()
|
establishment_qs = models.Establishment.objects.all()
|
||||||
filtered_establishment_qs = self.filter_queryset(establishment_qs)
|
filtered_establishment_qs = self.filter_queryset(establishment_qs)
|
||||||
|
|
||||||
establishment = get_object_or_404(filtered_establishment_qs, pk=self.kwargs.get('pk'))
|
establishment = get_object_or_404(filtered_establishment_qs, slug=self.kwargs.get('slug'))
|
||||||
note = get_object_or_404(establishment.notes.all(), pk=self.kwargs['note_pk'])
|
note = get_object_or_404(establishment.notes.all(), pk=self.kwargs['note_pk'])
|
||||||
|
|
||||||
# May raise a permission denied
|
# May raise a permission denied
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,7 @@ class EstablishmentFavoritesCreateDestroyView(FavoritesCreateDestroyMixinView):
|
||||||
class EstablishmentCarouselCreateDestroyView(CarouselCreateDestroyMixinView):
|
class EstablishmentCarouselCreateDestroyView(CarouselCreateDestroyMixinView):
|
||||||
"""View for create/destroy establishment from carousel."""
|
"""View for create/destroy establishment from carousel."""
|
||||||
|
|
||||||
|
lookup_field = 'slug'
|
||||||
_model = models.Establishment
|
_model = models.Establishment
|
||||||
serializer_class = serializers.EstablishmentCarouselCreateSerializer
|
serializer_class = serializers.EstablishmentCarouselCreateSerializer
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,14 @@ class ScheduleRUDSerializer(serializers.ModelSerializer):
|
||||||
.parser_context.get('view')\
|
.parser_context.get('view')\
|
||||||
.kwargs.get('pk')
|
.kwargs.get('pk')
|
||||||
|
|
||||||
|
establishment_slug = self.context.get('request')\
|
||||||
|
.parser_context.get('view')\
|
||||||
|
.kwargs.get('slug')
|
||||||
|
|
||||||
|
search_kwargs = {'pk': establishment_pk} if establishment_pk else {'slug': establishment_slug}
|
||||||
|
|
||||||
# Check if establishment exists.
|
# Check if establishment exists.
|
||||||
establishment_qs = Establishment.objects.filter(pk=establishment_pk)
|
establishment_qs = Establishment.objects.filter(**search_kwargs)
|
||||||
if not establishment_qs.exists():
|
if not establishment_qs.exists():
|
||||||
raise serializers.ValidationError({'detail': _('Establishment not found.')})
|
raise serializers.ValidationError({'detail': _('Establishment not found.')})
|
||||||
attrs['establishment'] = establishment_qs.first()
|
attrs['establishment'] = establishment_qs.first()
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,10 @@ class CarouselCreateSerializer(serializers.ModelSerializer):
|
||||||
def pk(self):
|
def pk(self):
|
||||||
return self.request.parser_context.get('kwargs').get('pk')
|
return self.request.parser_context.get('kwargs').get('pk')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def slug(self):
|
||||||
|
return self.request.parser_context.get('kwargs').get('slug')
|
||||||
|
|
||||||
|
|
||||||
class RecursiveFieldSerializer(serializers.Serializer):
|
class RecursiveFieldSerializer(serializers.Serializer):
|
||||||
def to_representation(self, value):
|
def to_representation(self, value):
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,11 @@ class CarouselCreateDestroyMixinView(BaseCreateDestroyMixinView):
|
||||||
lookup_field = 'id'
|
lookup_field = 'id'
|
||||||
|
|
||||||
def get_base_object(self):
|
def get_base_object(self):
|
||||||
return get_object_or_404(self._model, id=self.kwargs['pk'])
|
establishment_pk = self.kwargs.get('pk')
|
||||||
|
establishment_slug = self.kwargs.get('slug')
|
||||||
|
|
||||||
|
search_kwargs = {'id': establishment_pk} if establishment_pk else {'slug': establishment_slug}
|
||||||
|
return get_object_or_404(self._model, **search_kwargs)
|
||||||
|
|
||||||
def get_object(self):
|
def get_object(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user