mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
Allow to release quota after exit scans
This commit is contained in:
@@ -186,7 +186,8 @@ class QuotaForm(I18nModelForm):
|
||||
'name',
|
||||
'size',
|
||||
'subevent',
|
||||
'close_when_sold_out'
|
||||
'close_when_sold_out',
|
||||
'release_after_exit',
|
||||
]
|
||||
field_classes = {
|
||||
'subevent': SafeModelChoiceField,
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
{% blocktrans with name=quota.name %}Quota: {{ name }}{% endblocktrans %}
|
||||
{% if 'can_change_items' in request.eventpermset %}
|
||||
<a href="{% url "control:event.items.quotas.edit" event=request.event.slug organizer=request.event.organizer.slug quota=quota.pk %}"
|
||||
class="btn btn-default">
|
||||
class="btn btn-default">
|
||||
<span class="fa fa-edit"></span>
|
||||
{% trans "Edit quota" %}
|
||||
</a>
|
||||
@@ -34,7 +34,8 @@
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="alert alert-warning">
|
||||
<button type="submit" class="btn btn-primary pull-right flip" name="reopen" value="true">{% trans "Open quota" %}</button>
|
||||
<button type="submit" class="btn btn-primary pull-right flip" name="reopen"
|
||||
value="true">{% trans "Open quota" %}</button>
|
||||
{% trans "This quota is closed since it has been sold out before. Tickets are theoretically available, but will not be sold unless you manually re-open the quota." %}
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
@@ -65,9 +66,11 @@
|
||||
{% if row.strong %}</strong>{% endif %}
|
||||
</div>
|
||||
<div class="col-xs-3 flip text-right">
|
||||
{% if row.strong %}<strong>{% endif %}
|
||||
{% if not row.strong %}–{% endif %} {{ row.value }}
|
||||
{% if row.strong %}</strong>{% endif %}
|
||||
{% if row.strong %}
|
||||
<strong>{{ row.value }}</strong>
|
||||
{% else %}
|
||||
{% if row.value >= 0 %}– {{ row.value }}{% else %}+ {{ row.value_abs }}{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
<fieldset>
|
||||
<legend>{% trans "Advanced options" %}</legend>
|
||||
{% bootstrap_field form.close_when_sold_out layout="control" %}
|
||||
{% bootstrap_field form.release_after_exit layout="control" %}
|
||||
</fieldset>
|
||||
<div class="form-group submit-group">
|
||||
<button type="submit" class="btn btn-primary btn-save">
|
||||
|
||||
@@ -422,6 +422,7 @@
|
||||
{% bootstrap_form_errors form %}
|
||||
{% bootstrap_field form.size layout="control" %}
|
||||
{% bootstrap_field form.itemvars layout="control" %}
|
||||
{% bootstrap_field form.release_after_exit layout="control" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
@@ -449,6 +450,7 @@
|
||||
<div class="panel-body form-horizontal">
|
||||
{% bootstrap_field formset.empty_form.size layout="control" %}
|
||||
{% bootstrap_field formset.empty_form.itemvars layout="control" %}
|
||||
{% bootstrap_field formset.empty_form.release_after_exit layout="control" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endescapescript %}
|
||||
|
||||
@@ -106,6 +106,7 @@
|
||||
{% bootstrap_form_errors form %}
|
||||
{% bootstrap_field form.size layout="control" %}
|
||||
{% bootstrap_field form.itemvars layout="control" %}
|
||||
{% bootstrap_field form.release_after_exit layout="control" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
@@ -133,6 +134,7 @@
|
||||
<div class="panel-body form-horizontal">
|
||||
{% bootstrap_field formset.empty_form.size layout="control" %}
|
||||
{% bootstrap_field formset.empty_form.itemvars layout="control" %}
|
||||
{% bootstrap_field formset.empty_form.release_after_exit layout="control" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endescapescript %}
|
||||
|
||||
@@ -781,6 +781,15 @@ class QuotaView(ChartContainingView, DetailView):
|
||||
'value': qa.count_pending_orders[self.object],
|
||||
'sum': True,
|
||||
},
|
||||
]
|
||||
if self.object.release_after_exit:
|
||||
data.append({
|
||||
'label': gettext('Exit scans'),
|
||||
'value': -1 * qa.count_exited_orders[self.object],
|
||||
'sum': True,
|
||||
})
|
||||
|
||||
data += [
|
||||
{
|
||||
'label': gettext('Vouchers and waiting list reservations'),
|
||||
'value': qa.count_vouchers[self.object],
|
||||
@@ -816,7 +825,10 @@ class QuotaView(ChartContainingView, DetailView):
|
||||
'strong': True
|
||||
})
|
||||
|
||||
ctx['quota_chart_data'] = json.dumps([r for r in data if r.get('sum')])
|
||||
for d in data:
|
||||
if d.get('value', 0) < 0:
|
||||
d['value_abs'] = abs(d['value'])
|
||||
ctx['quota_chart_data'] = json.dumps([r for r in data if r.get('sum') and r['value'] >= 0])
|
||||
ctx['quota_table_rows'] = list(data)
|
||||
ctx['quota_overbooked'] = sum_values - self.object.size if self.object.size is not None else 0
|
||||
|
||||
|
||||
@@ -216,6 +216,7 @@ class SubEventEditorMixin(MetaDataEditorMixin):
|
||||
{
|
||||
'size': q.size,
|
||||
'name': q.name,
|
||||
'release_after_exit': q.release_after_exit,
|
||||
'itemvars': [str(i.pk) for i in q.items.all()] + [
|
||||
'{}-{}'.format(v.item_id, v.pk) for v in q.variations.all()
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user