lingo: don't allow grouping items from different regies (#11135)
This commit is contained in:
parent
291484aee9
commit
3fc67cfb67
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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 = ''
|
||||
|
||||
|
|
Loading…
Reference in New Issue