def add(request): if request.session.get('restaurant_cart') == None: response = HttpResponse({"error": "there was an error"}) response.status_code = 403 # To announce that the user isn't allowed to publish return response if request.session.get('restaurant_cart'): restaurant_selected_cart = request.session.get('restaurant_cart') # restaurant_selected_cart = request.session.get('restaurant_cart', 0) restaurant = request.GET.get('dr') if (restaurant == restaurant_selected_cart): cart = Cart(request.session) product = Submenu.objects.get(id=request.GET.get('dish_id')) cart.add( product, price=product.price, ) return HttpResponse("Added") else: response = HttpResponse({"error": "there was an error"}) response.status_code = 403 # To announce that the user isn't allowed to publish return response else: restaurant = request.GET.get('dr') cart = Cart(request.session) restaurant_selected_cart = request.session.get('restaurant_cart', restaurant) product = Submenu.objects.get(id=request.GET.get('dish_id')) cart.add( product, price=product.price, ) return HttpResponse("Added")
def checkout(request): if request.method == 'GET': cart = Cart(request.session) form = AddressForm() return render(request, 'checkout.html', { 'form': form, "nav_on": True, "cart": cart }) elif request.method == 'POST': form = AddressForm(request.POST) if form.is_valid(): user_profile = UserProfile.objects.filter( user__id=request.user.id).first() cart = Cart(request.session) order = Order.objects.create( customer_id=user_profile.id, address=form.cleaned_data['address'], total=cart.total, frozen=user_profile.money < cart.total) for product in cart.products: order.items_ordered.add(product) order.save() cart.clear() user_profile.num_orders += 1 user_profile.money_spent += cart.total user_profile.money -= cart.total user_profile.save() return render(request, 'order_success.html', { 'order_no': order.id, 'nav_on': True })
def carrito_count(request): from carton.cart import Cart cart = Cart(request.session) if request.user.is_authenticated(): cartw = request.user.wishlist.all() else: cartw = Cart(session=request.session, session_key='CART-wish') return { "cart":cart, "cartw":cartw }
def dispatch(self, request, *args, **kwargs): if 'checkout_order_id' not in request.session: return HttpResponseRedirect(reverse_lazy('shop')) else: self.checkout_order_id = self.request.session['checkout_order_id'] self.checkout_shipping_address_id = request.session['checkout_shipping_address_id'] self.checkout_cart_total = Cart(self.request.session).total del self.request.session['checkout_order_id'] del self.request.session['checkout_shipping_address_id'] Cart(self.request.session).clear() return super(CheckoutCompleteView, self).dispatch(request, *args, **kwargs)
def cart_items_count(request): """Custom context processor for counting items in Cart and Wishlist""" cart = Cart(session=request.session, session_key='CART') wish = Cart(session=request.session, session_key='WISH') request.session['cart_count'] = cart.count request.session['wish_count'] = wish.count return { 'cart_count': request.session['cart_count'], 'wish_count': request.session['wish_count'] }
def pago(request): if request.method == "POST": cart = Cart(request.session) if not cart.is_empty: # # Guardo el pedido # =========================== # creo un pedido con los datos del cliente y el restaurante restaurante = cart.items[0].product.restaurante cliente = Cliente.objects.get(user=request.user) #falta el cliente pedido = Pedido(restaurante=restaurante, cliente=cliente) pedido.save() #aado platos al pedido for item in cart.items: plato = item.product Detalle_pedido(plato=plato, pedido=pedido, cantidad=item.quantity).save() if request.POST.get('pago') == "Paypal": return paypal_create(request) elif request.POST.get('pago') == "Efectivo": cart.clear() #Se vacia el carrito return HttpResponseRedirect(reverse('pago_exitoso'))
def add(request, product_id): cart = Cart(request.session) product = Product.objects.get(pk=product_id) cart.add(product, price=product.price) products = Product.objects.order_by('-updated_at') context = {'products': products} return render(request, 'shop/index.html', context)
def remove_total_cart(request): if request.is_ajax(): if request.method == 'POST': cart = Cart(request.session) producto = Product.objects.get(id=request.POST.get('id')) cart.remove(producto) return HttpResponse('Eliminado')
def order_create(request): cart = Cart(request.session) if request.method == 'POST': form = OrderCreateForm(request.POST) if form.is_valid(): order = form.save(commit=False) order.placed_by_user = request.user order.save() for item in cart.items: OrderItem.objects.create(order=order, product=item.product, price=item.price, quantity=item.quantity) old_quantity = soap_client.service.findByIsbn( item.product.isbn).quantity new_quantity = old_quantity - item.quantity soap_client.service.updateQuantity(item.product.isbn, new_quantity) cart.clear() context = {'order': order} return render(request, 'orders/created.html', context) else: form = OrderCreateForm() return render(request, 'orders/create.html', { 'cart': cart, 'form': form })
def get(self, request, *args, **kwargs): # get status from querystring status = request.GET['status'] cart = Cart(request.session) virtual_deals = [] # check for virtual deals and create download links for each for item in cart.items: if item.product.type == 2: generated_ticket_url = request.build_absolute_uri( reverse( 'download_ticket', kwargs={'deal_id': item.product.id}, )) generated_ticket_url += "?qty=" + str(item.quantity) virtual_deals.append({ 'deal': item, 'href': generated_ticket_url }) # clear cart cart.clear() context = { 'status': status, 'virtual_deals': virtual_deals, } return render(request, self.template_name, context)
def add(request): cart = Cart(request.session) selitem_id = request.GET.get('id') selitem_qty = request.GET.get('quantity') selitem = Item.objects.get(id=selitem_id) cart.add(selitem, selitem_qty, price=selitem.price) return redirect(reverse('store') + "#No{}Card".format(selitem.product.id))
def show(request): cart = Cart(request.session) # stock = Product.objects.all() total = cart.total # subtotal=cart.subtotal() return render(request, 'cart.html', locals())
def shopping_cart(context): if 'request' in context: session = context['request'].session if 'start' not in session: session['start'] = True return Cart(context['request'].session) return None
def form_valid(self, form): cart = Cart(self.request.session) shipping_address = models.Address.objects.get(id=self.request.session['checkout_shipping_address_id']) order = models.Order.objects.create( customer=self.request.user, shipping_address_first_name=shipping_address.first_name, shipping_address_last_name=shipping_address.last_name, shipping_address_contact_no=shipping_address.contact_no, shipping_address_line_1=shipping_address.line_1, shipping_address_line_2=shipping_address.line_2, shipping_address_city=shipping_address.city, shipping_address_province=shipping_address.province, shipping_address_country=shipping_address.country, net_price=cart.total ) for item in cart.items: models.OrderDetails.objects.create( order=order, part=item.product, part_name=item.product.name, part_number=item.product.part_number, unit_price=item.price, quantity=item.quantity, net_price=item.subtotal ) self.request.session['checkout_order_id'] = order.id # TODO Send email # TODO Confirmation if order was placed (error if e.g. cart is empty, other errors) return super(CheckoutReviewView, self).form_valid(form)
def minus_quantity(request): cart = Cart(request.session) product = Submenu.objects.get(id=request.GET.get('dish_id')) quantity = request.GET.get('quantity') quantity = int(quantity) cart.set_quantity(product, quantity - 1) return HttpResponse("Quantity decreased")
def restaurants_detail(request, pk): cart = Cart(request.session) location = request.GET.get('ln') restaurant = get_object_or_404(Restaurant, pk=pk) restaurant_selected_cart = request.session.get('restaurant_cart') if (pk == restaurant_selected_cart): check = True else: check = False restaurant_selected_cart_detail = Restaurant.objects.filter( id=restaurant_selected_cart) coverageDetail = CoverageDetail.objects.filter(restaurant__id=pk).filter( coverage_id=location) price = cart.total return render(request, 'foodMax/restaurants_detail.html', context={ 'restaurant': restaurant, 'coverageDetail': coverageDetail, 'cart': cart, 'price': price, 'check': check, 'restaurant_selected_cart': restaurant_selected_cart, 'restaurant_selected_cart_detail': restaurant_selected_cart_detail, })
def setUp(self): engine = import_module(settings.SESSION_ENGINE) self.session = engine.SessionStore() self.session.save() self.client.cookies[ settings.SESSION_COOKIE_NAME] = self.session.session_key self.factory = RequestFactory() self.cart = Cart(self.session) self.deer = Product.objects.create( name='deer', price=10.0, custom_id=1, ) self.moose = Product.objects.create( name='moose', price=20.0, custom_id=2, ) self.ticket = Ticket.objects.create( name='Clint Mansell', price=25.0, custom_id=6, )
def remove_cart(request): if request.method == 'POST': if request.is_ajax(): cart = Cart(request.session) goods = Goods.objects.get(pk=request.POST.get('good')) cart.remove(goods) return JsonResponse({'message': "Removed"})
def add_cart(request): if request.is_ajax(): if request.method == 'POST': cart = Cart(request.session) producto = Product.objects.get(id=request.POST.get('id')) cart.add(producto,price=producto.price) return HttpResponse('Agregado')
def checkout_page(request): errors = [] cart = Cart(request.session) freight_only = any( [item.product.product.freight_only for item in cart.items]) cost_total = cart.total if cart.is_empty: return redirect(reverse('store')) else: if request.POST: cart_list = [v for k, v in cart.cart_serializable.items()] cal_price = reduce( lambda x, y: x + y, [i['quantity'] * int(i['price']) for i in cart_list]) delivery = request.POST.get('delivery') try: shopper = PersonalInfo.objects.get( id=request.user.personalinfo.id) if cart.total == cal_price and delivery is not None: order = PurchaseOrder.objects.create( number=0, buyer=shopper, order_time=datetime.now(), freight=0 if cart.total > 1500 else 60 if delivery.isdigit() else 90, ship_method='FML' if delivery.isdigit() else 'KTJ', address=delivery, total=cart.total, buyer_notes=request.POST.get('shopper_notes'), order_notes=cart_list) order.number = float( datetime.now().strftime('%y%m%d%H%M%S')) + float( order.id) order.total = order.total + order.freight # 更改為預購模式! for d in cart_list: item = get_object_or_404(Item, id=d['product_pk']) order.sold_goods.add(item) item.pre_order += d['quantity'] # print ('id={} / 存貨={} / 售貨={} / 總售貨={}'.format( # item.id, item.stock, # item.sold, item.total_sold # )) item.save() order.save() cart.clear() return HttpResponseRedirect(reverse('checkout:orderinfo')) else: errors.append('資料有誤 或 尚未填寫,請重新整理再次一次') except Exception as e: print('%s (%s)' % (e, type(e))) context = { 'title': '結帳清單', 'errors': errors, 'cost_total': cost_total, 'freight_only': freight_only, } return render(request, 'checkout/checkout-page.html', context)
def waiter(): while True: from fridge.models import ShoppingCart, UserLimit, Product from carton.cart import Cart from django.contrib.sessions.backends.db import SessionStore with open('session_key.csv', 'r') as f: data = csv.reader(f) for line in data: k = line k = k[0] s = SessionStore(session_key=k) cart = Cart(s) product = Product.objects.get(name='Avocado') print(product) with open('object_counting_report.csv', 'r') as reading: read = csv.reader(reading) for line in read: for l in line: name = [] number = [] for item in l: if item.isalpha(): name.append(item) elif item.isdigit(): number.append(int(item)) else: pass name = (''.join(c for c in name)) number = (number[0]) prodset = UserLimit.objects.all() # session = requests.Session() for num in prodset: if number < num.set_limit: qty = num.set_limit - number + 1 print( 'dddddddddddddddddddddddddddddddddddddddddddd') print(num.set_limit) try: # tobeupdated = ShoppingCart.objects.get(product=item.product) product = Product.objects.get(name='Avocado') # cart.add( product ) cart.add(product, price=product.selling_price) s.save() print('paint') print(cart.items) print('adding') except: # cart = ShoppingCart(product=item.product, quantity=qty) print('excepted') # pass break
def remove(request): cart = Cart(request.session) event = Event.objects.get(id=request.GET.get('id')) cart.remove_single(event) messages.success(request, "Event removed from basket") return render(request, 'ticket/cart/basket.html')
def update(request): if request.is_ajax(): if request.method == 'POST': cart = Cart(request.session) producto = Product.objects.get(id=request.POST.get('id')) new_cantidad = request.POST.get('valor') cart.set_quantity(producto,quantity=new_cantidad) return HttpResponse('Actualizado')
def email_order(request): cart = Cart(request.session).cart_serializable restaurant = get_object_or_404(Restaurant, pk=request.GET.get('restaurant')) send_mail('New Order', json.dumps(cart), '*****@*****.**', [ restaurant.email, ]) return HttpResponse("Email sent")
def remove_single(request): cart = Cart(request.session) initial_count = cart.count product = products[int(request.POST.get('product_id'))] cart.remove_single(product) after_rmv_count = cart.count assert initial_count == after_rmv_count + 1 return HttpResponse()
def cart_add(request): if request.is_ajax() and request.POST and 'part' in request.POST: cart = Cart(request.session) product = models.Part.objects.get(slug=request.POST.get('part')) cart.add(product, price=product.price) return HttpResponse(content=product.name + " successfully added to cart") else: return HttpResponse(status=400, content="Error adding to cart")
def cart_remove(request): if request.is_ajax() and request.POST and 'part' in request.POST: cart = Cart(request.session) product = models.Part.objects.get(slug=request.POST.get('part')) cart.remove(product) return HttpResponse(content=product.name + " successfully removed from cart") else: return HttpResponse(status=400, content="Error removing from cart")
def setUp(self): self.client = Client() self.ticket = set_dependent_classes() self.client.login(username="******", password="******") session = self.client.session cart = Cart(session) cart.add(self.ticket['item'], price=self.ticket['item'].price) session.save()
def add(request): cart = Cart(request.session) product = Product.objects.get(pk=request.POST.get('product_id')) quantity = request.POST.get('quantity', 1) discount = request.POST.get('discount', 0) price = product.price - float(discount) cart.add(product, price, quantity) return HttpResponse()
def add_cart(request): if request.method == 'POST': if request.is_ajax(): cart = Cart(request.session) goods = Goods.objects.get(id=request.POST.get('good')) cart.add(goods, price=goods.price) return JsonResponse({'message': "Added {}".format(goods.name)}) return JsonResponse({'message': "Please Access with AJAX/POST"})