forked from CGM_Public/pretix_original
* Data model draft * Refactor query and assignment usages of old permissions * Backend UI * API serializer * Big string replace * Docs, tests and fixes for teams api * Update docs for device auth * Eliminate old names * Make tests pass * Use new permissions, remove inconsistencies * Add test for translations * Show plugin permissions * Add permission for seating plans * Fix plugin activation * Fix failing test * Refactor to permission groups * Update doc/api/resources/devices.rst Co-authored-by: luelista <weller@rami.io> * Update doc/api/resources/events.rst Co-authored-by: luelista <weller@rami.io> * Update src/pretix/api/serializers/organizer.py Co-authored-by: luelista <weller@rami.io> * Fix typo * Fix python version compat * Replacement after rebase * Add proper permission handling for exports * Docs for exporters * Runtime linting of permission names * Fix typos * Show export page even without orders permission * More legacy compat * Do not strongly validate before plugins are loaded * Rebase migration * Add permission for outgoing mails * Review notes * Update doc/api/resources/teams.rst Co-authored-by: Richard Schreiber <schreiber@pretix.eu> * Clean up logic around exporters * Review and failures * Fix migration leading to forbidden combination * Handle permissions on event copying * Remove print-statements * Make test clearer * Review feedback * Add AnyPermissionOf * migration safety --------- Co-authored-by: luelista <weller@rami.io> Co-authored-by: Richard Schreiber <schreiber@pretix.eu>
115 lines
6.7 KiB
HTML
115 lines
6.7 KiB
HTML
{% extends "pretixcontrol/items/base.html" %}
|
||
{% load i18n %}
|
||
{% load urlreplace %}
|
||
{% block title %}{% trans "Quotas" %}{% endblock %}
|
||
{% block inside %}
|
||
<h1>{% trans "Quotas" %}</h1>
|
||
<p>
|
||
{% blocktrans trimmed %}
|
||
To make your products actually available, you also need quotas. Quotas define, how many instances of
|
||
your product pretix will sell. This way, you can configure whether your event can take an unlimited
|
||
number of attendees or the number of attendees is limited. You can assign a product to multiple quotas
|
||
to fulfill more complex requirements, e.g. if you want to limit the total number of tickets sold and the
|
||
number of a specific ticket type at the same time.
|
||
{% endblocktrans %}
|
||
</p>
|
||
{% if request.event.has_subevents %}
|
||
<form class="form-inline helper-display-inline" action="" method="get">
|
||
{% include "pretixcontrol/event/fragment_subevent_choice_simple.html" %}
|
||
</form>
|
||
{% endif %}
|
||
{% if quotas|length == 0 %}
|
||
<div class="empty-collection">
|
||
<p>
|
||
{% if request.GET.subevent %}
|
||
{% trans "Your search did not match any quotas." %}
|
||
{% else %}
|
||
{% blocktrans trimmed %}
|
||
You haven't created any quotas yet.
|
||
{% endblocktrans %}
|
||
{% endif %}
|
||
</p>
|
||
|
||
{% if 'event.items:write' in request.eventpermset %}
|
||
<a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}"
|
||
class="btn btn-primary btn-lg"><i class="fa fa-plus"></i> {% trans "Create a new quota" %}</a>
|
||
{% endif %}
|
||
</div>
|
||
{% else %}
|
||
{% if 'event.items:write' in request.eventpermset %}
|
||
<p>
|
||
<a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}" class="btn btn-default"><i class="fa fa-plus"></i> {% trans "Create a new quota" %}
|
||
</a>
|
||
</p>
|
||
{% endif %}
|
||
<div class="table-responsive">
|
||
<table class="table table-hover table-quotas">
|
||
<thead>
|
||
<tr>
|
||
<th>{% trans "Quota name" %}
|
||
<a href="?{% url_replace request 'ordering' '-name' %}"><i class="fa fa-caret-down"></i></a>
|
||
<a href="?{% url_replace request 'ordering' 'name' %}"><i class="fa fa-caret-up"></i></a>
|
||
</th>
|
||
<th>{% trans "Products" %}</th>
|
||
{% if request.event.has_subevents %}
|
||
<th>{% trans "Date" context "subevent" %}
|
||
<a href="?{% url_replace request 'ordering' '-date' %}"><i class="fa fa-caret-down"></i></a>
|
||
<a href="?{% url_replace request 'ordering' 'date' %}"><i class="fa fa-caret-up"></i></a>
|
||
</th>
|
||
{% endif %}
|
||
<th>{% trans "Total capacity" %}
|
||
<a href="?{% url_replace request 'ordering' '-size' %}"><i class="fa fa-caret-down"></i></a>
|
||
<a href="?{% url_replace request 'ordering' 'size' %}"><i class="fa fa-caret-up"></i></a>
|
||
</th>
|
||
<th>{% trans "Capacity left" %}</th>
|
||
<th class="action-col-2"></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for q in quotas %}
|
||
<tr>
|
||
<td>
|
||
<strong><a href="{% url "control:event.items.quotas.show" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}">{{ q.name }}</a></strong>
|
||
{% if q.ignore_for_event_availability %}
|
||
<span class="fa fa-eye-slash text-muted" data-toggle="tooltip" title="{% trans "Ignore this quota when determining event availability" %}"></span>
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
<ul>
|
||
{% for item in q.cached_items %}
|
||
{% if not item.has_variations %}
|
||
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=item.id %}">{{ item }}</a></li>
|
||
{% endif %}
|
||
{% endfor %}
|
||
{% for v in q.variations.all %}
|
||
<li><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=v.item.id %}#tab-0-3-open">
|
||
{{ v.item }} – {{ v }}</a></li>
|
||
{% endfor %}
|
||
</ul>
|
||
</td>
|
||
{% if request.event.has_subevents %}
|
||
<td>
|
||
{{ q.subevent.name }} – {{ q.subevent.get_date_range_display_with_times }}
|
||
</td>
|
||
{% endif %}
|
||
<td>{% if q.size == None %}Unlimited{% else %}{{ q.size }}{% endif %}</td>
|
||
<td>{% include "pretixcontrol/items/fragment_quota_availability.html" with availability=q.cached_avail closed=q.closed %}</td>
|
||
<td class="text-right flip">
|
||
{% if 'event.items:write' in request.eventpermset %}
|
||
<a href="{% url "control:event.items.quotas.edit" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
||
<a href="{% url "control:event.items.quotas.add" organizer=request.event.organizer.slug event=request.event.slug %}?copy_from={{ q.id }}"
|
||
class="btn btn-sm btn-default" title="{% trans "Clone" %}" data-toggle="tooltip">
|
||
<span class="fa fa-copy"></span>
|
||
</a>
|
||
<a href="{% url "control:event.items.quotas.delete" organizer=request.event.organizer.slug event=request.event.slug quota=q.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
||
{% endif %}
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{% endif %}
|
||
{% include "pretixcontrol/pagination.html" %}
|
||
{% endblock %}
|