Show selected add-ons in questions step

This commit is contained in:
Raphael Michel
2017-10-27 00:01:24 +02:00
parent 28682c7c33
commit 2b8d12f987
4 changed files with 29 additions and 4 deletions

View File

@@ -348,7 +348,7 @@ class QuestionsStep(QuestionsViewMixin, CartMixin, TemplateFlowStep):
messages.warning(request, _('Please enter your name.'))
return False
for cp in self.positions:
for cp in self._positions_for_questions:
answ = {
aw.question_id: aw.answer for aw in cp.answers.all()
}

View File

@@ -72,6 +72,20 @@
<div id="cp{{ pos.id }}"
class="panel-collapse collapse in">
<div class="panel-body" data-idx="{{ forloop.counter0 }}">
{% if pos.addons.all %}
<div class="form-group">
<label class="col-md-3 control-label">
{% trans "Selected add-ons" %}
</label>
<div class="col-md-9 form-control-text">
<ul class="addon-list">
{% for a in pos.addons.all %}
<li>{{ a.item.name }}{% if a.variation %} {{ a.variation.value }}{% endif %}</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
{% for form in forms %}
{% if form.pos.item != pos.item %}
{# Add-Ons #}

View File

@@ -22,8 +22,12 @@ class QuestionsViewMixin:
addon_penalty = 1 if pos.addon_to else 0
return i, addon_penalty, pos.pk
@cached_property
def _positions_for_questions(self):
return sorted(get_cart(self.request), key=self._keyfunc)
cart = get_cart(self.request).select_related(
'addon_to'
).prefetch_related('addons', 'addons__item', 'addons__variation')
return sorted(list(cart), key=self._keyfunc)
@cached_property
def forms(self):
@@ -33,7 +37,7 @@ class QuestionsViewMixin:
submitted at once.
"""
formlist = []
for cr in self._positions_for_questions():
for cr in self._positions_for_questions:
cartpos = cr if isinstance(cr, CartPosition) else None
orderpos = cr if isinstance(cr, OrderPosition) else None
form = QuestionsForm(event=self.request.event,

View File

@@ -40,5 +40,12 @@
}
.form-group.required .control-label:after {
content: '*';
color: $brand-primary
color: $brand-primary;
}
.form-control-text {
padding-top: 7px;
}
.addon-list {
padding: 0;
list-style-type: none;
}