def order_create(request): cart = Cart(request) if request.method == 'POST': form = OrderCreateForm(request.POST) if form.is_valid(): order = form.save(commit=False) order.coupon = cart.coupon order.discount = cart.coupon.discount order.save() total_price = cart.get_total_price() total_no_item = cart.__len__() for item in cart: OrderItem.objects.create(order=order, product=item['product'], quantity=item['quantity'], price=item['price']) cart.clear() # order_created.delay(order.id) return render( request, 'orders/order/created.html', { 'order': order, 'total_price': total_price, 'total_no_item': total_no_item, 'html_title': 'ORDER MADE' }) else: form = OrderCreateForm() return render(request, 'orders/order/create.html', { 'form': form, 'html_title': 'CHECK_OUT' })
def create_order(request): cart = Cart(request) if (request.user_agent.is_mobile or request.user_agent.is_tablet) and cart.__len__() > 0: if request.method == 'POST': if 'table_id' in request.session: table_id = request.session['table_id'] else: return render(request, 'please.html') order = Order.objects.create(table=table_id, total=cart.get_total_price(), paid=False) for item in cart: OrderItem.objects.create(order=order, item=item['item'], price=item['price'], quantity=item['quantity']) del request.session['table_id'] request.session.modified = True cart.clear() return render(request, 'created.html', {'order': order}) else: return render(request, 'create.html', {'cart': cart}) else: return render(request, 'please.html')
def common_context(request): context = dict() # List of all cities all_cities = models.City.objects.all() context['all_cities'] = serializers.CitySerializer(all_cities, many=True, context={ 'request': request }).data # Current user user = request.user context['user'] = users_serializers.UserSerializer(user, context={ 'request': request }).data # Current city if 'city_id' in request.session: current_city = models.City.objects.get(pk=request.session['city_id']) context['current_city'] = serializers.CitySerializer(current_city, context={ 'request': request }).data cart = Cart(request) context['cart'] = { 'cart_quantity': cart.__len__(), 'cart_total': cart.get_total_cost() } return context
def product_list(request): products = get_available_products() username = request.user.username cart = Cart(request) data = {'username': username, 'cart': cart, 'total_items': cart.__len__()} if products: data['products'] = products return render(request, 'shop/product/list.html', context=data)
def test_getLogin(self): category = Category.objects.get(name="Bike") order = Order.objects.get(first_name="Hornet") prod = Product.objects.get(name="tess") orderitem = OrderItem.objects.get(product=Product.objects.get( name="tess")) #product self.assertEqual(prod.__str__(), "tess") self.assertEqual(prod.get_absolute_url(), "/1/tess/") #orderitem self.assertEqual(orderitem.get_cost(), 30) self.assertEqual(orderitem.__int__(), 3) self.assertEqual(orderitem.__str__(), "1") #category self.assertEqual(category.__str__(), "Bike") self.assertEqual(category.get_absolute_url(), "/bike/") #order self.assertEqual(order.str(), "Hornet") self.assertEqual(order.__str__(), "Order 1") self.assertEqual(order.get_total_cost(), 30) # cart response = self.client.post(reverse('cart:cart_detail')) response1 = self.client.post(reverse('cart:cart_add', args=[prod.id])) response2 = self.client.post( reverse('cart:cart_remove', args=[prod.id])) self.assertEqual(response.status_code, 200) self.assertEqual(response1.status_code, 302) self.assertEqual(response2.status_code, 302) # orders response3 = self.client.post(reverse('orders:order_create')) self.assertEqual(response3.status_code, 200) #shop response4 = self.client.post(reverse('shop:product_list')) response5 = self.client.post( reverse('shop:product_detail', args=[prod.id, prod.slug])) self.assertEqual(response4.status_code, 200) self.assertEqual(response5.status_code, 200) request = HttpRequest() engine = import_module(settings.SESSION_ENGINE) session_key = None request.session = engine.SessionStore(session_key) cart = Cart(request) self.assertEqual(cart.__len__(), 0) self.assertEqual(cart.get_total_price(), 0)
def product_detail(request, id, article): username = request.user.username product = get_object_or_404(Product, id=id, article=article, available=True) cart_product_form = CartAddProductForm() cart = Cart(request) data = { 'product': product, 'cart_product_form': cart_product_form, 'cart': cart, 'username': username, 'total_items': cart.__len__() } return render(request, 'shop/product/detail.html', context=data)
def post(self, request, *args, **kwargs): form = CreateOrderForm(request.POST or None) cart = Cart(request) #customer = Customer.objects.get(user=request.user) if form.is_valid(): order = form.save(commit=False) # order.customer = customer order.city = form.cleaned_data['city'] order.receive_method = form.cleaned_data['receive_method'] order.address = form.cleaned_data['address'] order.apartment_number = form.cleaned_data['apartment_number'] order.porch_number = form.cleaned_data['porch_number'] order.floor_number = form.cleaned_data['floor_number'] order.intercom = form.cleaned_data['intercom'] order.full_passport_name = form.cleaned_data['full_passport_name'] order.phone = form.cleaned_data['phone'] order.email = form.cleaned_data['email'] order.delivery_date = form.cleaned_data['delivery_date'] order.delivery_time = form.cleaned_data['delivery_time'] order.payment_method = form.cleaned_data['payment_method'] order.comment = form.cleaned_data['comment'] order.save() for item in cart: OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity']) # Celery email task send_str = 'Вы закази {} товаров на сумму {} руб.'.format( cart.__len__(), cart.get_total_price()) send_order_created_email.delay(form.cleaned_data['email'], send_str) cart.clear() messages.add_message( request, messages.INFO, 'Спасибо за заказ! Менеджер с вами свяжется в течение 5 минут.' ) return HttpResponseRedirect('/') return HttpResponseRedirect('/orders/checkout/')
def order_create(request): cart = Cart(request) if cart.__len__() > 0: if request.method == 'POST': form = OrderCreateForm(request.POST) if form.is_valid(): order = form.save(commit=False) if cart.coupon: order.coupon = cart.coupon order.discount = cart.coupon.discount order.save() for item in cart: OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity']) # clear the cart cart.clear() # launch asynchronous task order_created.delay(order.id) messages.success( request, 'Ваш заказ успешно зарегистрирован. Мы отправили вам письмо с номером заказа на адрес почты который вы указали при заполнении формы.' ) return redirect("shop:product_list") else: form = OrderCreateForm() return render(request, 'orders/order_create.html', { 'cart': cart, 'form': form }) else: messages.success( request, 'Ваша корзина пуста. Для перехода по ссылке необходимо добавить товары в корзину и подтвердить заказ.' ) return redirect("shop:product_list")