Esempio n. 1
0
    def post(self, request, *args, **kwargs):
        id_value = request.POST.get('id_value')

        # 再注文のオーダーを取得
        same_order = Order.objects.filter(user=request.user, pk=id_value)

        # 再注文のオーダーからカートを登録
        error = []
        for order in same_order:
            for same_cart in order.cart.all():
                cart = Cart()
                cart.user = request.user
                error_flag = []

                # データベースの存在を確認(サイズ)
                if SizeItem.objects.filter(
                        title=same_cart.size_title).exists():
                    sizeitem = SizeItem.objects.get(title=same_cart.size_title)
                    cart.size_title = sizeitem.title
                    cart.size_price = sizeitem.price
                    cart.size_image = sizeitem.image
                else:
                    error_flag.append(same_cart.size_title)

                # データベースの存在を確認(フレーバー)
                if FlavorItem.objects.filter(title=same_cart.flavor_title,
                                             is_active=True).exists():
                    flavoritem = FlavorItem.objects.get(
                        title=same_cart.flavor_title)
                    cart.flavor_title = flavoritem.title
                    if sizeitem.title == 'シングルサイズ':
                        cart.flavor_price = flavoritem.price * 2
                    else:
                        cart.flavor_price = flavoritem.price
                    cart.flavor_image = flavoritem.image
                else:
                    error_flag.append(same_cart.flavor_title)

                # データベースの存在を確認(フレーバー2)
                if FlavorItem.objects.filter(title=same_cart.flavor2_title,
                                             is_active=True).exists():
                    flavoritem = FlavorItem.objects.get(
                        title=same_cart.flavor2_title)
                    cart.flavor2_title = flavoritem.title
                    cart.flavor2_price = flavoritem.price
                    cart.flavor2_image = flavoritem.image
                elif same_cart.flavor2_title == '':
                    cart.flavor2_title = ''
                else:
                    error_flag.append(same_cart.flavor2_title)

                # データベースの存在を確認(オプション)
                if OptionItem.objects.filter(
                        title=same_cart.option_title).exists():
                    optionitem = OptionItem.objects.get(
                        title=same_cart.option_title)
                    cart.option_title = optionitem.title
                    cart.option_price = optionitem.price
                    cart.option_image = optionitem.image
                elif same_cart.option_title == '':
                    cart.option_title = ''
                else:
                    error_flag.append(same_cart.option_title)

                # データベースの存在を確認(オプション2)
                if OptionItem.objects.filter(
                        title=same_cart.option2_title).exists():
                    optionitem = OptionItem.objects.get(
                        title=same_cart.option2_title)
                    cart.option2_title = optionitem.title
                    cart.option2_price = optionitem.price
                    cart.option2_image = optionitem.image
                elif same_cart.option2_title == '':
                    cart.option2_title = ''
                else:
                    error_flag.append(same_cart.option2_title)

                # データベースの存在を確認(オプション3)
                if OptionItem.objects.filter(
                        title=same_cart.option3_title).exists():
                    optionitem = OptionItem.objects.get(
                        title=same_cart.option3_title)
                    cart.option3_title = optionitem.title
                    cart.option3_price = optionitem.price
                    cart.option3_image = optionitem.image
                elif same_cart.option3_title == '':
                    cart.option3_title = ''
                else:
                    error_flag.append(same_cart.option3_title)

                # データベースの存在を確認(オプション4)
                if OptionItem.objects.filter(
                        title=same_cart.option4_title).exists():
                    optionitem = OptionItem.objects.get(
                        title=same_cart.option4_title)
                    cart.option4_title = optionitem.title
                    cart.option4_price = optionitem.price
                    cart.option4_image = optionitem.image
                elif same_cart.option4_title == '':
                    cart.option4_title = ''
                else:
                    error_flag.append(same_cart.option4_title)

                # データベースにすべてあればカートに登録
                if len(error_flag) == 0:
                    cart.save()
                else:
                    for flag in error_flag:
                        if not flag in error:
                            error.append(flag)

        return JsonResponse({'error': error})