def create_order(request, transaction_id): """ Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы В конце делаем очистку корзины """ order = Order() checkout_form = ContactForm(request.POST, instance=order) checkout_form.shipping_address_1 = u'%s' % request.POST[ 'shipping_address_1'] order = checkout_form.save(commit=False) # присваиваем купон заказу по купону корзины cart_items = cart.get_cart_items(request) cupon = Cupon() for c in cart_items: cupon = c.cupon order.cupon = cupon order.transaction_id = transaction_id order.ip_address = request.META.get('REMOTE_ADDR') order.user = None if request.user.is_authenticated(): order.user = request.user order.status = Order.SUBMITTED delivery = get_current_delivery(request) order.delivery = delivery order.save() if order.pk: # Если заказ сохранен cart_items = cart.get_cart_items(request) for ci in cart_items: # Создаем товар в заказе для каждого товара в корзине oi = OrderItem() oi.order = order oi.quantity = ci.quantity oi.price = ci.price oi.product = ci.product oi.feel = ci.feel oi.atributes = ci.atributes oi.save() # Очищаем корзину после оформления заказа cart.empty_cart(request) # Очищаем сессию cart_id request.session[CART_ID_SESSION_KEY] = '' # Сохраняем введенные данные для будующих заказов if request.user.is_authenticated(): profile.set(request) # Сохраняем информацию о профиле пользователя if request.user.is_authenticated(): profile.set(request) # Возвращаем объект - новый заказа return order
def create_order(request, transaction_id): """ Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы В конце делаем очистку корзины """ order = Order() checkout_form = ContactForm(request.POST, instance=order) checkout_form.shipping_address_1 = u'%s' % request.POST['shipping_address_1'] order = checkout_form.save(commit=False) # присваиваем купон заказу по купону корзины cart_items = cart.get_cart_items(request) cupon = Cupon() for c in cart_items: cupon = c.cupon order.cupon = cupon order.transaction_id = transaction_id order.ip_address = request.META.get('REMOTE_ADDR') order.user = None if request.user.is_authenticated(): order.user = request.user order.status = Order.SUBMITTED delivery = get_current_delivery(request) order.delivery = delivery order.save() if order.pk: # Если заказ сохранен cart_items = cart.get_cart_items(request) for ci in cart_items: # Создаем товар в заказе для каждого товара в корзине oi = OrderItem() oi.order = order oi.quantity = ci.quantity oi.price = ci.price oi.product = ci.product oi.feel = ci.feel oi.atributes = ci.atributes oi.save() # Очищаем корзину после оформления заказа cart.empty_cart(request) # Очищаем сессию cart_id request.session[CART_ID_SESSION_KEY] = '' # Сохраняем введенные данные для будующих заказов if request.user.is_authenticated(): profile.set(request) # Сохраняем информацию о профиле пользователя if request.user.is_authenticated(): profile.set(request) # Возвращаем объект - новый заказа return order
def cart_view(request, template_name="cart/cart.html"): """Представление для отображения корзины""" page_title = _(u'Shopping cart') if request.method == 'POST': postdata = request.POST.copy() """удаление товара""" if postdata.has_key('remove'): cart.remove_from_cart(request) """пересчет товара по количеству""" if postdata.has_key('update'): cart.update_cart(request) """отправляем request на пересчет корзины по купону""" if postdata.has_key('update_cupon'): cart.update_cupon_cart(request) """оформление заказа""" if postdata.has_key('checkout'): checkout_url = checkout.get_checkout_url(request) return HttpResponseRedirect(checkout_url) # Получаем список всех товаров в корзине из cookies #cart_item_count = cart.cart_item_count(request) cart_items = cart.get_cart_items(request) # cupon = cart.get_cupon(request) cart_subtotal = cart.cart_subtotal(request) return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def product_cart_box(context, request): cart_i = cart.get_cart_items(request) quantity = cart.cart_distinct_item_count(request) device = checkDevice(request) return { 'cart_i': cart_i, 'device': device, 'quantity': quantity }
def ajaxCart(request): postdata = request.POST.copy() form = ProductAddToCartForm(request, postdata) data = {} if form.is_valid() and request.POST[ 'quantity']: # тут происходит проверка на cookie в forms.py # Добавляем в корзину и делаем перенаправление на страницу с корзиной cart.add_to_cart(request) # product_item = Product.objects.get(slug=request.POST['product_slug']) # cart_item = CartItem.objects.get(product=product_item, cart_id=cart._cart_id(request)) cart_products = cart.get_cart_items(request) global_quantity = cart.cart_distinct_item_count(request) """просто каждый раз строим карзину заново (это просто :-))""" add_item_html = u"" for cart_item in cart_products: name = cart_item.name price = cart_item.price add_item_html = add_item_html + u"<div class='cart_items_prod'><img src='/media/%s' width='88' height='88'><div class='text_item'><p class='name_item'>%s</p><p>Цена: <i class='fa fa-rub'></i>%s</p><p id='quantity'>Колличество: %s</p></div></div>" % ( cart_item.get_default_image(), name, price, cart_item.quantity) data = simplejson.dumps({ "add_item_html": add_item_html, "global_quantity": global_quantity }) else: form = ProductAddToCartForm(request, postdata) """ Проверка ключей post ajax запроса и дальнейшая логика связаная с этим либо смена объема(веса) товара либо отправка письма на почту через форму в конце главной страницы проверка работает только через цыкл (почему-то).. возможно из-за QueryDict либо , из-за декоратора. """ for key in postdata.keys(): # TODO: поработать над безопасностью if key == 'atr_value_new': volume = ProductVolume.objects.get( id=request.POST['atr_value_new']) if volume.new_price > 0: price = "Цена: %s руб." % volume.new_price else: price = "Цена: %s руб." % volume.price data = simplejson.dumps({"price": price}) elif key == 'phone_user': subject = u'WayMy форма' message = u'телефон: %s \n Имя: %s' % (request.POST['phone_user'], request.POST['name_user']) send_mail(subject, message, '*****@*****.**', ['*****@*****.**'], fail_silently=False) return HttpResponse(data, content_type="application/json")
def cart_view(request, template_name="cart/cart.html"): """Представление для отображения корзины""" page_title = _(u'Shopping cart') if request.method == 'POST': postdata = request.POST.copy() if postdata.has_key('remove'): cart.remove_from_cart(request) if postdata.has_key('update'): cart.update_cart(request) if postdata.has_key('checkout'): checkout_url = checkout.get_checkout_url(request) return HttpResponseRedirect(checkout_url) # Получаем список всех товаров в корзине из cookies #cart_item_count = cart.cart_item_count(request) cart_items = cart.get_cart_items(request) cart_subtotal = cart.cart_subtotal(request) return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def create_order(request, transaction_id): """ Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы В конце делаем очистку корзины """ order = Order() checkout_form = ContactForm(request.POST, instance=order) order = checkout_form.save(commit=False) order.transaction_id = transaction_id order.ip_address = request.META.get('REMOTE_ADDR') order.user = None if request.user.is_authenticated(): order.user = request.user order.status = Order.SUBMITTED order.cupon = cart.get_cupon(request) order.save() if order.pk: # Если заказ сохранен cart_items = cart.get_cart_items(request) for ci in cart_items: # Создаем товар в заказе для каждого товара в корзине oi = OrderItem() oi.order = order oi.quantity = ci.quantity oi.price = (ci.price - (ci.price * int(ci.cupon.percent) / 100)) oi.product = ci.product oi.save() # Очищаем корзину после оформления заказа cart.empty_cart(request) # Сохраняем введенные данные для будующих заказов if request.user.is_authenticated(): profile.set(request) # Сохраняем информацию о профиле пользователя if request.user.is_authenticated(): profile.set(request) # Возвращаем объект - новый заказа return order
def ajaxCart(request): postdata = request.POST.copy() form = ProductAddToCartForm(request, postdata) data = {} if form.is_valid() and request.POST['quantity']: # тут происходит проверка на cookie в forms.py # Добавляем в корзину и делаем перенаправление на страницу с корзиной cart.add_to_cart(request) # product_item = Product.objects.get(slug=request.POST['product_slug']) # cart_item = CartItem.objects.get(product=product_item, cart_id=cart._cart_id(request)) cart_products = cart.get_cart_items(request) global_quantity = cart.cart_distinct_item_count(request) """просто каждый раз строим карзину заново (это просто :-))""" add_item_html = u"" for cart_item in cart_products: name = cart_item.name price = cart_item.price add_item_html = add_item_html + u"<div class='cart_items_prod'><img src='/media/%s' width='88' height='88'><div class='text_item'><p class='name_item'>%s</p><p>Цена: <i class='fa fa-rub'></i>%s</p><p id='quantity'>Колличество: %s</p></div></div>" % (cart_item.get_default_image(), name, price, cart_item.quantity) data = simplejson.dumps({"add_item_html": add_item_html, "global_quantity": global_quantity}) else: form = ProductAddToCartForm(request, postdata) """ Проверка ключей post ajax запроса и дальнейшая логика связаная с этим либо смена объема(веса) товара либо отправка письма на почту через форму в конце главной страницы проверка работает только через цыкл (почему-то).. возможно из-за QueryDict либо , из-за декоратора. """ for key in postdata.keys(): # TODO: поработать над безопасностью if key == 'atr_value_new': volume = ProductVolume.objects.get(id=request.POST['atr_value_new']) if volume.new_price > 0: price = "Цена: %s руб." % volume.new_price else: price = "Цена: %s руб." % volume.price data = simplejson.dumps({"price": price}) elif key == 'phone_user': subject = u'WayMy форма' message = u'телефон: %s \n Имя: %s' % (request.POST['phone_user'], request.POST['name_user']) send_mail(subject, message, '*****@*****.**', ['*****@*****.**'], fail_silently=False) return HttpResponse(data, mimetype="application/json")
def cart_view(request, template_name="cart/cart.html"): """Представление для отображения корзины""" page_title = _(u'Shopping cart') if request.method == 'POST': postdata = request.POST.copy() if postdata.has_key('remove'): cart.remove_from_cart(request) if postdata.has_key('update'): cart.update_cart(request) """отправляем request на пересчет корзины по купону""" if postdata.has_key('update_cupon'): cart.update_cupon_cart(request) if postdata.has_key('checkout'): checkout_url = checkout.get_checkout_url(request) return HttpResponseRedirect(checkout_url) deliveryForm = DeliveryForm() request.breadcrumbs(u'Корзина', request.path_info) # Получаем список всех товаров в корзине из cookies #cart_item_count = cart.cart_item_count(request) cart_items = cart.get_cart_items(request) cart_subtotal = cart.cart_subtotal(request) cart_gift = cart.cart_gift_add(request) # доставка try: delivery = cart.get_delivery(request) delivery.save() cart_total = cart.cart_total(request) except Exception: return redirect("/") return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def create_order(request, transaction_id): """ Если POST запрос к платежной системе успешен, создаем новый заказ содержащий товары из корзины Сохраняем заказ с идентификатором транзации который вернет шлюз платежной системы В конце делаем очистку корзины """ order = Order() checkout_form = CheckoutForm(request.POST, instance=order) order = checkout_form.save(commit=False) order.transaction_id = transaction_id order.ip_address = request.META.get('REMOTE_ADDR') order.user = None if request.user.is_authenticated(): order.user = request.user order.status = Order.SUBMITTED order.save() if order.pk: # Если заказ сохранен cart_items = cart.get_cart_items(request) for ci in cart_items: # Создаем товар в заказе для каждого товара в корзине oi = OrderItem() oi.order = order oi.quantity = ci.quantity oi.price = ci.price oi.product = ci.product oi.save() # Очищаем корзину после оформления заказа cart.empty_cart(request) # Сохраняем введенные данные для будующих заказов if request.user.is_authenticated(): profile.set(request) # Сохраняем информацию о профиле пользователя if request.user.is_authenticated(): profile.set(request) # Возвращаем объект - новый заказа return order
def cart_box(context, request): cart_i = cart.get_cart_items(request) return { # 'products': products, 'cart_i': cart_i, }