Ejemplo n.º 1
0
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"))
Ejemplo n.º 2
0
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'))
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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 &raquo;</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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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 &raquo;</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)
Ejemplo n.º 11
0
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())
Ejemplo n.º 12
0
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())
Ejemplo n.º 13
0
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())
Ejemplo n.º 14
0
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())