Ejemplo n.º 1
0
    def post(self, request, category_id=None, format=None):
        data = request.data.copy()
        data.pop('parent')
        parent = request.data['parent']
        if parent == '#':
            parent_category = None
            parent_path = ''
        else:
            parent_category = Category.objects.get(pk=parent)
            if parent_category.parent_path:
                parent_path = parent_category.parent_path + '/' + str(
                    parent_category.id)
            else:
                parent_path = str(parent_category.id)
        user = User(pk=request.user.id)
        category = Category(parent=parent_category,
                            user=user,
                            parent_path=parent_path)
        serializer = CategorySerializer(category, data=data)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 2
0
    def delete(self, request, category_id, format=None):
        category = self.get_object(request, category_id)
        nested_categories = self.get_nested_objects(request, category)
        errors = {}

        data = {'is_deleted': True}
        try:
            with transaction.atomic():
                for cat in nested_categories:
                    serializer = CategorySerializer(cat,
                                                    data=data,
                                                    partial=True)
                    if serializer.is_valid():
                        serializer.save()
                        # meals in deleted category marked as "deleted"
                        meals = Meal.objects.filter(category=cat)
                        for meal in meals:
                            meal_serializer = MealSerializer(meal,
                                                             data,
                                                             partial=True)
                            if meal_serializer.is_valid():
                                meal_serializer.save()
                            else:
                                errors = meal_serializer.errors
                                raise Exception('Serialize errors')

                    else:
                        errors = serializer.errors
                        raise Exception('Serialize errors')
        except Exception as exc:
            if errors:
                return Response(errors, status=status.HTTP_400_BAD_REQUEST)
            return Response(str(exc), status=status.HTTP_400_BAD_REQUEST)

        return Response(status=status.HTTP_204_NO_CONTENT)
Ejemplo n.º 3
0
def update_category(request, pk):
    """
    修改指定分类
    ---
        serializer: menu.serializers.CategorySerializer
        omit_serializer: false

        responseMessages:
            - code: 202
              message: Accepted
            - code: 404
              message: Not Found
            - code: 401
              message: Not authenticated
    """
    try:
        category = Category.objects.get(pk=pk)
    except Category.DoesNotExist:
        return Response('category not found', status=status.HTTP_404_NOT_FOUND)

    serializer = CategorySerializer(category, data=request.DATA, partial=True)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_202_ACCEPTED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 4
0
def update_category(request, pk):
    """
    修改指定分类
    ---
        serializer: menu.serializers.CategorySerializer
        omit_serializer: false

        responseMessages:
            - code: 202
              message: Accepted
            - code: 404
              message: Not Found
            - code: 401
              message: Not authenticated
    """
    try:
        category = Category.objects.get(pk=pk)
    except Category.DoesNotExist:
        return Response('category not found', status=status.HTTP_404_NOT_FOUND)

    serializer = CategorySerializer(category, data=request.DATA, partial=True)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_202_ACCEPTED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 5
0
    def put(self, request, category_id, format=None):
        category = self.get_object(request, category_id)
        serializer = CategorySerializer(category, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 6
0
def create_category(request):
    """
    创建分类
    ---
        serializer: menu.serializers.CategorySerializer
        omit_serializer: false

        responseMessages:
            - code: 201
              message: Created
            - code: 400
              message: Bad Request
            - code: 401
              message: Not authenticated
    """
    data = request.DATA.copy()
    serializer = CategorySerializer(data=data)
    if serializer.is_valid():
        category = serializer.save()
        category.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 7
0
def create_category(request):
    """
    创建分类
    ---
        serializer: menu.serializers.CategorySerializer
        omit_serializer: false

        responseMessages:
            - code: 201
              message: Created
            - code: 400
              message: Bad Request
            - code: 401
              message: Not authenticated
    """
    data = request.DATA.copy()
    serializer = CategorySerializer(data=data)
    if serializer.is_valid():
        category = serializer.save()
        category.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)