def get_price(request, product_slug): """Get base price for a product, returning the answer encoded as JSON.""" quantity = 1 try: product = Product.objects.get_by_site(active=True, slug=product_slug) except Product.DoesNotExist: return http.HttpResponseNotFound(json_encode(('', _("not available"))), mimetype="text/javascript") prod_slug = product.slug if request.method == "POST" and 'quantity' in request.POST: quantity = int(request.POST['quantity']) if 'ConfigurableProduct' in product.get_subtypes(): cp = product.configurableproduct chosen_options = optionids_from_post(cp, request.POST) pvp = cp.get_product_from_options(chosen_options) if not pvp: return http.HttpResponse(json_encode(('', _("not available"))), mimetype="text/javascript") prod_slug = pvp.slug price = money_format(pvp.get_qty_price(quantity)) else: price = money_format(product.get_qty_price(quantity)) if not price: return http.HttpResponse(json_encode(('', _("not available"))), mimetype="text/javascript") return http.HttpResponse(json_encode((prod_slug, price)), mimetype="text/javascript")
def get_price_detail(request, product_slug): """Get all price details for a product, returning the response encoded as JSON.""" results = { "success" : False, "message" : _("not available") } price = None if request.method=="POST": reqdata = request.POST else: reqdata = request.GET try: product = Product.objects.get_by_site(active=True, slug=product_slug) found = True prod_slug = product.slug if reqdata.has_key('quantity'): quantity = int(reqdata['quantity']) else: quantity = 1 if 'ConfigurableProduct' in product.get_subtypes(): cp = product.configurableproduct chosen_options = optionids_from_post(cp, reqdata) product = cp.get_product_from_options(chosen_options) if product: price = product.get_qty_price(quantity) base_tax = get_tax(request.user, product, quantity) price_with_tax = price+base_tax results['slug'] = product.slug results['currency_price'] = moneyfmt(price) results['price'] = float(price) results['tax'] = float(base_tax) results['currency_tax'] = moneyfmt(base_tax) results['currency_price_with_tax'] = moneyfmt(price_with_tax) results['price_with_tax'] = float(price_with_tax) results['success'] = True results['message'] = "" except Product.DoesNotExist: found = False data = json_encode(results) if found: return http.HttpResponse(data, mimetype="text/javascript") else: return http.HttpResponseNotFound(data, mimetype="text/javascript")
def get_price_detail(request, product_slug): """Get all price details for a product, returning the response encoded as JSON.""" results = {"success": False, "message": _("not available")} price = None if request.method == "POST": reqdata = request.POST else: reqdata = request.GET try: product = Product.objects.active().get(slug=product_slug) found = True if "quantity" in reqdata: quantity = int(reqdata["quantity"]) else: quantity = 1 if "ConfigurableProduct" in product.get_subtypes(): cp = product.configurableproduct chosen_options = optionids_from_post(cp, reqdata) product = cp.get_product_from_options(chosen_options) if product: price = product.get_qty_price(quantity) base_tax = get_tax(request.user, product, quantity) price_with_tax = price + base_tax currency_code = currency_for_request(request) results["slug"] = product.slug results["currency_price"] = money_format(price, currency_code) results["price"] = float(price) results["tax"] = float(base_tax) results["currency_tax"] = money_format(base_tax, currency_code) results["currency_price_with_tax"] = money_format( price_with_tax, currency_code) results["price_with_tax"] = float(price_with_tax) results["success"] = True results["message"] = "" except Product.DoesNotExist: found = False data = json_encode(results) if found: return http.HttpResponse(data, mimetype="text/javascript") else: return http.HttpResponseNotFound(data, mimetype="text/javascript")
def as_json(value): """Return the value as a json encoded object""" return mark_safe(json_encode(value))