{% extends "base.html" %} {% block title %}{{ t('catalogue.title') }} — painfree{% endblock %} {% block body %}

{{ t('catalogue.heading') }}

{{ t('catalogue.lede') }}

{# The comparison this page exists for. `published` is deliberately three-valued: true, false, and "the bank has not been asked" -- which must not be drawn as a refusal, because nothing has refused anything yet. #}

{{ t('catalogue.what_this_sends') }}

{% for row in comparison %} {% endfor %}
{{ t('catalogue.scheme') }}{{ t('catalogue.btf') }} {{ t('catalogue.published') }}
{{ row.scheme }} {{ row.service.name }}{% if row.service.option %}+{{ row.service.option }}{% endif %}/{{ row.service.scope }} → {{ row.service.msg_name }} {% if row.published is none %}{{ t('catalogue.not_asked') }} {% elif row.published %}{{ t('catalogue.accepted') }} {% else %}{{ t('catalogue.not_published') }} {{ t('catalogue.not_published_why') }}{% endif %}
{% for order_type in order_types %} {% set entry = stored.get(order_type) %}

{{ order_type }} {{ descriptions[order_type] }}

{% if may('connections:write') %}
{% if entry %}{{ t('catalogue.fetched') }} {{ entry.fetched_at | moment }}{% endif %}
{% elif entry %}

{{ t('catalogue.fetched') }} {{ entry.fetched_at | moment }}

{% endif %} {% if not entry %}

{{ t('catalogue.never_fetched') }}

{% elif entry.summary is none %} {# The document is kept even when the parse failed, which is exactly the case where having the bytes matters. #}

{{ t('catalogue.unreadable') }}

{% elif order_type == 'HTD' %}
{{ t('catalogue.subscriber') }} {{ entry.summary.name or '—' }} {{ entry.summary.partner_id or '' }} / {{ entry.summary.user_id or '' }}

{{ t('catalogue.uploads') }}

{% if entry.uploads %} {% for row in entry.uploads %} {% endfor %}
{{ t('catalogue.btf') }}{{ t('catalogue.description') }} {{ t('catalogue.signatures') }}
{{ row.service.name }}{% if row.service.option %}+{{ row.service.option }}{% endif %}/{{ row.service.scope }} → {{ row.service.msg_name }}.{{ row.service.msg_version }} {{ row.description or '—' }} {{ row.num_sig_required if row.num_sig_required is not none else '—' }}
{% else %}

{{ t('catalogue.no_uploads') }}

{% endif %}

{{ t('catalogue.downloads') }}

{% for row in entry.downloads %} {% endfor %}
{{ row.service.name }}/{{ row.service.scope }} → {{ row.service.msg_name }}.{{ row.service.msg_version }} {{ row.description or '—' }}
{% if entry.summary.accounts %}

{{ t('catalogue.accounts') }}

{% for account in entry.summary.accounts %} {% endfor %}
{{ account.iban or account.account_id }} {{ account.description or '—' }} {{ account.currency or '' }}
{% endif %} {% elif order_type == 'HAA' %} {% if entry.summary.services %} {% for service in entry.summary.services %} {% endfor %}
{{ service.name }}/{{ service.scope }} → {{ service.msg_name }}.{{ service.msg_version }}
{% else %}

{{ t('catalogue.nothing_waiting') }}

{% endif %} {% else %}
HostID{{ entry.summary.host_id or '—' }}
{{ t('catalogue.protocol') }}{{ entry.summary.protocol_versions | join(', ') or '—' }}
{{ t('catalogue.authentication') }}{{ entry.summary.authentication_versions | join(', ') or '—' }}
{{ t('catalogue.encryption') }}{{ entry.summary.encryption_versions | join(', ') or '—' }}
{{ t('catalogue.signature') }}{{ entry.summary.signature_versions | join(', ') or '—' }}
{{ t('catalogue.recovery') }} {{ t('common.yes') if entry.summary.recovery_supported else (t('catalogue.not_stated') if entry.summary.recovery_supported is none else t('common.no')) }}
{% endif %}
{% endfor %} {% endblock %}