Exemplo n.º 1
0
def checkout(request):
    if request.method == "POST":

        cart_items = get_cart_items(request)

        for item in cart_items:
            menu = item.menu
            size = item.size
            style = item.style
            additional = item.additional
            is_special = item.is_special
            price = item.price
            user_id = item.user_id
            order = OrderItem(menu=menu,
                              size=size,
                              style=style,
                              additional=additional,
                              is_special=is_special,
                              price=price,
                              user_id=user_id)
            order.save()
            item.delete()

        all_order_items = OrderItem.objects.order_by('is_complete',
                                                     'created_at')

        user_order_items = all_order_items.filter(user_id=request.user.id)
        cart_items = get_cart_items(request)

        context = {
            'cart_items': cart_items,
            'all_order_items': all_order_items,
            'user_order_items': user_order_items,
            'num_cart_items': cart_items.count(),
        }

        return render(request, 'cart/checkout.html', context)
    else:
        all_order_items = OrderItem.objects.order_by('is_complete',
                                                     'created_at')

        user_order_items = all_order_items.filter(user_id=request.user.id)
        cart_items = get_cart_items(request)

        context = {
            'cart_items': cart_items,
            'all_order_items': all_order_items,
            'user_order_items': user_order_items,
            'num_cart_items': cart_items.count(),
        }

        return render(request, 'cart/checkout.html', context)
Exemplo n.º 2
0
 def setUp(self):
     self.user = {
         'username': '******',
         'email': '*****@*****.**',
         'password': '******'
     }
     self.user2 = {
         'username': '******',
         'email': '*****@*****.**',
         'password': '******'
     }
     User.objects.create_user(**self.user)
     User.objects.create_user(**self.user2)
     user = User.objects.all().first()
     Competition(is_active=True,
                 question="Is this a test?",
                 answer_1="Yes",
                 answer_2="No",
                 answer_3="Maybe",
                 correct_answer="Yes").save()
     category = Categories.objects.create(category="Exterior")
     man = Manufacturer.objects.create(name="Test Manu")
     Product.objects.create(slug="test-slug",
                            name="Test Product",
                            description="Description",
                            img="media/default.jpg",
                            category=category,
                            ticket_price="2.50",
                            product_price="795",
                            product_link="https://www.github.com",
                            part_manufacturer=man)
     product = Product.objects.all().first()
     OrderItem(user=user, product=product, is_paid=False, quantity=5).save()
Exemplo n.º 3
0
def confirm(request):
    # create the order for the orderID - userID table
    newrow = Order(user=request.user,
                   orderDate=timezone.now(),
                   firstName=request.session["contactinfo"]["name"],
                   lastName=request.session["contactinfo"]["name"],
                   streetName=request.session["contactinfo"]["street_name"],
                   houseNumber=request.session["contactinfo"]["house_number"],
                   zipCode=request.session["contactinfo"]["zip"],
                   city=request.session["contactinfo"]["city"],
                   country=request.session["contactinfo"]["country"])
    newrow.save()
    order_id = newrow.id

    #create an OrderItem with all the information for an order
    cart_list = Cart.objects.filter(user=request.user)  # list of Carts
    order = Order.objects.get(id=order_id)
    for cart in cart_list:
        newrow = OrderItem(
            order=order, product=cart.product,
            quantity=cart.quantity)  # how to do quantity big brain plz
        newrow.save()

    #clear the cart
    for data in cart_list:
        data.delete()

    #clear the user contact and payment data from sessions
    request.session.pop('contactinfo')
    request.session.pop('paymentinfo')
    return render(request, 'checkout/confirm.html')
Exemplo n.º 4
0
    def test_product_id_in_order_item(self):

        product = Product(id=99, title="Test Product")
        order = Order(id=42, full_name="John Wayne")
        order_item = OrderItem(order=order, product=product, quantity=3)

        self.assertEqual(order_item.product.id, 99)
Exemplo n.º 5
0
    def test_order_id_on_order_item(self):

        product = Product(title="Test Product")
        order = Order(id=42, full_name="John Wayne")
        order_item = OrderItem(order=order, product=product, quantity=3)

        self.assertEqual(order_item.order.id, 42)
Exemplo n.º 6
0
    def test_product_id_in_order_item(self):
        """ Test that OrderItem model correctly stores the id of its related Product instance """

        product = Product(id=99, title="Test Mouse")
        order = Order(id=42, full_name="Arthur Dent")
        order_item = OrderItem(order=order, product=product, quantity=3)

        self.assertEqual(order_item.product.id, 99)
Exemplo n.º 7
0
    def test_order_id_on_order_item(self):
        """ Test that OrderItem model correctly stores the Id of is related Order instance """

        product = Product(title="Test Mouse")
        order = Order(id=42, full_name="Arthur Dent")
        order_item = OrderItem(order=order, product=product, quantity=3)

        self.assertEqual(order_item.order.id, 42)
Exemplo n.º 8
0
    def test_string_representation(self):

        product = Product(title="Test Product")
        order = Order(full_name="John Wayne")
        order_item = OrderItem(order=order, product=product, quantity=3)

        expected_result = '3 x Test Product'

        self.assertEqual(str(order_item), expected_result)
Exemplo n.º 9
0
    def test_string_representation(self):
        """ Test that model returns correctly formatted string """

        product = Product(title="Test Mouse")
        order = Order(full_name="Arthur Dent")
        order_item = OrderItem(order=order, product=product, quantity=3)

        expected_result = '3 x Test Mouse'

        self.assertEqual(str(order_item), expected_result)
Exemplo n.º 10
0
def checkout(request):
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            new_form = form.save(commit=False)
            new_form.user = request.user
            new_form.status = "Started"
            form = new_form
            form.save()
            cart_items = UserCart.objects.filter(user=request.user)
            for item in cart_items:
                i = OrderItem(order=form,
                              bike=item.bike,
                              quantity=item.quantity)
                i.save()
                item.delete()
    context = {
        # "form": form,
        # "forms": forms
    }
    return render(request, 'cart/checkout.html', context)
Exemplo n.º 11
0
 def setUp(self):
     """Set database for tests"""
     self.user = {
         'username': '******',
         'email': '*****@*****.**',
         'password': '******'
     }
     User.objects.create_user(**self.user)
     Competition.objects.create(is_active=True, next_competition=False)
     category = Categories(category="Exterior")
     category.save()
     manufacturer = Manufacturer(name="Eibach")
     manufacturer.save()
     product = Product(name="Test Product",
                       description="Description",
                       img="",
                       category=category,
                       ticket_price="2.50",
                       product_price="795",
                       product_link="https://www.github.com",
                       part_manufacturer=manufacturer)
     product.save()
     user = User.objects.get(username='******')
     OrderItem(user=user, product=product, is_paid=True, quantity=5).save()
Exemplo n.º 12
0
def checkout(request):
    context = {}
    if request.user.is_authenticated == False:
        return reverse(request, 'account/login.html', context)
    try:
        this_cart = Cart.objects.get(user=request.user)
    except:
        return redirect('/cart')
    if this_cart.item_set.all() is None:
        form = forms.ShippingForm
        msg = "Your cart is empty"
        form.add_error(None, msg)
        return render(request, 'cart/checkout.html', context)
    user = request.user
    baskets = []
    items = this_cart.item_set.all()
    if request.method == 'POST':
        form = cart.forms.ShippingForm(request.POST)
        if form.is_valid():
            try:
                shipaddr = form.cleaned_data[
                    'street_address'] + ", " + form.cleaned_data['postcode']
                for item in items:
                    total = 0
                    for basket in baskets:
                        if (basket.seller != item.seller):
                            total += 1
                        else:
                            thisBasket = basket
                    if (total == len(baskets)):
                        thisBasket = Basket(seller=item.product.seller,
                                            buyer=user,
                                            time=datetime.datetime.now(),
                                            shipping_to=shipaddr)
                        thisBasket.save()
                        baskets.append(thisBasket)
                    orderItem = OrderItem(product_string=item.__str__(),
                                          unit_price=item.unit_price,
                                          product=item.product,
                                          buyer=user,
                                          seller=item.product.seller,
                                          basket=thisBasket,
                                          quantity=item.quantity,
                                          shipping_to=shipaddr)
                    orderItem.save()
                    product = item.product
                    if product.stock > item.quantity:
                        product.stock -= item.quantity
                    else:
                        Product.objects.filter(pk=product.pk).update(stock=0)
                    item.delete()
                this_cart.delete()
            except:
                print('except')
                return HttpResponse("Please try again")
            return render(request, 'cart/checkoutsuccess.html', context)

        else:
            print('form is invalid')
            form = cart.forms.ShippingForm
            context['form'] = form
            return render(request, 'cart/checkout.html', context)
    else:
        form = cart.forms.ShippingForm
        context['form'] = form
        return render(request, 'cart/checkout.html', context)