lingo: don't allow grouping items from different regies (#11135)

This commit is contained in:
Frédéric Péters 2016-05-31 15:59:31 +02:00
parent 291484aee9
commit 3fc67cfb67
3 changed files with 23 additions and 6 deletions

View File

@ -325,10 +325,19 @@ class LingoBasketCell(CellBase):
def render(self, context):
basket_template = template.loader.get_template('lingo/combo/basket.html')
context['items'] = BasketItem.objects.filter(
items = BasketItem.objects.filter(
user=context['request'].user, payment_date__isnull=True
).exclude(cancellation_date__isnull=False)
context['total'] = sum([x.amount for x in context['items']])
regies = {}
for item in items:
if not item.regie_id in regies:
regies[item.regie_id] = {'items': [], 'regie': item.regie}
regies[item.regie_id]['items'].append(item)
for items in regies.values():
items['total'] = sum([x.amount for x in items['items']])
context['regies'] = regies.values()
return basket_template.render(context)

View File

@ -1,11 +1,13 @@
{% load i18n %}
{% if total %}
{% if regies %}
<h2>{% trans "Basket" %}</h2>
{% for regie_info in regies %}
{% if regies|length != 1 %}<h3 class="regie-name">{{regie_info.regie.label}}</h3>{% endif %}
<form action="{% url 'lingo-pay' %}" method="POST">
{% csrf_token %}
<input type="hidden" name="next_url" value="{{ cell.page.get_online_url }}" />
<ul>
{% for item in items %}
{% for item in regie_info.items %}
<li><label><input type="checkbox" name="item" value="{{ item.id }}" checked/>
<a href="{{ item.source_url }}">{{ item.subject }}</a>: {{ item.amount }} €</label>
{% if item.user_cancellable %}
@ -13,8 +15,9 @@
{% endif %}
</li>
{% endfor %}
<li><strong>{% trans "Total:" %}</strong> {{ total }} €</li>
<li><strong>{% trans "Total:" %}</strong> {{ regie_info.total }} €</li>
</ul>
<input type="submit" value="{% trans "Pay" %}"/>
</form>
{% endfor %}
{% endif %}

View File

@ -205,7 +205,12 @@ class PayView(View):
remote_items = ''
else:
items = BasketItem.objects.filter(id__in=request.POST.getlist('item'))
# XXX: check all items are going to the same regie
regie_id = items[0].regie_id
for item in items:
if item.regie_id != regie_id:
messages.error(request, _(u'Invalid grouping for basket items.'))
return HttpResponseRedirect(next_url)
regie = items[0].regie
remote_items = ''