def order_create(request): try: cart_id = request.session['cart_id'] cart = Cart.objects.get(id=cart_id) request.session['total'] = cart.items.count() except: cart = Cart() cart.save() cart_id = cart.id request.session['cart_id'] = cart_id cart = Cart.objects.get(id=cart_id) form = OrderForm(request.POST) if form.is_valid(): new_order = Order() new_order.user = request.user new_order.save() context = {'form': form} return render(request, 'order.html', context)
def book(request): token = request.session['user']['token'] user_response = api_get_user(request.session['user']['email'], token) gas_choices_response = api_get_gas(request.session['user']['token']) if user_response.ok and gas_choices_response.ok: user = user_response.json() if not user['address_set']: messages.warning(request, 'Vous devez créer une adresse.') return HttpResponseRedirect(reverse('create_address')) if not user['vehicle_set']: messages.warning(request, 'Vous devez ajouter un véhicule.') return HttpResponseRedirect(reverse('create_vehicle')) gas_choices = gas_choices_response.json() if request.method == 'POST': form = OrderForm(request.POST, user['address_set'], user['vehicle_set'], gas_choices) if form.is_valid(): data = form.cleaned_data if int(data['date_refill'].month) > int(date.today().month) + settings.CALENDAR['months_visibilty']: return render(request, 'book.html', { 'form': form, 'errors': 'Date invalide' }) data['user'] = request.session['user']['id'] data['date_refill'] = str(data['date_refill']) for gas_choice in gas_choices: if data['gas_name'] == gas_choice['name']: data.update({'gas_price': gas_choice['price']}) break order_response = api_order_validate(data, request.session['user']['token']) if order_response.ok: request.session['order'] = order_response.json() request.session['payment'] = True return HttpResponseRedirect(reverse('payment')) return render(request, 'book.html', { 'form': form, 'errors': order_response.json()['errors'] }) form = OrderForm(None, user['address_set'], user['vehicle_set'], gas_choices) return render(request, "book.html", { 'user': user, 'form': form, }) return HttpResponseRedirect(reverse('logout'))
def order(request): form = OrderForm(request.POST or None) cart = get_cart(request) if form.is_valid(): name = form.cleaned_data['name'] last_name = form.cleaned_data['last_name'] phone = form.cleaned_data['phone'] address = form.cleaned_data['address'] comments = form.cleaned_data['comments'] new_order = Order(user=request.user, first_name=name, last_name=last_name, phone=phone, address=address, comments=comments, total_price=cart.cart_total) new_order.user = request.user new_order.save() new_order.items.add(*cart.items.all()) Cart.objects.get(id=int(request.session['cart_id'])).delete() del request.session['cart_id'] email_list = [] for user in User.objects.filter(is_superuser=True): email_list.append(user.email) send_mail( 'Нове замовлення', 'До вас прийшло нове замовлення. Його деталі зможете перглянути в адмінці', '*****@*****.**', [email_list], ) return HttpResponseRedirect('/thank_you') return render(request, 'order.html', { 'form': form, })
def place(request, pk): place = Place.objects.get(id=pk) form = OrderForm(request.POST or None) if request.method == "GET": return render(request, "order/place.html", { "sidebar": sidebar, "place": place, "form": form }) elif request.method == "POST": if form.is_valid(): order = form.save(commit=False) order.client = Client.objects.get(user=request.user) order.place = place order.datetime = datetime.datetime.now() order.save() return redirect("index") else: return render(request, "order/place.html", { "sidebar": sidebar, "place": place, "form": form })
def make_order_view(request): try: cart_id = request.session[ 'cart_id'] # Получение значения сессии при помощи ключа(то есть, 'cart_id'). cart = Cart.objects.get(id=cart_id) request.session['total'] = cart.items.count() except: cart = Cart() cart.save() cart_id = cart.id request.session['cart_id'] = cart_id # Передача значения в сессию cart = Cart.objects.get(id=cart_id) form = OrderForm(request.POST or None) if form.is_valid(): name = form.cleaned_data['name'] last_name = form.cleaned_data['last_name'] phone = form.cleaned_data['phone'] buying_type = form.cleaned_data['buying_type'] address = form.cleaned_data['address'] comments = form.cleaned_data['comments'] new_order = Order() new_order.user = request.user new_order.save() new_order.items.add(cart) new_order.first_name = name new_order.last_name = last_name new_order.phone = phone new_order.address = address new_order.buying_type = buying_type new_order.comments = comments new_order.total = cart.cart_total new_order.save() del request.session['cart_id'] del request.session['total'] return HttpResponseRedirect(reverse('thank_you'))
def order_create_view(request): context = {} form = OrderForm(request.POST or None) context['form'] = OrderForm(request.POST or None) cart = cart_session(request) context['cart'] = cart if form.is_valid(): new_order = Order() new_order.user = request.user new_order.cart = cart new_order.first_name = form.cleaned_data['first_name'] new_order.last_name = form.cleaned_data['last_name'] new_order.second_name = form.cleaned_data['second_name'] new_order.phone = form.cleaned_data['phone'] new_order.buying_type = form.cleaned_data['buying_type'] new_order.address = form.cleaned_data['address'] new_order.comment = form.cleaned_data['comment'] new_order.total = cart.cart_total new_order.save() del request.session['cart_id'] return HttpResponseRedirect(reverse('congratulations')) return render(request, 'app/order.html', context)