byceps/blueprints/site/ticketing/templates/site/ticketing/index_mine.html
{% extends 'layout/base.html' %}
{% from 'macros/icons.html' import render_icon %}
{% from 'macros/misc.html' import render_notification, render_tag %}
{% from 'macros/seating.html' import render_seat_link %}
{% from 'macros/user.html' import render_user_avatar, render_user_avatar_and_link, render_user_link %}
{% set current_page = 'ticket' %}
{% set page_title = _('Tickets') %}
{% block body %}
<h1 class="title">{{ render_icon('ticket') }} {{ page_title }}</h1>
{%- if not current_user_uses_any_ticket %}
{{ render_notification(_('You currently do not use a ticket.'), category='warning', icon='warning') }}
{%- endif %}
{%- if tickets %}
<div class="block">{{ _('These are the tickets for party <strong>%(party_title)s</strong> relevant to (i.e. owned, managed, and/or used by) you.', party_title=party_title) }}</div>
<div class="main-body-box">
{{ render_tickets(tickets) }}
</div>
{%- else %}
<p>{{ _('You do now own, manage, or use any tickets for party <strong>%(party_title)s</strong>.', party_title=party_title) }}</p>
{%- endif %}
{%- endblock %}
{% block scripts %}
<script>
onDomReady(() => {
confirmed_delete_on_click_then_reload('[data-action="withdraw-user"]', '{{ _('Use this ticket yourself?') }}');
confirmed_delete_on_click_then_reload('[data-action="withdraw-user-manager"]', '{{ _('Take back user management?') }}');
confirmed_delete_on_click_then_reload('[data-action="withdraw-seat-manager"]', '{{ _('Take back seat management?') }}');
});
</script>
{% endblock %}
{% macro render_tickets(tickets) -%}
<ol class="ticket-grid">
{%- for ticket in tickets|sort(attribute='created_at') %}
{%- with seat_manager = ticket.get_seat_manager(),
user_manager = ticket.get_user_manager()
%}
<li>
<div class="ticket-card{% if ticket.used_by_id == g.user.id %} ticket-used-by-me{% endif %}">
{# icon, code #}
<div class="ticket-card-cell">
<div class="ticket-card-cell-block">
<div class="ticket-icon">{{ render_icon('ticket') }}</div>
</div>
<div class="ticket-card-cell-block">
<div class="row row--space-between">
<div>
<div class="data-label">{{ _('Code') }}</div>
</div>
<div>
{%- if ticket.user_checked_in %}
{{ render_tag(_('checked in')) }}
{%- else %}
<a class="button button--outline is-compact" href="{{ url_for('.view_printable_html', ticket_id=ticket.id) }}">{{ render_icon('print') }}</a>
{%- endif %}
</div>
</div>
<div class="data-value"><span class="ticket-code">{{ ticket.code }}</span></div>
</div>
</div>
{# /icon, code #}
{# category, order, owner #}
<div class="ticket-card-cell">
<div class="ticket-card-cell-block">
<div class="data-label">{{ _('Category') }}</div>
<div class="data-value">{{ ticket.category.title }}</div>
</div>
{%- if ticket.owned_by_id == g.user.id %}
<div class="ticket-card-cell-block">
<div class="data-label">{{ _('Order') }}</div>
<div class="data-value"><a href="{{ url_for('shop_orders.view', order_id=order_ids_by_order_number[ticket.order_number]) }}">{{ ticket.order_number }}</a></div>
</div>
{%- endif %}
<div class="ticket-card-cell-block">
<div class="data-label">{{ _('Buyer') }}</div>
<div class="data-value">{{ render_user_avatar_and_link(ticket.owned_by, size=16) }}</div>
</div>
</div>
{# /category, owner #}
{# user #}
<div class="ticket-card-cell">
<div class="ticket-card-cell-block">
<div class="row row--space-between">
<div>
<div class="data-label">{{ pgettext('ticket', 'User') }}</div>
</div>
{%- if ticket_management_enabled and (user_manager == g.user) and not ticket.user_checked_in %}
<div>
<div class="dropdown">
<button class="dropdown-toggle button button--outline is-compact">{{ render_icon('chevron-down') -}}</button>
<ol class="dropdown-menu dropdown-menu--right">
<li><a class="dropdown-item" href="{{ url_for('.appoint_user_form', ticket_id=ticket.id) }}">{{ render_icon('arrow-right') }} {{ _('Appoint user') }}</a></li>
{%- if ticket.used_by_id != g.user.id %}
<li><a class="dropdown-item" href="{{ url_for('.withdraw_user', ticket_id=ticket.id, _method='DELETE') }}" data-action="withdraw-user">{{ render_icon('arrow-left') }} {{ _('Use yourself') }}</a></li>
{%- endif %}
</ol>
</div>
</div>
{%- endif %}
</div>
<div class="ticket-user">
{%- if ticket.used_by %}
<div>{{ render_user_avatar(ticket.used_by, size=48, orga=ticket.used_by_id in orga_ids) }}</div>
{{ render_user_link(ticket.used_by) }}
{%- else %}
<div><div class="ticket-user-placeholder"></div></div>
{{ render_tag(_('available'), class='available') }}
{%- endif %}
</div>
</div>
<div class="ticket-card-cell-block">
<div class="row row--space-between">
<div>
<div class="data-label">{{ _('Manager') }}</div>
</div>
{%- if ticket_management_enabled and (ticket.owned_by_id == g.user.id) and not ticket.user_checked_in %}
<div>
<div class="dropdown">
<button class="dropdown-toggle button button--outline is-compact">{{ render_icon('chevron-down') -}}</button>
<ol class="dropdown-menu dropdown-menu--right">
<li><a class="dropdown-item" href="{{ url_for('.appoint_user_manager_form', ticket_id=ticket.id) }}">{{ render_icon('arrow-right') }} {{ _('Transfer user management') }}</a></li>
{%- if user_manager != g.user %}
<li><a class="dropdown-item" href="{{ url_for('.withdraw_user_manager', ticket_id=ticket.id, _method='DELETE') }}" data-action="withdraw-user-manager">{{ render_icon('arrow-left') }} {{ _('Take back user management') }}</a></li>
{%- endif %}
</ol>
</div>
</div>
{%- endif %}
</div>
<div class="data-value">{{ render_user_avatar_and_link(user_manager, size=16) }}</div>
</div>
</div>
{# /user #}
{# seat #}
<div class="ticket-card-cell">
<div class="ticket-card-cell-block">
<div class="data-label">{{ _('Seat') }}</div>
<div class="data-value">
{%- if ticket.occupied_seat -%}
{{ render_seat_link(ticket.occupied_seat) }}
{%- else -%}
{{ render_tag(_('no seat'), class='available') }}
{%- endif -%}
</div>
</div>
<div class="ticket-card-cell-block">
<div class="row row--space-between">
<div>
<div class="data-label">{{ _('Manager') }}</div>
</div>
{%- if ticket_management_enabled and (ticket.owned_by_id == g.user.id) %}
<div>
<div class="dropdown">
<button class="dropdown-toggle button button--outline is-compact">{{ render_icon('chevron-down') -}}</button>
<ol class="dropdown-menu dropdown-menu--right">
<li><a class="dropdown-item" href="{{ url_for('.appoint_seat_manager_form', ticket_id=ticket.id) }}">{{ render_icon('arrow-right') }} {{ _('Transfer seat management') }}</a></li>
{%- if seat_manager != g.user %}
<li><a class="dropdown-item" href="{{ url_for('.withdraw_seat_manager', ticket_id=ticket.id, _method='DELETE') }}" data-action="withdraw-seat-manager">{{ render_icon('arrow-left') }} {{ _('Take back seat management') }}</a></li>
{%- endif %}
</ol>
</div>
</div>
{%- endif %}
</div>
<div class="data-value">{{ render_user_avatar_and_link(seat_manager, size=16) }}</div>
</div>
</div>
{# /seat #}
</div>
</li>
{%- endwith %}
{%- endfor %}
</ol>
{%- endmacro %}