def get_price(request, product_slug): """Get base price for a product, returning the answer encoded as JSON.""" quantity = Decimal('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 request.POST.has_key('quantity'): try: quantity = round_decimal(request.POST['quantity'], places=2, roundfactor=.25) except RoundedDecimalError: quantity = Decimal('1.0') log.warn("Could not parse a decimal from '%s', returning '1.0'", 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 = moneyfmt(pvp.get_qty_price(quantity)) else: price = moneyfmt(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(request, product_slug): """Get base price for a product, returning the answer encoded as JSON.""" quantity = Decimal('1') try: product = Product.objects.get_by_site(active=True, slug=product_slug) except Product.DoesNotExist: return http.HttpResponseNotFound(json_encode(('', _("not available"))), content_type="text/javascript") prod_slug = product.slug if request.method == "POST" and request.POST.has_key('quantity'): try: quantity = round_decimal(request.POST['quantity'], places=2, roundfactor=.25) except RoundedDecimalError: quantity = Decimal('1.0') log.warn("Could not parse a decimal from '%s', returning '1.0'", 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"))), content_type="text/javascript") prod_slug = pvp.slug price = moneyfmt(pvp.get_qty_price(quantity)) else: price = moneyfmt(product.get_qty_price(quantity)) if not price: return http.HttpResponse(json_encode(('', _("not available"))), content_type="text/javascript") return http.HttpResponse(json_encode((prod_slug, price)), content_type="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'): try: quantity = round_decimal(reqdata['quantity'], places=2, roundfactor=.25) except RoundedDecimalError: quantity = Decimal('1.0') log.warn( "Could not parse a decimal from '%s', returning '1.0'", reqdata['quantity']) else: quantity = Decimal('1.0') 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) results['slug'] = product.slug results['price'] = float(price) results['success'] = True results['message'] = "" except Product.DoesNotExist: found = False data = json_encode(results) if found: return http.HttpResponse(data, content_type="text/javascript") else: return http.HttpResponseNotFound(data, content_type="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'): try: quantity = round_decimal(reqdata['quantity'], places=2, roundfactor=.25) except RoundedDecimalError: quantity = Decimal('1.0') log.warn("Could not parse a decimal from '%s', returning '1.0'", reqdata['quantity']) else: quantity = Decimal('1.0') 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) results['slug'] = product.slug results['price'] = float(price) 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))