Пример #1
0
def checkout(request):
    """ Here the """

    if request.method == 'POST':

        form = PizzaForm(request.POST)

        if form.is_valid():
            #form.save()
            messages.success(request, f'Your order was placed!')
            return redirect('index')
    else:
        return render(request, "orders/checkout.html")
Пример #2
0
def index(request):
    """ Homepage where users can view the menu and add items to a virtual cart """

    dinnerPlatterForm = DinnerPlatterForm(auto_id="platter_%s")
    pastaForm = PastaForm(auto_id="pasta_%s")
    pizzaForm = PizzaForm(auto_id="pizza_%s")
    saladForm = SaladForm(auto_id="salad_%s")
    subForm = SubForm(auto_id="sub_%s")

    context = {
        "pizzas": Pizza.objects.all(),
        "toppings": Topping.objects.all(),
        "subs": Sub.objects.all(),
        "subExtras": SubExtra.objects.all(),
        "pastas": Pasta.objects.all(),
        "platters": DinnerPlatter.objects.all(),
        "salads": Salad.objects.all(),
        "dinnerPlatterForm": dinnerPlatterForm,
        "pastaForm": pastaForm,
        "pizzaForm": pizzaForm,
        "saladForm": saladForm,
        "subForm": subForm
    }

    return render(request, "orders/index.html", context)
Пример #3
0
def checkout(request):
    """ Login Page """

    if request.method == 'POST':

        form = PizzaForm(request.POST)

        if form.is_valid():
            messages.success(request, f'Your order was placed!')
            return redirect('index')
    elif request.method == 'GET':
        # Get the user's cart
        cart = Cart.objects.filter(username=User.objects.get(
            username=request.user.username)).first()

        if cart is not None:
            platterCost = cart.dinnerPlatters.aggregate(
                Sum('price'))['price__sum'] or 0
            saladCost = cart.salads.aggregate(Sum('price'))['price__sum'] or 0
            subCost = cart.subs.aggregate(Sum('price'))['price__sum'] or 0
            pastaCost = cart.pastas.aggregate(Sum('price'))['price__sum'] or 0
            pizzaCost = cart.pizzas.aggregate(Sum('price'))['price__sum'] or 0

            context = {
                'dinnerPlatters':
                cart.dinnerPlatters.all(),
                'salads':
                cart.salads.all(),
                'subs':
                cart.subs.all(),
                'pastas':
                cart.pastas.all(),
                'pizzas':
                cart.pizzas.all(),
                'total':
                str(
                    round(
                        platterCost + saladCost + subCost + pastaCost +
                        pizzaCost, 2))
            }

            return render(request, "orders/checkout.html", context)
        else:
            return redirect('index')
    else:
        return render(request, "orders/checkout.html")
Пример #4
0
def add_pizza_cart(request):
    if request.method == "POST":
        form = PizzaForm(request.POST)
        if form.is_valid():
            style = form.cleaned_data['style']
            size = form.cleaned_data['size']
            extras = form.cleaned_data['extras']
            toppings = form.cleaned_data['toppings']
            quantity = form.cleaned_data['quantity']
            ntoppings = len(toppings)

            # Checks if the style of the pizza corresponds the style
            if is_pizza_valid(extras, toppings):
                pizza = PizzaPrice.objects.filter(type=style, style=extras, size=size)[0]
                item = Item.objects.create(name=str(pizza), price=pizza.price)
                my_cart = retrieveCart(request)
                createEntry(item, my_cart, quantity)
                return HttpResponseRedirect(reverse("index"))
            else:
                return render(request, "orders/error.html", {"message":"MEC"})
Пример #5
0
def index(request):

    form = PizzaForm()
    
    context = {
        "salads": Salad.objects.all(),
        "pastas": Pasta.objects.all(),
        "dinnerplatters": DinnerPlatter.objects.all(),
        "subs": Sub.objects.all(),
        "form": form
    }
    return render(request, "orders/index.html", context)
Пример #6
0
def index(request):
    """ Homepage where users can view the menu and add items to a virtual cart """

    form = PizzaForm()

    context = {
        "pizzas": Pizza.objects.all(),
        "toppings": Topping.objects.all(),
        "subs": Sub.objects.all(),
        "subExtras": SubExtra.objects.all(),
        "pastas": Pasta.objects.all(),
        "platters": DinnerPlatter.objects.all(),
        "salads": Salad.objects.all(),
        "form": form
    }

    return render(request, "orders/index.html", context)
Пример #7
0
def index(request):
    if request.method == "POST":
        return render(request, "orders/error.html",{"message":"POST request method not allowed"})
    if request.user.is_authenticated:
        form = PizzaForm()
        sub_form = SubForm()
        my_cart, created = Cart.objects.get_or_create(user_id=request.user.id)
        context = {
            "pizzas":Pizza.objects.all(),
            "pastas":Pasta.objects.all(),
            "platters":DinnerPlatter.objects.all(),
            "subs":Sub.objects.all(),
            "salads":Salad.objects.all(),
            "extrasubs":SubExtra.objects.all(),
            "form":form,
            "sub_form":sub_form,
            "user":request.user,
            "cart":my_cart,
            "entries":Entry.objects.filter(cart=my_cart),

        }
        return render(request, "orders/index.html", context)
    else:
        return HttpResponseRedirect(reverse("login"))
Пример #8
0
def cart(request):
    if request.method == "POST":
        if request.POST['menu_item'] == 'Pizza':
            form = PizzaForm(request.POST)

            if form.is_valid():
                form = form.cleaned_data
                # Get the form data to build a Pizza and CartItem
                menu = "Pizza"
                style = form['style']
                size = form['size']
                is_special = False
                if 'is_special' in request.POST:
                    is_special = True
                num_toppings = form['num_toppings']
                topping_list = []
                for topping in form['toppings']:
                    topping_list.append(str(topping))
                toppings = ", ".join(topping_list)

                # Lookup price
                if is_special:
                    # numtoppings doesn't matter
                    menu_pizza = Pizza.objects.get(style=style,
                                                   size=size,
                                                   is_special=is_special)
                else:
                    menu_pizza = Pizza.objects.get(style=style,
                                                   size=size,
                                                   num_toppings=num_toppings,
                                                   is_special=is_special)
                price = menu_pizza.price
                print(price)

                # Create the Cart Item
                order = CartItem(menu=menu,
                                 size=size,
                                 style=style,
                                 additional=toppings,
                                 is_special=is_special,
                                 user_id=request.user.id,
                                 price=price)
                order.save()

        elif request.POST['menu_item'] == 'Sub':
            form = SubForm(request.POST)
            if form.is_valid():
                form = form.cleaned_data
                menu = 'Sub'
                ingredients = form['ingredients']
                size = form['size']
                extras_list = []
                added_cost = Decimal(0.00)
                for extra in form['extras']:
                    extras_list.append(str(extra))
                    added_cost += extra.added_cost

                extras = ", ".join(extras_list)

                # Lookup price
                menu_sub = Sub.objects.get(ingredients=ingredients, size=size)
                price = menu_sub.price + Decimal(added_cost)

                # Create the Cart Item
                order = CartItem(menu=menu,
                                 size=size,
                                 style=ingredients,
                                 additional=extras,
                                 is_special=False,
                                 user_id=request.user.id,
                                 price=price)
                order.save()

            redirect('index')
        elif request.POST['menu_item'] == 'Pasta':
            form = PastaForm(request.POST)
            if form.is_valid():
                form = form.cleaned_data
                menu = 'Pasta'
                style = form['style']

                # Lookup price
                menu_pasta = Pasta.objects.get(style=style)
                price = menu_pasta.price

                # Create the Cart Item
                order = CartItem(menu=menu,
                                 style=style,
                                 user_id=request.user.id,
                                 price=price)
                order.save()
        elif request.POST['menu_item'] == 'Salad':
            form = SaladForm(request.POST)
            if form.is_valid():
                form = form.cleaned_data
                menu = 'Salad'
                style = form['style']

                # Lookup price
                menu_salad = Salad.objects.get(style=style)
                price = menu_salad.price

                # Create the Cart Item
                order = CartItem(menu=menu,
                                 style=style,
                                 user_id=request.user.id,
                                 price=price)
                order.save()
        elif request.POST['menu_item'] == 'DinnerPlatter':
            form = DinnerPlatterForm(request.POST)
            if form.is_valid():
                form = form.cleaned_data
                menu = 'DinnerPlatter'
                style = form['style']
                size = form['size']

                # Lookup price
                menu_dinner_platter = DinnerPlatter.objects.get(style=style,
                                                                size=size)
                price = menu_dinner_platter.price

                # Create the Cart Item
                order = CartItem(menu=menu,
                                 style=style,
                                 size=size,
                                 user_id=request.user.id,
                                 price=price)
                order.save()
        else:
            print("Post Error")
            redirect('index')

        cart_items = get_cart_items(request)
        if cart_items:
            total_cost = Decimal(
                cart_items.aggregate(Sum('price'))['price__sum'])
        else:
            total_cost = 0

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

        return render(request, 'cart/cart.html', context)

    else:

        # Display Shopping Cart for GET request
        cart_items = get_cart_items(request)
        if cart_items:
            total_cost = Decimal(
                cart_items.aggregate(Sum('price'))['price__sum'])
        else:
            total_cost = 0

        context = {
            'cart_items': cart_items,
            'num_cart_items': cart_items.count(),
            'total_cost': total_cost
        }
        return render(request, 'cart/cart.html', context)