menu update/delete

This commit is contained in:
Kuroshini 2020-02-03 14:55:03 +03:00
parent b1b3e923b7
commit 084db83c92
2 changed files with 25 additions and 4 deletions

View File

@ -38,9 +38,10 @@ urlpatterns = [
path('menus/dishes/<int:pk>/gallery/<int:image_id>/', views.MenuGalleryCreateDestroyView.as_view(), path('menus/dishes/<int:pk>/gallery/<int:image_id>/', views.MenuGalleryCreateDestroyView.as_view(),
name='menu-dishes-gallery-create-destroy'), name='menu-dishes-gallery-create-destroy'),
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'), path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
path('menus/create/<int:establishment_id>/', views.CreateMenuForCertainEstablishmentView.as_view(), name='menu-list'), path('menus/create/<int:establishment_id>/', views.CreateMenuForCertainEstablishmentView.as_view(),
name='menu-list'),
path('card_and_wines/<int:establishment_id>/', views.CardAndWinesListView.as_view(), name='card-and-wines-get'), path('card_and_wines/<int:establishment_id>/', views.CardAndWinesListView.as_view(), name='card-and-wines-get'),
path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'), path('menus/<int:menu_id>/', views.MenuRUDView.as_view(), name='menu-rud'),
path('menus/dish/<int:establishment_id>/', views.DishCreateView.as_view(), name='create-dish'), path('menus/dish/<int:establishment_id>/', views.DishCreateView.as_view(), name='create-dish'),
path('menus/dish/change/<int:dish_id>/', views.DishUpdateDeleteView.as_view(), name='update-delete-dish'), path('menus/dish/change/<int:dish_id>/', views.DishUpdateDeleteView.as_view(), name='update-delete-dish'),
path('menus/wine/<int:establishment_id>/', views.EstablishmentWineView.as_view(), name='menu-wine'), path('menus/wine/<int:establishment_id>/', views.EstablishmentWineView.as_view(), name='menu-wine'),

View File

@ -241,15 +241,35 @@ class MenuListCreateView(generics.ListCreateAPIView):
return Response(response_data, status=status.HTTP_201_CREATED) return Response(response_data, status=status.HTTP_201_CREATED)
class MenuRUDView(generics.RetrieveUpdateDestroyAPIView): class MenuRUDView(generics.UpdateAPIView, generics.DestroyAPIView):
"""Menu RUD view.""" """Menu RUD view."""
serializer_class = serializers.MenuRUDSerializers serializer_class = serializers.MenuBackOfficeSerializer
queryset = models.Menu.objects.all() queryset = models.Menu.objects.all()
permission_classes = get_permission_classes( permission_classes = get_permission_classes(
IsEstablishmentManager, IsEstablishmentManager,
IsEstablishmentAdministrator, IsEstablishmentAdministrator,
) )
def get_object(self):
return get_object_or_404(klass=models.Menu, pk=self.kwargs['menu_id'])
def update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
data = request.data.copy()
data['establishment_id'] = instance.establishment.pk
serializer = self.get_serializer(instance, data=data, partial=partial)
serializer.is_valid(raise_exception=True)
with transaction.atomic():
self.perform_update(serializer)
if getattr(instance, '_prefetched_objects_cache', None):
# If 'prefetch_related' has been applied to a queryset, we need to
# forcibly invalidate the prefetch cache on the instance.
instance._prefetched_objects_cache = {}
return Response(serializer.data)
class MenuUploadsRUDView(generics.RetrieveDestroyAPIView): class MenuUploadsRUDView(generics.RetrieveDestroyAPIView):
"""Menu uploads RUD view.""" """Menu uploads RUD view."""