コード例 #1
0
def edit_article(request):
    body = convert_request_body_to_json(request)

    if is_invalid_create_article_request_body(body):
        return generate_invalid_req_body_error_message_response()

    name, stock_quantity, price, category_name = map_create_article(body)

    article = Article.objects.filter(name=name)
    if not article.exists():
        return generate_bad_req_body_error_message_response(
            EntityType.ARTICLE.value)

    if price != 0:
        article.update(price=price)

    if stock_quantity != 0:
        article.update(stock_quantity=stock_quantity)

    article = Article.objects.get(name=name, isDeleted=0)

    category_list = get_category_list_or_none(category_name)

    if category_list:
        for category in category_list:
            article.category.add(category)

    data = {"message": "Article updated successfully"}

    return Response(data=data)
コード例 #2
0
def create_article(request):
    body = convert_request_body_to_json(request)

    if is_invalid_create_article_request_body(body):
        return generate_invalid_req_body_error_message_response()

    name, stock_quantity, price, category_name = map_create_article(body)

    if object_exists_with_this_article(name):
        return generate_bad_req_body_error_message_response(
            EntityType.ARTICLE.value)

    article = Article.objects.create(name=name,
                                     stock_quantity=stock_quantity,
                                     price=price)

    article.save()

    category_list = get_category_list_or_none(category_name)

    # TODO: Optimize the following operation to minimize the db call
    if category_list:
        for category in category_list:
            article.category.add(category)

    return generate_success_message(EntityType.ARTICLE.value)
コード例 #3
0
def delete_category(request):
    body = convert_request_body_to_json(request)
    category_name, _ = map_create_category(body)

    category = Category.objects.filter(name=category_name, isDeleted=0)
    if category.exists():
        category.update(isDeleted=1)

        return generate_success_deletion_message(EntityType.CATEGORY.value)

    return generate_invalid_req_body_error_message_response()
コード例 #4
0
def delete_article(request):
    body = convert_request_body_to_json(request)

    name, stock_quantity, price, category_name = map_create_article(body)

    article = Article.objects.filter(name=name, isDeleted=0)
    if article.exists():
        article.update(isDeleted=1)

        return generate_success_deletion_message(EntityType.ARTICLE.value)

    return generate_invalid_req_body_error_message_response()
コード例 #5
0
def edit_category(request):
    body = convert_request_body_to_json(request)

    if is_invalid_edit_category_request_body(body):
        return generate_invalid_req_body_error_message_response()

    category_name, parent = map_create_category(body)

    try:
        category = Category.objects.get(name=category_name)
        parent_category, _ = Category.objects.get_or_create(name=parent)
        category.parent = parent_category
        category.save()

        return generate_success_edit_message(EntityType.CATEGORY.value)
    except Category.DoesNotExist:
        return generate_invalid_req_body_error_message_response()
コード例 #6
0
def create_category(request):
    body = convert_request_body_to_json(request)

    if is_invalid_create_category_request_body(body):
        return generate_invalid_req_body_error_message_response()

    category_name, parent = map_create_category(body)

    if object_exists_with_this_category(category_name):
        return generate_bad_req_body_error_message_response(
            EntityType.CATEGORY.value)

    if parent:
        parent_of_the_category = Category.objects.get(name=parent)
        category = Category.objects.create(name=category_name,
                                           parent=parent_of_the_category)
        category.save()

    else:
        category = Category.objects.create(name=category_name)
        category.save()

    return generate_success_message(EntityType.CATEGORY.value)
コード例 #7
0
def get_all_articles(request):
    body = convert_request_body_to_json(request)
    category_name, _ = map_create_category(body)
    page = request.GET.get('page', DEFAULT_PAGE_NUMBER)

    try:
        category = Category.objects.get(name=category_name, isDeleted=0)

        articles = Article.objects.filter(category=category,
                                          isDeleted=0).order_by('-price')

        paginator = Paginator(articles, PAGE_SIZE)

        try:
            articles_pages = paginator.page(page)
        except PageNotAnInteger:
            articles_pages = paginator.page(DEFAULT_PAGE_NUMBER)
        except EmptyPage:
            articles_pages = paginator.page(paginator.num_pages)

        return Response(data=get_paginated_articles(articles_pages))

    except Category.DoesNotExist:
        return generate_invalid_req_body_error_message_response()