class AddCategory(CreateAPIView): permission_classes = (PlaceAdmin, RestaurantAdmin) def __init__(self): self._menu = MenuService() @method_decorator(csrf_protect) def post(self, request, restaurant_id): serializer = CategoryCreateSerializer(data=request.data) if not serializer.is_valid(): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) self._menu.create_category(**serializer.validated_data) return Response(status=status.HTTP_201_CREATED)
class GetMenu(ListAPIView): ''' Get a restaurant's menu ''' permission_classes = (permissions.AllowAny, ) def __init__(self): self._menu = MenuService() decorators = [cache_page(settings.ONE_DAY), ensure_csrf_cookie] @method_decorator(cache_page(settings.ONE_DAY)) def get(self, request, name): menu = self._menu.get_menu(name) serializer = RestaurantCategoryResponseSerializer(menu, many=True) return Response(serializer.data) def get_queryset(self): return self._menu.get_queryset()
class GetMenuItemOptions(ListAPIView): ''' Get the options of a menu item. Typically called after GetMenu. ''' permission_classes = (permissions.AllowAny, ) def __init__(self): self._menu = MenuService() def get_queryset(self): return self._menu.get_queryset() #@method_decorator(cache_page(settings.ONE_DAY)) def get(self, request, restaurant: str, menu_item: str): options = self._menu.get_options(restaurant, menu_item) serializer = MenuItemOptionResponseSerializer(options, many=True) return Response(serializer.data)
class AddMenuItem(CreateAPIView): permission_classes = (PlaceAdmin, ) def __init__(self): self._menu = MenuService() @method_decorator(csrf_protect) def post(self, request): serializer = MenuItemCreateSerializer(data=request.data) if not serializer.is_valid(): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) newid = self._menu.create_menu_item(**serializer.validated_data) if newid == -99: return INTERNAL_SERVER_ERROR( 'Could not save the app menu item. Please try again later.') return OK(newid)
def __init__(self): self._menu = MenuService()