def add(request, id=0, redirect_to="satchmo_cart"): """Add an item to the cart.""" log.debug("FORM: %s", request.POST) formdata = request.POST.copy() productslug = None if "productname" in formdata: productslug = formdata["productname"] try: product, details = product_from_post(productslug, formdata) if not (product and product.active): return _product_error( request, product, _("That product is not available at the moment.")) except (Product.DoesNotExist, MultiValueDictKeyError): log.debug("Could not find product: %s", productslug) return bad_or_missing( request, _("The product you have requested does not exist.")) try: quantity = int(formdata["quantity"]) except ValueError: return _product_error(request, product, _("Please enter a whole number.")) if quantity < 1: return _product_error(request, product, _("Please enter a positive number.")) cart = Cart.objects.from_request(request, create=True) # send a signal so that listeners can update product details before we add it to the cart. satchmo_cart_details_query.send( cart, product=product, quantity=quantity, details=details, request=request, form=formdata, ) try: added_item = cart.add_item(product, number_added=quantity, details=details) except CartAddProhibited as cap: return _product_error(request, product, cap.message) # got to here with no error, now send a signal so that listeners can also operate on this form. satchmo_cart_add_complete.send( cart, cart=cart, cartitem=added_item, product=product, request=request, form=formdata, ) satchmo_cart_changed.send(cart, cart=cart, request=request) url = reverse(redirect_to) return HttpResponseRedirect(url)
def add(request, id=0, redirect_to="satchmo_cart"): """Add an item to the cart.""" log.debug("FORM: %s", request.POST) formdata = request.POST.copy() productslug = None if "productname" in formdata: productslug = formdata["productname"] try: product, details = product_from_post(productslug, formdata) if not (product and product.active): return _product_error( request, product, _("That product is not available at the moment.") ) except (Product.DoesNotExist, MultiValueDictKeyError): log.debug("Could not find product: %s", productslug) return bad_or_missing( request, _("The product you have requested does not exist.") ) try: quantity = int(formdata["quantity"]) except ValueError: return _product_error(request, product, _("Please enter a whole number.")) if quantity < 1: return _product_error(request, product, _("Please enter a positive number.")) cart = Cart.objects.from_request(request, create=True) # send a signal so that listeners can update product details before we add it to the cart. satchmo_cart_details_query.send( cart, product=product, quantity=quantity, details=details, request=request, form=formdata, ) try: added_item = cart.add_item(product, number_added=quantity, details=details) except CartAddProhibited as cap: return _product_error(request, product, cap.message) # got to here with no error, now send a signal so that listeners can also operate on this form. satchmo_cart_add_complete.send( cart, cart=cart, cartitem=added_item, product=product, request=request, form=formdata, ) satchmo_cart_changed.send(cart, cart=cart, request=request) url = reverse(redirect_to) return HttpResponseRedirect(url)
def add(request, id=0, redirect_to='satchmo_cart'): """Add an item to the cart.""" log.debug('FORM: %s', request.POST) formdata = request.POST.copy() productslug = None if 'productname' in formdata: productslug = formdata['productname'] try: product, details = product_from_post(productslug, formdata) if not (product and product.active): return _product_error( request, product, _("That product is not available at the moment.")) except (Product.DoesNotExist, MultiValueDictKeyError): log.debug("Could not find product: %s", productslug) return bad_or_missing( request, _('The product you have requested does not exist.')) try: quantity = int(formdata['quantity']) except ValueError: return _product_error(request, product, _("Please enter a whole number.")) if quantity < 1: return _product_error(request, product, _("Please enter a positive number.")) cart = Cart.objects.from_request(request, create=True) # send a signal so that listeners can update product details before we add it to the cart. satchmo_cart_details_query.send(cart, product=product, quantity=quantity, details=details, request=request, form=formdata) try: added_item = cart.add_item(product, number_added=quantity, details=details) except CartAddProhibited, cap: return _product_error(request, product, cap.message)
def add(request, id=0, redirect_to='satchmo_cart'): """Add an item to the cart.""" log.debug('FORM: %s', request.POST) formdata = request.POST.copy() productslug = None if formdata.has_key('productname'): productslug = formdata['productname'] try: product, details = product_from_post(productslug, formdata) if not (product and product.active): return _product_error(request, product, _("That product is not available at the moment.")) except (Product.DoesNotExist, MultiValueDictKeyError): log.debug("Could not find product: %s", productslug) return bad_or_missing(request, _('The product you have requested does not exist.')) try: quantity = int(formdata['quantity']) except ValueError: return _product_error(request, product, _("Please enter a whole number.")) if quantity < 1: return _product_error(request, product, _("Please enter a positive number.")) cart = Cart.objects.from_request(request, create=True) # send a signal so that listeners can update product details before we add it to the cart. satchmo_cart_details_query.send( cart, product=product, quantity=quantity, details=details, request=request, form=formdata ) try: added_item = cart.add_item(product, number_added=quantity, details=details) except CartAddProhibited, cap: return _product_error(request, product, cap.message)
def add_ajax(request, id=0, template="json.html"): data = {'errors': []} product = None formdata = request.POST.copy() if not formdata.has_key('productname'): data['errors'].append(('product', _('No product requested'))) else: productslug = formdata['productname'] log.debug('CART_AJAX: slug=%s', productslug) try: product, details = product_from_post(productslug, formdata) except Product.DoesNotExist: log.warn("Could not find product: %s", productslug) product = None if not product: data['errors'].append(('product', _('The product you have requested does not exist.'))) else: if not product.active: data['errors'].append(('product', _('That product is not available at the moment.'))) else: data['id'] = product.id data['name'] = product.translated_name() if not formdata.has_key('quantity'): quantity = -1 else: quantity = formdata['quantity'] try: quantity = int(quantity) if quantity < 0: data['errors'].append(('quantity', _('Choose a quantity.'))) except (TypeError, ValueError): data['errors'].append(('quantity', _('Choose a whole number.'))) tempCart = Cart.objects.from_request(request, create=True) if not data['errors']: # send a signal so that listeners can update product details before we add it to the cart. satchmo_cart_details_query.send( tempCart, product=product, quantity=quantity, details=details, request=request, form=formdata ) try: added_item = tempCart.add_item(product, number_added=quantity) request.session['cart'] = tempCart.id data['results'] = _('Success') if added_item: # send a signal so that listeners can also operate on this form and item. satchmo_cart_add_complete.send( tempCart, cartitem=added_item, product=product, request=request, form=formdata ) except CartAddProhibited, cap: data['results'] = _('Error') data['errors'].append(('product', cap.message))
def add_ajax(request, id=0, template="json.html"): data = {"errors": []} product = None formdata = request.POST.copy() if "productname" not in formdata: data["errors"].append(("product", _("No product requested"))) else: productslug = formdata["productname"] log.debug("CART_AJAX: slug=%s", productslug) try: product, details = product_from_post(productslug, formdata) except Product.DoesNotExist: log.warn("Could not find product: %s", productslug) product = None if not product: data["errors"].append( ("product", _("The product you have requested does not exist."))) else: if not product.active: data["errors"].append( ("product", _("That product is not available at the moment."))) else: data["id"] = product.id data["name"] = product.name if "quantity" not in formdata: quantity = -1 else: quantity = formdata["quantity"] try: quantity = int(quantity) if quantity < 0: data["errors"].append( ("quantity", _("Choose a quantity."))) except (TypeError, ValueError): data["errors"].append( ("quantity", _("Choose a whole number."))) tempCart = Cart.objects.from_request(request, create=True) if not data["errors"]: # send a signal so that listeners can update product details before we add it to the cart. satchmo_cart_details_query.send( tempCart, product=product, quantity=quantity, details=details, request=request, form=formdata, ) try: added_item = tempCart.add_item(product, number_added=quantity) request.session["cart"] = tempCart.id data["results"] = _("Success") if added_item: # send a signal so that listeners can also operate on this form and item. satchmo_cart_add_complete.send( tempCart, cartitem=added_item, product=product, request=request, form=formdata, ) except CartAddProhibited as cap: data["results"] = _("Error") data["errors"].append(("product", cap.message)) else: data["results"] = _("Error") data["cart_count"] = tempCart.numItems encoded = json.JSONEncoder().encode(data) encoded = mark_safe(encoded) log.debug("CART AJAX: %s", data) satchmo_cart_changed.send(tempCart, cart=tempCart, request=request) return render(template, {"json": encoded})
def add_ajax(request, id=0, template="json.html"): data = {"errors": []} product = None formdata = request.POST.copy() if "productname" not in formdata: data["errors"].append(("product", _("No product requested"))) else: productslug = formdata["productname"] log.debug("CART_AJAX: slug=%s", productslug) try: product, details = product_from_post(productslug, formdata) except Product.DoesNotExist: log.warn("Could not find product: %s", productslug) product = None if not product: data["errors"].append( ("product", _("The product you have requested does not exist.")) ) else: if not product.active: data["errors"].append( ("product", _("That product is not available at the moment.")) ) else: data["id"] = product.id data["name"] = product.translated_name() if "quantity" not in formdata: quantity = -1 else: quantity = formdata["quantity"] try: quantity = int(quantity) if quantity < 0: data["errors"].append(("quantity", _("Choose a quantity."))) except (TypeError, ValueError): data["errors"].append(("quantity", _("Choose a whole number."))) tempCart = Cart.objects.from_request(request, create=True) if not data["errors"]: # send a signal so that listeners can update product details before we add it to the cart. satchmo_cart_details_query.send( tempCart, product=product, quantity=quantity, details=details, request=request, form=formdata, ) try: added_item = tempCart.add_item(product, number_added=quantity) request.session["cart"] = tempCart.id data["results"] = _("Success") if added_item: # send a signal so that listeners can also operate on this form and item. satchmo_cart_add_complete.send( tempCart, cartitem=added_item, product=product, request=request, form=formdata, ) except CartAddProhibited as cap: data["results"] = _("Error") data["errors"].append(("product", cap.message)) else: data["results"] = _("Error") data["cart_count"] = tempCart.numItems encoded = json.JSONEncoder().encode(data) encoded = mark_safe(encoded) log.debug("CART AJAX: %s", data) satchmo_cart_changed.send(tempCart, cart=tempCart, request=request) return render(template, {"json": encoded})
def add_ajax(request, id=0, template="json.html"): data = {'errors': []} product = None formdata = request.POST.copy() if 'productname' not in formdata: data['errors'].append(('product', _('No product requested'))) else: productslug = formdata['productname'] log.debug('CART_AJAX: slug=%s', productslug) try: product, details = product_from_post(productslug, formdata) except Product.DoesNotExist: log.warn("Could not find product: %s", productslug) product = None if not product: data['errors'].append( ('product', _('The product you have requested does not exist.'))) else: if not product.active: data['errors'].append( ('product', _('That product is not available at the moment.'))) else: data['id'] = product.id data['name'] = product.translated_name() if 'quantity' not in formdata: quantity = -1 else: quantity = formdata['quantity'] try: quantity = int(quantity) if quantity < 0: data['errors'].append( ('quantity', _('Choose a quantity.'))) except (TypeError, ValueError): data['errors'].append( ('quantity', _('Choose a whole number.'))) tempCart = Cart.objects.from_request(request, create=True) if not data['errors']: # send a signal so that listeners can update product details before we add it to the cart. satchmo_cart_details_query.send(tempCart, product=product, quantity=quantity, details=details, request=request, form=formdata) try: added_item = tempCart.add_item(product, number_added=quantity) request.session['cart'] = tempCart.id data['results'] = _('Success') if added_item: # send a signal so that listeners can also operate on this form and item. satchmo_cart_add_complete.send(tempCart, cartitem=added_item, product=product, request=request, form=formdata) except CartAddProhibited, cap: data['results'] = _('Error') data['errors'].append(('product', cap.message))