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")
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)
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")
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"})
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)
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)
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"))
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)