Skip to content
This repository has been archived by the owner on Jul 29, 2020. It is now read-only.

Commit

Permalink
Merge pull request #129 from kraenhansen/fix/add-to-cart-again
Browse files Browse the repository at this point in the history
Fixed the add to cart again
  • Loading branch information
Kræn Hansen committed Oct 10, 2016
2 parents 9beaf7f + b8eb8ac commit 04a0b4c
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 49 deletions.
37 changes: 9 additions & 28 deletions eggplant/market/templates/eggplant/market/market_home.html
Expand Up @@ -58,41 +58,22 @@ <h3>{% trans 'Basket' %}</h3>
</tr>
{% endfor %}
</table>
<a class="btn btn-primary" href="{% url 'eggplant:market:checkout' %}">
{% trans 'Go to checkout' %}
</a>
<a class="btn btn-primary" href="{% url 'eggplant:market:cart_details' %}">
{% trans 'Your basket' %}
</a>
{% endif %}

{% endblock %}

{% block content_right_col %}
<h2>Market</h2>

<div class="row">
<div class="col-10">
<h1 class="page-header">Order groceries:</h1>
</div>
</div>

<div class="row">
<div class="col-10">
<p>Filter products:</p>
</div>
</div>

<div class="row">
<div class="col-10">
{{product_filter.form}}
</div>
</div>

{% if products %}
<div class="row">
<div class="col-md-9 text-right">
<a class="btn btn-primary" href="{% url 'eggplant:market:cart_details' %}">your basket</a>
{% if basket_items %}
<a class="btn btn-primary" href="{% url 'eggplant:market:checkout' %}">go to checkout</a>
{% endif %}
</div>
<div>
Filter products: {{product_filter.form}}
</div>
<br />
{% endif %}

{% for sublist in product_filter|partition:"3" %}
<div class="row">
Expand Down
22 changes: 11 additions & 11 deletions eggplant/market/templatetags/cart_tags.py
@@ -1,4 +1,5 @@
from django import template
from django.template import Template
from django.core.urlresolvers import reverse
from django.template.base import TemplateSyntaxError

Expand All @@ -25,24 +26,23 @@ def cart_action(context, action, product_id=None, quantity=None,
else:
raise TemplateSyntaxError("action `{}` not supported".format(action))
quantity = quantity or 1
fmt = {
context.update({
'action': action,
'action_url': url,
'btn_css_classes': btn_css_classes,
'product_id': int(product_id),
'quantity': int(quantity),
'csrf_token': context['csrf_token'],
}
html = ('''
<form action="{action_url}" method="POST">
})
return Template('''
<form action="{{action_url}}" method="POST">
''' + delivery_date_field + '''
<input name="product" type="hidden" value="{product_id}"/>
<input name="quantity" type="hidden" value="{quantity}"/>
<input name="csrfmiddlewaretoken" type="hidden" value="{csrf_token}" />
<input name="product" type="hidden" value="{{product_id}}"/>
<input name="quantity" type="hidden" value="{{quantity}}"/>
<input name="csrfmiddlewaretoken" type="hidden" value="{{csrf_token}}" />
<p class="pull-right">
<button type="submit"
class="{btn_css_classes}"
role="button" >{action}</button>
class="{{btn_css_classes}}"
role="button" >{{action}}</button>
</p>
</form>''').format(**fmt)
return html
</form>''').render(context)
22 changes: 12 additions & 10 deletions eggplant/market/views/cart.py
Expand Up @@ -39,15 +39,17 @@ def form_valid(self, form):
"than %d items in your basket.") % (max_items)
messages.warning(self.request, msg)
return redirect('eggplant:market:market_home')
if form.cleaned_data['product'].stock < 1 or not form.cleaned_data['product'].enabled:
msg = _("Sorry, this product is currently out of stock")
product = form.cleaned_data['product']
quantity = form.cleaned_data['quantity']
if not product.enabled or (product.stock is not None and
product.stock < quantity):
msg = _("Sorry, this product is currently not this much on stock")
messages.warning(self.request, msg)
return redirect('eggplant:market:market_home')
self.basket.add_to_items(**form.cleaned_data)
stock = form.cleaned_data['product'].stock - \
form.cleaned_data['quantity']
Product.objects.filter(id=form.cleaned_data['product'].id)\
.update(stock=stock)
if product.stock is not None:
stock = product.stock - quantity
Product.objects.filter(id=product.id).update(stock=stock)
msg = _("You have just added %s to your basket.") % \
(form.cleaned_data['product'].title)
messages.info(self.request, msg)
Expand All @@ -60,10 +62,10 @@ def form_valid(self, form):
with transaction.atomic():
super().form_valid(form)
self.basket.remove_from_items(**form.cleaned_data)
stock = form.cleaned_data['product'].stock + \
form.cleaned_data['quantity']
Product.objects.filter(id=form.cleaned_data['product'].id)\
.update(stock=stock)
product = form.cleaned_data['product']
if product.stock is not None:
stock = product.stock + form.cleaned_data['quantity']
Product.objects.filter(id=product.id).update(stock=stock)
return redirect('eggplant:market:cart_details')
remove_from_cart = login_required(RemoveFromCart.as_view())

Expand Down

0 comments on commit 04a0b4c

Please sign in to comment.