{% extends 'paxalia/base.html' %} {% load static i18n %} {% block title %}{% trans "Transfer Center" %} – Paxalia Dashboard{% endblock %} {% block page_title %}{% trans "Transfer Center" %}{% endblock %} {% block page_subtitle %}{% trans "A controlled exchange for releases, server delivery, and verified downloads" %}{% endblock %} {% block extra_css %} {% endblock %} {% block dashboard_content %}
{% if configuration_error %} {% endif %}
{% trans "Operations workspace" %}

{% trans "Transfer files with a clear, verified workflow" %}

{% trans "Send local artifacts into one controlled exchange or receive files already staged there. The browser never chooses a server filesystem path, and completed transfers require SHA-256 agreement." %}

{% trans "Fixed exchange" %} {% trans "Resumable" %} {% trans "SHA-256" %} {% trans "Bounded chunks" %}
{% trans "Exchange" %}{{ exchange_name }}
{% trans "Chunk" %}{{ chunk_size|filesizeformat }}
{% trans "Max file" %}{{ max_transfer_bytes|filesizeformat }}
{% trans "Active slots" %}{{ transfer_concurrency_limit }}
{% trans "Verification gate" %}

{% trans "One pipeline, three deliberate stages" %}

{% trans "Each operation is prepared, transferred, and independently verified before it is treated as complete." %}

1
{% trans "Prepare" %}{% trans "Validate the filename, size, permissions, and bounded capacity." %}
2
{% trans "Move" %}{% trans "Transfer ordered chunks through the existing upload/download engine." %}
3
{% trans "Verify" %}{% trans "Compare browser evidence with the authoritative server checksum." %}
{% if transfer_enabled %}
{% if can_send_transfer and not configuration_error %}
{% trans "Outbound" %}

{% trans "Send to server" %}

{% trans "Upload a release artifact into the fixed exchange without exposing server paths." %}

{% trans "Fixed destination" %}
{% trans "Exchange" %} {{ exchange_name }} {% trans "Server location" %}: {{ exchange_path_display }} {% trans "The server controls the destination. Existing exchange files are never overwritten." %}
{% csrf_token %}
{% trans "Chunk size" %}{{ chunk_size|filesizeformat }}
{% trans "Max file" %}{{ max_transfer_bytes|filesizeformat }}
{% trans "Retries" %}{{ transfer_max_retries }}
{% endif %} {% if can_receive_transfer and not configuration_error %}
{% trans "Inbound" %}

{% trans "Receive from server" %}

{% trans "Select a file already present in the controlled exchange and download only after verification." %}

{% trans "Available in" %} {{ exchange_name }} {% trans "Server location" %}{{ exchange_path_display }}
{{ exchange_files|length }} {% trans "files" %}
{% csrf_token %}
{% for file in exchange_files %} {% empty %}
{% trans "The exchange is empty" %} {% trans "Completed outbound transfers will appear here when they are available." %}
{% endfor %}
{% trans "Selected file" %} {% trans "Nothing selected" %}
{% endif %} {% if configuration_error %}
{% trans "Configuration" %}

{% trans "Transfer actions are paused" %}

{% trans "The exchange must be a real directory inside one authorized Server Files root, while private transfer staging remains separate." %}

{% elif not can_send_transfer and not can_receive_transfer %}
{% trans "Permissions" %}

{% trans "Transfer access is read-only" %}

{% trans "Your current Paxalia permissions allow history viewing but do not allow creating transfers." %}

{% endif %}
{% endif %}
{% trans "Live work" %}

{% trans "Active transfers" %}

{% trans "Progress and integrity state update without reloading the page." %}

{{ active_transfers|length }} {% trans "active" %}
{% for transfer in active_transfers %}
{% if transfer.direction == 'send' %}{% trans "Outbound" %}{% else %}{% trans "Inbound" %}{% endif %} {{ transfer.filename }} {{ transfer.size|filesizeformat }} · {{ transfer.get_status_display }}
{% if transfer.status == "verifying" %}{% trans "Server verification running" %}{% else %}{% trans "Live transfer" %}{% endif %}{{ transfer.get_status_display }}
{% trans "Progress" %}{{ transfer.progress_percent }}%
{{ transfer.progress_percent }}%
{% trans "App SHA-256" %} {{ transfer.app_checksum_scope }}
{{ transfer.app_checksum|default:"—" }}{% if transfer.app_checksum %}{% endif %}
{% trans "Server SHA-256" %} {{ transfer.server_checksum_scope }}
{{ transfer.server_checksum|default:"—" }}{% if transfer.server_checksum %}{% endif %}
{% if transfer.checksum_status == 'verified' %}{% trans "Verified" %}{% elif transfer.checksum_status == 'mismatch' %}{% trans "Mismatch" %}{% elif transfer.checksum_status == 'pending' %}{% trans "Verification pending" %}{% else %}{% trans "Not available" %}{% endif %}
{% endfor %}
{% trans "No active transfers" %} {% trans "New uploads and downloads will appear here while they are running." %}
{% trans "Audit trail" %}

{% trans "Transfer history" %}

{% trans "Completed and terminal transfers remain available with their integrity evidence and failure reason." %}

{% for transfer in history %} {% empty %} {% endfor %}
{% trans "File" %} {% trans "Direction" %} {% trans "Status" %} {% trans "Size" %} {% trans "App SHA-256" %} {% trans "Server SHA-256" %} {% trans "Created" %}
{{ transfer.filename }} {% if transfer.error_message %}{{ transfer.error_message }}{% endif %}
{% if transfer.direction == 'send' %}{% trans "Outbound" %}{% else %}{% trans "Inbound" %}{% endif %} {{ transfer.get_status_display }} {{ transfer.size|filesizeformat }}
{{ transfer.app_checksum|default:"—" }}{% if transfer.app_checksum %}{% endif %}
{{ transfer.server_checksum|default:"—" }}{% if transfer.server_checksum %}{% endif %}
{{ transfer.created_at }}
{% trans "No transfer history" %}{% trans "Completed operations will appear here." %}
{% endblock %} {% block page_scripts %} {% endblock %}