def add(request): basket = Basket(request) if request.POST.get('action') == 'post': user_id = request.user.id order_key = request.POST.get('order_key') baskettotal = basket.get_total_price() name = request.POST.get('name') address1 = request.POST.get('line1') address2 = request.POST.get('line2') post_code = request.POST.get('postCode') if Order.objects.filter(order_key=order_key).exists(): pass else: order = Order.objects.create(user_id=user_id, name=name, address1=address1, address2=address2, post_code=post_code, total_paid=baskettotal, order_key=order_key) order_id = order.pk for item in basket: OrderItem.objects.create(order_id=order_id, product=item['product'], price=item['price'], quantity=item['qty']) response = JsonResponse({'success': 'Order Placed'}) return response
def order_create(request): basket = Basket(request) user = request.user if request.method == "POST": order_numbr = get_order_number() request.POST = request.POST.copy() request.POST['order_number'] = order_numbr form = OrderCreateForm(request.POST) if form.is_valid(): order = form.save(commit=False) order.save() for item in basket: OrderProduct.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity']) #clear basket basket.clear() return render(request, 'order/created.html', {'order_number': order.order_number}) else: form = OrderCreateForm(initial={'order_by': user}) return render(request, 'order/create.html', { 'basket': basket, 'form': form })
def add(request): basket = Basket(request) if request.POST.get('action') == 'post': order_key = request.POST.get('order_key') user_id = request.user.id baskettotal = basket.get_total_price() # Check if order exists if Order.objects.filter(order_key=order_key).exists(): pass else: order = Order.objects.create(user_id=user_id, full_name='name', address1='add1', address2='add2', total_paid=baskettotal, order_key=order_key) order_id = order.pk for item in basket: OrderItem.objects.create(order_id=order_id, product=item['product'], price=item['price'], quantity=item['qty']) response = JsonResponse({'success': 'Return something'}) return response
def BasketView(request): basket = Basket(request) total = str(basket.get_total_price()) total = total.replace('.', '') total = int(total) return render(request, 'payment/home.html')
def test_price_basket_with_two_identical_items(): b = Basket() b.add(item_name="peas", count=2) c = {"peas": 2.01} o = {} sub_total, discount, total = price_basket(basket=b, catalogue=c, offers=o) assert sub_total == 4.02 assert discount == 0 assert total == 4.02
def test_price_basket_with_a_single_discunted_item(): b = Basket() b.add(item_name="peas", count=1) c = {"peas": 2.02} o = [discounted_item("peas", 0.5)] sub_total, discount, total = price_basket(basket=b, catalogue=c, offers=o) assert sub_total == 2.02 assert discount == 1.01 assert total == 1.01
def test_price_basket_buy_three_get_one_free_applicable(): b = Basket() b.add(item_name="peas", count=3) c = {"peas": 2.0} o = [buy_x_get_y_free("peas", x=3, y=1)] sub_total, discount, total = price_basket(basket=b, catalogue=c, offers=o) assert sub_total == 6.0 assert discount == 2.0 assert total == 4.0
def add_basket(request): basket = Basket(request) if request.POST.get('action') == 'post': product_id = int(request.POST.get('productid')) product_qty = int(request.POST.get('productqty')) product = get_object_or_404(Product, id=product_id) basket.add(product=product, qty=product_qty) basketqty = basket.__len__() response = JsonResponse({'qty': basketqty}) return response
def test_price_basket_with_single_item(): b = Basket() b.add(item_name="peas") c = {"peas": 2.01} o = {} sub_total, discount, total = price_basket(basket=b, catalogue=c, offers=o) assert sub_total == 2.01 assert discount == 0 assert total == 2.01
def __init__(self, parent): super(BuyFrame, self).__init__(parent) # create component bom parts list self.tree_boms_manager = helper.tree.TreeManager(self.tree_boms, context_menu=self.menu_boms) self.tree_boms_manager.AddTextColumn("Path") self.tree_boms_manager.AddTextColumn("Production count") self.tree_boms_manager.OnSelectionChanged = self.onTreeBomsSelectionChanged # create component bom parts list self.tree_bom_parts_manager = TreeManagerBomParts(self.tree_bom_parts) self.tree_bom_parts_manager.AddIntegerColumn("Id") self.tree_bom_parts_manager.AddTextColumn("Name") self.tree_bom_parts_manager.AddIntegerColumn("Components") self.tree_bom_parts_manager.AddIntegerColumn("Needed") self.tree_bom_parts_manager.AddIntegerColumn("Stock") self.tree_bom_parts_manager.AddIntegerColumn("Provisioning") self.tree_bom_parts_manager.AddTextColumn("Description") self.tree_bom_parts_manager.AddTextColumn("Comment") # create equivalent parts list self.tree_equivalent_parts_manager = helper.tree.TreeManager(self.tree_part_equivalents) self.tree_equivalent_parts_manager.AddIntegerColumn("Id") self.tree_equivalent_parts_manager.AddTextColumn("Name") self.tree_equivalent_parts_manager.AddIntegerColumn("Stock") self.tree_equivalent_parts_manager.AddTextColumn("Description") self.tree_equivalent_parts_manager.AddTextColumn("Comment") # create octoparts list self.tree_distributors_manager = TreeManagerDistributors(self.tree_distributors, context_menu=self.menu_prices) self.tree_distributors_manager.AddIntegerColumn("Amount To Buy") self.tree_distributors_manager.AddFloatColumn("Buy Price") self.tree_distributors_manager.AddIntegerColumn("Packaging Unit") self.tree_distributors_manager.AddIntegerColumn("Quantity") self.tree_distributors_manager.AddFloatColumn("Price") self.tree_distributors_manager.AddFloatColumn("Price per Item") self.tree_distributors_manager.AddTextColumn("Currency") self.tree_distributors_manager.AddTextColumn("SKU") # create wish parts list self.tree_wish_parts_manager = helper.tree.TreeManager(self.tree_wish_parts) self.tree_wish_parts_manager.AddTextColumn("Part") self.tree_wish_parts_manager.AddTextColumn("Distributor") self.tree_wish_parts_manager.AddTextColumn("SKU") self.tree_wish_parts_manager.AddIntegerColumn("Packaging Unit") self.tree_wish_parts_manager.AddFloatColumn("Amount") self.tree_wish_parts_manager.AddFloatColumn("Buy Price") self.tree_wish_parts_manager.AddTextColumn("Currency") self.tree_wish_parts_manager.AddTextColumn("Description") self.basket = Basket() self.update_state()
def __init__(self, parent): super(BuyFrame, self).__init__(parent) # create module bom parts list self.tree_boms_manager = helper.tree.TreeManager(self.tree_boms) self.tree_boms_manager.AddTextColumn("Path") self.tree_boms_manager.AddTextColumn("Production count") # create module bom parts list self.tree_bom_parts_manager = TreeManagerBomParts(self.tree_bom_parts) self.tree_bom_parts_manager.AddIntegerColumn("Id") self.tree_bom_parts_manager.AddTextColumn("Name") self.tree_bom_parts_manager.AddIntegerColumn("Modules") self.tree_bom_parts_manager.AddIntegerColumn("Needed") self.tree_bom_parts_manager.AddIntegerColumn("Stock") self.tree_bom_parts_manager.AddIntegerColumn("Provisioning") self.tree_bom_parts_manager.AddTextColumn("Description") self.tree_bom_parts_manager.AddTextColumn("Comment") # create equivalent parts list self.tree_equivalent_parts_manager = helper.tree.TreeManager(self.tree_part_equivalents) self.tree_equivalent_parts_manager.AddIntegerColumn("Id") self.tree_equivalent_parts_manager.AddTextColumn("Name") self.tree_equivalent_parts_manager.AddIntegerColumn("Stock") self.tree_equivalent_parts_manager.AddTextColumn("Description") self.tree_equivalent_parts_manager.AddTextColumn("Comment") # create octoparts list self.tree_distributors_manager = TreeManagerDistributors(self.tree_distributors) self.tree_distributors_manager.AddIntegerColumn("Amount To Buy") self.tree_distributors_manager.AddFloatColumn("Buy Price") self.tree_distributors_manager.AddIntegerColumn("Packaging Unit") self.tree_distributors_manager.AddIntegerColumn("Quantity") self.tree_distributors_manager.AddFloatColumn("Price") self.tree_distributors_manager.AddFloatColumn("Price per Item") self.tree_distributors_manager.AddTextColumn("Currency") self.tree_distributors_manager.AddTextColumn("SKU") # create wish parts list self.tree_wish_parts_manager = helper.tree.TreeManager(self.tree_wish_parts) self.tree_wish_parts_manager.AddTextColumn("Part") self.tree_wish_parts_manager.AddTextColumn("Distributor") self.tree_wish_parts_manager.AddTextColumn("SKU") self.tree_wish_parts_manager.AddIntegerColumn("Packaging Unit") self.tree_wish_parts_manager.AddFloatColumn("Amount") self.tree_wish_parts_manager.AddFloatColumn("Buy Price") self.tree_wish_parts_manager.AddTextColumn("Currency") self.tree_wish_parts_manager.AddTextColumn("Description") self.basket = Basket() self.enableBom(False)
def BasketView(request): basket = Basket(request) total = str(basket.get_total_price()) total = total.replace('.', '') total = int(total) stripe.api_key = os.environ.get('STRIPE_API_KEY') intent = stripe.PaymentIntent.create(amount=total, currency='inr', metadata={'userid': request.user.id}) return render(request, 'payment/payment.html', {'client_secret': intent.client_secret})
def BasketView(request): basket = Basket(request) total = str(basket.get_total_price()) total = total.replace('.', '') total = int(total) stripe.api_key = 'sk_test_51Ip9DUJQDQJquU6ukM0x3CAeMlFF5451jyMQMuG2u3PbxIaJ2I31WR7oCu8W29KEHmHO7jpU12t2lEb4eBZu2xbM00x1bKH2ba' intent = stripe.PaymentIntent.create( amount=total, currency='gbp', metadata={'userid': request.user.id}, ) return render(request, 'payment/home.html', {'client_secret': intent.client_secret})
def BasketView(request): basket = Basket(request) total = str(basket.get_total_price()) total = total.replace('.', '') total = int(total) stripe.api_key = \ 'sk_test_51J5tPkDbVJLGvj0Ajlm3Fh5AIxiwenCVdHAeLwaN28DSkbdLPUla8T5gFQsCNklf64bqP9fjCLDS95Hpbxa3qkdI00R1Sy8BRF' intent = stripe.PaymentIntent.create(amount=total, currency='gbp', metadata={'userid': request.user.id}) return render(request, 'payment/home.html', {'client_secret': intent.client_secret})
def order_placed(request): """After the user checks out (clicks on 'Place order') we make changes to the attributes of active order.""" basket = Basket(request) user = request.user profile = Profile.objects.get(user=user) active_order = Order.objects.get(client=profile, active_basket=True) active_order.active_basket = False active_order.order_status = 'PD' active_order.invoice_total = Decimal(basket.get_total_price()) active_order.save() basket.clear() return render(request, 'orders/order_placed.html')
def add(request): basket = Basket(request) if request.POST.get('action') == 'post': user_id = request.user.id basket_price = basket.get_basket_price order_key = request.POST['order_key'] print(order_key) # Check if order (by order_key) exists if Order.objects.filter(order_key=order_key).exists(): pass else: order = Order.objects.create( user_id=user_id, order_key=order_key, full_name=request.POST['fullname'], address1=request.POST['address1'], address2=request.POST['address2'], city=request.POST['city'], country=request.POST['country'], post_code=request.POST['postcode'], total_price=basket_price, ) for item in basket: OrderItem.objects.create(order=order, product=item['product'], price=item['total_price'], quantity=item['qty']) return JsonResponse({'status': 'success'})
def BasketView(request): basket = Basket(request) total = str(basket.get_total_price()) total = total.replace('.', '') total = int(total) stripe.api_key = settings.STRIPE_SECRET_KEY intent = stripe.PaymentIntent.create( amount=total, currency='gbp', metadata={'userid': request.user.id} ) return render(request, 'payment/payment_form.html', {'client_secret': intent.client_secret, 'STRIPE_PUBLISHABLE_KEY': os.environ.get('STRIPE_PUBLISHABLE_KEY')})
def form_valid(self, form): result = super().form_valid(form) user = self.request.user profile = Profile.objects.get(user=user) my_basket = Basket( self.request) # this is the offline basket (before logging in) if Order.objects.filter(client=profile, active_basket=True).exists(): active_order = Order.objects.get(client=profile, active_basket=True) else: if len(my_basket) > 0: active_order = Order.objects.create( client=profile, active_basket=True, ) else: return result order_items = active_order.items.all() my_basket_copy = {} for key in my_basket.basket: my_basket_copy[key] = my_basket.basket[key].copy() for item in order_items: # update the session basket from the database my_basket.add(item.product, item.quantity) for product_id in my_basket_copy: # update the database with the copy of the offline basket my_product = Product.objects.get(id=int(product_id)) if OrderItem.objects.filter(product=my_product, order=active_order).exists(): item = OrderItem.objects.get(product=my_product, order=active_order) item.quantity += my_basket_copy[product_id]['qty'] item.save() else: OrderItem.objects.create( order=active_order, product=my_product, price=my_product.price, quantity=my_basket_copy[product_id]['qty']) return result
def BasketView(request): basket = Basket(request) total = str(basket.get_total_price()) total = total.replace('.', '') total = int(total) # stripe.api_key = 'sk_test_51IPPiMLq3gp8sNqb4uK7SS05ez3ab0ZHBwHUt7spe1B7xtOCyoSfoygnGUA5HQ2wh3oecQAL5Kam4stDeU8L7R7c00WHdZN5uU' stripe.api_key = settings.STRIPE_SECRET_KEY intent = stripe.PaymentIntent.create(amount=total, currency='gbp', metadata={'userid': request.user.id}) return render( request, 'payment/payment_form.html', { 'client_secret': intent.client_secret, 'STRIPE_PUBLISHABLE_KEY': os.environ.get('STRIPE_PUBLISHABLE_KEY') })
def test_price_empty_basket(): b = Basket() c = {} o = {} sub_total, discount, total = price_basket(basket=b, catalogue=c, offers=o) assert sub_total == 0 assert discount == 0 assert total == 0
def BasketView(request): basket = Basket(request) total = str(basket.get_total_price()) total = total.replace(".", "") total = int(total) stripe.api_key = settings.STRIPE_SECRET_KEY intent = stripe.PaymentIntent.create(amount=total, currency="usd", metadata={"userid": request.user.id}) return render( request, "payment/payment_form.html", { "client_secret": intent.client_secret, "STRIPE_PUBLISHABLE_KEY": os.environ.get("STRIPE_PUBLISHABLE_KEY") }, )
def basket_update_delivery(request): basket = Basket(request) if request.POST.get('action') == 'post': delivery_option = int(request.POST.get('deliveryoption')) delivery_type = DeliveryOptions.objects.get(id=delivery_option) updated_total_price = basket.basket_update_delivery( delivery_type.delivery_price) session = request.session if 'purchase' not in request.session: session['purchase'] = {'delivery_id': delivery_type.id} else: session['purchase']['delivery_id'] = delivery_type.id session.modified = True response = JsonResponse({ 'total': updated_total_price, 'delivery_price': delivery_type.delivery_price }) return response
def main(self): self.displayWelcomeMessage() warehouse = Warehouse.fromFile(WarehouseReader("../warehouse.dat")) catalogue = Catalogue.fromFile(CatalogueReader("../catalogue.dat")) basket = Basket() catalogueActions = CatalogueActions(catalogue) warehouseActions = WarehouseActions(warehouse, catalogue) basketActions = BasketActions(basket, catalogue, warehouse) UserInterface(catalogueActions, warehouseActions, basketActions).start() self.displayGoodbyeMessage() sys.exit()
def payment_complete(request): """ Payment complete view """ basket = Basket(request) basket.clear() user = request.user current_site = get_current_site(request) subject = 'Order Placed' protocol = 'https' if request.is_secure() else 'http' message = render_to_string('payment/payment_complete_email.html', { 'protocol': protocol, 'user': user, 'domain': current_site.domain, }) user.email_user(subject=subject, message=message, email=user.email) return render(request, 'payment/payment_complete.html')
def add_order(request): if request.method == 'POST': basket = Basket(request) if basket.is_empty(): error = 'Basket is empty' return render(request, 'order/add_order.html', { 'order': None, 'error': error }) if not request.POST.get('address'): error = 'Select Address' return render(request, 'order/add_order.html', { 'order': None, 'error': error }) seller = get_object_or_404(Seller, slug=request.session['seller']) address = get_object_or_404(Address, id=request.POST.get('address')) order = Order(user=request.user, seller=seller, address=address) order.save() for item, info in basket.basket.items(): try: item = seller.items.get(name=item) except Item.DoesNotExist: return Http404 entry = Entry(item=item, order=order, quantity=info['qty']) entry.save() basket.clean() return render(request, 'order/add_order.html', { 'order': order, 'error': None }) else: addresses = request.user.addresses.all() return render(request, 'order/finalize_order.html', {'addresses': addresses})
def basket_update_delivery(request): basket = Basket(request) if request.POST.get("action") == "post": delivery_option = int(request.POST.get("deliveryoption")) delivery_type = DeliveryOptions.objects.get(id=delivery_option) updated_total_price = basket.basket_update_delivery( delivery_type.delivery_price) session = request.session if "purchase" not in request.session: session["purchase"] = { "delivery_id": delivery_type.id, } else: session["purchase"]["delivery_id"] = delivery_type.id session.modified = True response = JsonResponse({ "total": updated_total_price, "delivery_price": delivery_type.delivery_price }) return response
def order_create(request): basket = Basket(request) if request.method == 'POST': form = OrderCreateForm(request.POST) if form.is_valid(): order = form.save() for item in basket: OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity']) basket.clear() order_created.delay(order.id) return render(request, 'orders/order/created.html', {'order': order}) else: form = OrderCreateForm() return render(request, 'orders/order/create.html', { 'basket': basket, 'form': form })
def test_some_invalid_items(self): items = [ "Apples", "Soup", "Bread", "Soup", "Milk", "Random", "Stuff", "Bread,Milk", ] basket = Basket(items, self.offers, self.products) self.assertEqual(5, len(basket.found_goods))
def create_order(request): basket = Basket(request) if request.method == 'POST': form = OrderForm(request.POST) if form.is_valid(): order = form.save() for i in basket: OrderItem.objects.create(order=order, item=i['item'], price=i['price'], quantity=i['quantity']) basket.drop_basket() created_order(order.id) #for celery asynchronous tasks #created_order.delay(order.id) return render(request, 'orders/order_created.html', {'order': order}) else: form = OrderForm() return render(request, 'orders/order_create.html', { 'basket': basket, 'form': form })
def order_create(request): user = request.user print(user.username) basket = Basket(request) if request.method == 'POST': if user.username != '': form = OrderCreateForm(request.POST) else: form = OrderCreateAnonForm(request.POST) if form.is_valid(): order = form.save() if not request.POST.get('phone'): order.first_name = user.first_name order.phone = str(user) order.save() for item in basket: OrderItem.objects.create(order=order, product=item['product'], price=item['price'], quantity=item['quantity']) basket.clear() return render(request, 'order/created.html', {'order': order}) else: if user.username != '': form = OrderCreateForm else: form = OrderCreateAnonForm return render(request, 'order/order.html', { 'basket': basket, 'form': form })