コード例 #1
0
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)
コード例 #2
0
ファイル: cart.py プロジェクト: ToeKnee/jelly-roll
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)
コード例 #3
0
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)
コード例 #4
0
ファイル: cart.py プロジェクト: jimmcgaw/levicci
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)
コード例 #5
0
ファイル: cart.py プロジェクト: jimmcgaw/levicci
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))
コード例 #6
0
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})
コード例 #7
0
ファイル: cart.py プロジェクト: ToeKnee/jelly-roll
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})
コード例 #8
0
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))