def monthly_order_save(request): if request.method == "POST": form = MonthlyBoxForm(request.POST) if form.is_valid(): # 1. add a monthly box thing to their basket total_quantity = int(form.cleaned_data["frequency"]) * int(form.cleaned_data["quantity"]) uproduct = form.cleaned_data["tea"] basket = _get_basket(request) item = BasketItem.objects.create( item=uproduct, quantity=total_quantity, basket=basket, monthly_order=True, months=int(form.cleaned_data["frequency"]), weight=form.cleaned_data["quantity"], ) item.save() return HttpResponseRedirect(reverse("basket")) else: pass return HttpResponseRedirect(reverse("tea_boxes"))
def monthly_order_save(request): if request.method == 'POST': form = MonthlyBoxForm(request.POST) if form.is_valid(): # 1. add a monthly box thing to their basket total_quantity = int(form.cleaned_data['frequency']) * int( form.cleaned_data['quantity']) uproduct = form.cleaned_data['tea'] basket = _get_basket(request) item = BasketItem.objects.create( item=uproduct, quantity=total_quantity, basket=basket, monthly_order=True, months=int(form.cleaned_data['frequency']), weight=form.cleaned_data['quantity'], ) item.save() return HttpResponseRedirect(reverse('basket')) else: pass return HttpResponseRedirect(reverse('tea_boxes'))
def add_to_basket_multiple(request): if request.method == 'POST': form = AddMultipleItemsToBasket(request.POST) if form.is_valid(): for i in form.cleaned_data['items']: uproduct = i basket = _get_basket(request) try: item = get_object_or_404(BasketItem, basket=basket, item=uproduct, monthly_order=False) item.quantity += 1 except: item = BasketItem.objects.create(item=uproduct, quantity=1, basket=basket) item.save() # UPDATE THE USER'S SESSION VARIABLES try: request.session['BASKET_QUANTITY'] += 1 request.session['BASKET_AMOUNT'] += item.item.get_price() except: request.session['BASKET_QUANTITY'] = 0 request.session['BASKET_AMOUNT'] += item.item.get_price() if request.is_ajax(): message = render_to_string( 'shop/snippets/added_to_basket.html', { 'item': item.item.parent_product, 'weight': item.item.weight, 'weight_unit': RequestContext(request)['weight_unit'], 'url': reverse('basket'), }) basket_amount = '%.2f' % float( _get_basket_value(request)['total_price']) basket_quantity = '%.2f' % float( _get_basket_value(request)['basket_quantity']) data = { 'message': message, 'basket_quantity': basket_quantity, 'basket_amount': basket_amount } json = simplejson.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(json) url = request.META.get('HTTP_REFERER', '/') return HttpResponseRedirect(url)
def add_to_basket(request, id): uproduct = get_object_or_404(UniqueProduct, pk=id) basket = _get_basket(request) try: item = get_object_or_404(BasketItem, basket=basket, item=uproduct, monthly_order=False) item.quantity += 1 except: item = BasketItem.objects.create(item=uproduct, quantity=1, basket=basket) item.save() # UPDATE THE USER'S SESSION VARIABLES if 'BASKET_QUANTITY' in request.session: request.session['BASKET_QUANTITY'] = ( request.session['BASKET_QUANTITY'] + 1) else: request.session['BASKET_QUANTITY'] = 1 if 'BASKET_AMOUNT' in request.session: request.session['BASKET_AMOUNT'] = ( float(request.session['BASKET_AMOUNT']) + float(item.item.get_price())) else: request.session['BASKET_AMOUNT'] = item.item.get_price() if request.is_ajax(): message = render_to_string( 'shop/snippets/added_to_basket.html', { 'item': item.item.parent_product, 'weight': item.item.weight, 'weight_unit': RequestContext(request)['weight_unit'], 'url': reverse('basket'), }) basket_amount = '%.2f' % float( _get_basket_value(request)['total_price']) basket_quantity = '%.2f' % float( _get_basket_value(request)['basket_quantity']) data = { 'message': message, 'basket_quantity': basket_quantity, 'basket_amount': basket_amount } json = simplejson.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(json) url = request.META.get('HTTP_REFERER', '/') request.session['ADDED'] = item.id return HttpResponseRedirect(url)
def add_to_basket_monthly(request, productID, months): uproduct = get_object_or_404(UniqueProduct, id=productID) basket = _get_basket(request) try: item = get_object_or_404(BasketItem, basket=basket, item=uproduct, monthly_order=True, months=months) item.quantity += 1 except: item = BasketItem.objects.create(item=uproduct, quantity=1, basket=basket, monthly_order=True, months=months) item.save() if request.is_ajax(): basket = _get_basket_value(request) basket_quantity = '%.2f' % float(basket['basket_quantity']) monthly_price = '%.2f' % float(basket['monthly_price']) basket_value = '%.2f' % float(basket['total_price']) from shop.templatetags.convert_weights import convert_weights weight = convert_weights(request, item.item.weight) message = _( '<div class="message"><div class="text"><h3>%(months)s months of %(item)s added to your Monthly TeaBox! <a href="%(monthly_url)s">Add more</a> or <a href="%(url)s">Checkout now »</a></h3></div></div>' ) % { 'months': months, 'item': item.item.parent_product, 'url': reverse('basket'), 'monthly_url': reverse('monthly_tea_box'), } data = { 'basket_quantity': basket_quantity, 'monthly_price': monthly_price, 'message': message, 'basket_value': basket_value, } json = simplejson.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(json) url = request.META.get('HTTP_REFERER', '/') return HttpResponseRedirect(url)
def reduce_quantity_monthly(request, id): uproduct = get_object_or_404(UniqueProduct, pk=id) basket = _get_basket(request) basket_items = BasketItem.objects.filter(basket=basket) for x in basket_items: if x.item == uproduct: if x.quantity == 1: x.delete() else: x.quantity -= 1 x.save() break url = request.META.get("HTTP_REFERER", "/") return HttpResponseRedirect(url)
def reduce_quantity_monthly(request, id): uproduct = get_object_or_404(UniqueProduct, pk=id) basket = _get_basket(request) basket_items = BasketItem.objects.filter(basket=basket) for x in basket_items: if x.item == uproduct: if x.quantity == 1: x.delete() else: x.quantity -= 1 x.save() break url = request.META.get('HTTP_REFERER', '/') return HttpResponseRedirect(url)
def add_to_basket_multiple(request): if request.method == "POST": form = AddMultipleItemsToBasket(request.POST) if form.is_valid(): for i in form.cleaned_data["items"]: uproduct = i basket = _get_basket(request) try: item = get_object_or_404(BasketItem, basket=basket, item=uproduct, monthly_order=False) item.quantity += 1 except: item = BasketItem.objects.create(item=uproduct, quantity=1, basket=basket) item.save() # UPDATE THE USER'S SESSION VARIABLES try: request.session["BASKET_QUANTITY"] += 1 request.session["BASKET_AMOUNT"] += item.item.get_price() except: request.session["BASKET_QUANTITY"] = 0 request.session["BASKET_AMOUNT"] += item.item.get_price() if request.is_ajax(): message = render_to_string( "shop/snippets/added_to_basket.html", { "item": item.item.parent_product, "weight": item.item.weight, "weight_unit": RequestContext(request)["weight_unit"], "url": reverse("basket"), }, ) basket_amount = "%.2f" % float(_get_basket_value(request)["total_price"]) basket_quantity = "%.2f" % float(_get_basket_value(request)["basket_quantity"]) data = {"message": message, "basket_quantity": basket_quantity, "basket_amount": basket_amount} json = simplejson.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(json) url = request.META.get("HTTP_REFERER", "/") return HttpResponseRedirect(url)
def add_to_basket(request, id): uproduct = get_object_or_404(UniqueProduct, pk=id) basket = _get_basket(request) try: item = get_object_or_404(BasketItem, basket=basket, item=uproduct, monthly_order=False) item.quantity += 1 except: item = BasketItem.objects.create(item=uproduct, quantity=1, basket=basket) item.save() # UPDATE THE USER'S SESSION VARIABLES if "BASKET_QUANTITY" in request.session: request.session["BASKET_QUANTITY"] = request.session["BASKET_QUANTITY"] + 1 else: request.session["BASKET_QUANTITY"] = 1 if "BASKET_AMOUNT" in request.session: request.session["BASKET_AMOUNT"] = float(request.session["BASKET_AMOUNT"]) + float(item.item.get_price()) else: request.session["BASKET_AMOUNT"] = item.item.get_price() if request.is_ajax(): message = render_to_string( "shop/snippets/added_to_basket.html", { "item": item.item.parent_product, "weight": item.item.weight, "weight_unit": RequestContext(request)["weight_unit"], "url": reverse("basket"), }, ) basket_amount = "%.2f" % float(_get_basket_value(request)["total_price"]) basket_quantity = "%.2f" % float(_get_basket_value(request)["basket_quantity"]) data = {"message": message, "basket_quantity": basket_quantity, "basket_amount": basket_amount} json = simplejson.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(json) url = request.META.get("HTTP_REFERER", "/") request.session["ADDED"] = item.id return HttpResponseRedirect(url)
def add_to_basket_monthly(request, productID, months): uproduct = get_object_or_404(UniqueProduct, id=productID) basket = _get_basket(request) try: item = get_object_or_404(BasketItem, basket=basket, item=uproduct, monthly_order=True, months=months) item.quantity += 1 except: item = BasketItem.objects.create(item=uproduct, quantity=1, basket=basket, monthly_order=True, months=months) item.save() if request.is_ajax(): basket = _get_basket_value(request) basket_quantity = "%.2f" % float(basket["basket_quantity"]) monthly_price = "%.2f" % float(basket["monthly_price"]) basket_value = "%.2f" % float(basket["total_price"]) from shop.templatetags.convert_weights import convert_weights weight = convert_weights(request, item.item.weight) message = _( '<div class="message"><div class="text"><h3>%(months)s months of %(item)s added to your Monthly TeaBox! <a href="%(monthly_url)s">Add more</a> or <a href="%(url)s">Checkout now »</a></h3></div></div>' ) % { "months": months, "item": item.item.parent_product, "url": reverse("basket"), "monthly_url": reverse("monthly_tea_box"), } data = { "basket_quantity": basket_quantity, "monthly_price": monthly_price, "message": message, "basket_value": basket_value, } json = simplejson.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(json) url = request.META.get("HTTP_REFERER", "/") return HttpResponseRedirect(url)
def monthly_tea_box(request): product = get_object_or_404(Product, slug=_('monthly-tea-box')) products = Product.objects.filter( category__parent_category__slug=_('teas'), is_active=True) basket_items = BasketItem.objects.filter(basket=_get_basket(request)) try: months = int(request.session['MONTHS']) except: months = settings.TEABOX_DEFAULT_MONTHS if product.is_active: excluded = [] total_quantity = 0 for x in products: x.single_price = x.get_lowest_price(_get_currency(request), exclude_sales=True) if not x.single_price.stocks(): excluded.append(x.id) continue # weird... the above thing doesn't work. try: x.price = _get_monthly_price(x.single_price, months) except: x.price = None x.quantity = 0 for y in basket_items: if x.single_price == y.item: x.quantity += y.quantity total_quantity += 1 products.exclude(id__in=excluded, name__icontains=_("taster")) return _render(request, 'shop/monthly_tea_box.html', locals())
def category(request, slug): curr = _get_currency(request) if slug == _("teas") or slug == _("teaware"): products = None category = get_object_or_404(Category, slug=slug) categories = Category.objects.filter(parent_category__slug=slug) for c in categories: c.products = _get_products(request, c.slug) else: category = get_object_or_404(Category, slug=slug) products = _get_products(request, category.slug) basket = _get_basket(request) if basket and products: for x in products: basket_item = BasketItem.objects.filter(basket=basket, item=x.get_lowest_price(curr)) x.price = x.get_lowest_price(curr) if basket_item.count() > 0: x.basket_quantity = basket_item[0].quantity return _render(request, "shop/category.html", locals())
def monthly_tea_box(request): product = get_object_or_404(Product, slug=_("monthly-tea-box")) products = Product.objects.filter(category__parent_category__slug=_("teas"), is_active=True) basket_items = BasketItem.objects.filter(basket=_get_basket(request)) try: months = int(request.session["MONTHS"]) except: months = settings.TEABOX_DEFAULT_MONTHS if product.is_active: excluded = [] total_quantity = 0 for x in products: x.single_price = x.get_lowest_price(_get_currency(request), exclude_sales=True) if not x.single_price.stocks(): excluded.append(x.id) continue # weird... the above thing doesn't work. try: x.price = _get_monthly_price(x.single_price, months) except: x.price = None x.quantity = 0 for y in basket_items: if x.single_price == y.item: x.quantity += y.quantity total_quantity += 1 products.exclude(id__in=excluded, name__icontains=_("taster")) return _render(request, "shop/monthly_tea_box.html", locals())
def category(request, slug): curr = _get_currency(request) if slug == _('teas') or slug == _('teaware'): products = None category = get_object_or_404(Category, slug=slug) categories = Category.objects.filter(parent_category__slug=slug) for c in categories: c.products = _get_products(request, c.slug) else: category = get_object_or_404(Category, slug=slug) products = _get_products(request, category.slug) basket = _get_basket(request) if basket and products: for x in products: basket_item = BasketItem.objects.filter( basket=basket, item=x.get_lowest_price(curr)) x.price = x.get_lowest_price(curr) if basket_item.count() > 0: x.basket_quantity = basket_item[0].quantity return _render(request, "shop/category.html", locals())