{% extends 'dlux/base.html' %} {% load static %} {% load dlux_tags %} {% block title %}{{ DLUX_STRINGS.sysbackup_title }}{% endblock %} {% block extra_head %} {{ block.super }} {% endblock %} {% block content %}

{{ DLUX_STRINGS.sysbackup_title }}

{{ DLUX_STRINGS.sysbackup_subtitle }}

{{ DLUX_STRINGS.sysbackup_back_to_options|default:'Back to Options' }}
{% csrf_token %}
{{ DLUX_STRINGS.sysbackup_notice }}
{{ DLUX_STRINGS.sysbackup_policy|default:'Backup policy' }}: {% if backup_config.scheduled_enabled %} {{ DLUX_STRINGS.sysbackup_schedule_every|default:'Scheduled every' }} {{ backup_config.schedule_interval_hours }} {{ DLUX_STRINGS.sysbackup_hours|default:'hours' }} {% else %} {{ DLUX_STRINGS.sysbackup_schedule_off|default:'Scheduling is off' }} {% endif %} {{ DLUX_STRINGS.sysbackup_target|default:'Target' }}: {{ backup_config.auto_export_target }} {{ DLUX_STRINGS.sysbackup_rotation|default:'Rotation' }}: {{ backup_config.retention_days }} {{ DLUX_STRINGS.sysbackup_days|default:'days' }} / {{ backup_config.max_backups_to_keep }} {{ DLUX_STRINGS.sysbackup_files_label|default:'files' }} (0 = {{ DLUX_STRINGS.sysbackup_unlimited|default:'unlimited' }}) {{ DLUX_STRINGS.sysbackup_recovery_label|default:'Recovery' }}: {% if backup_policy.auto_retry_enabled %} {{ DLUX_STRINGS.sysbackup_recovery_on|default:'stalls fail after' }} {{ backup_policy.stall_timeout_minutes }}{{ DLUX_STRINGS.sysbackup_minutes_short|default:'m' }}, {{ backup_policy.max_attempts }} {{ DLUX_STRINGS.sysbackup_attempts_word|default:'attempts' }}, {{ backup_policy.retry_delay_minutes }}{{ DLUX_STRINGS.sysbackup_minutes_short|default:'m' }} {{ DLUX_STRINGS.sysbackup_apart|default:'apart' }} {% else %} {{ DLUX_STRINGS.sysbackup_recovery_off|default:'stalls fail after' }} {{ backup_policy.stall_timeout_minutes }}{{ DLUX_STRINGS.sysbackup_minutes_short|default:'m' }}; {{ DLUX_STRINGS.sysbackup_recovery_manual|default:'retry manually' }} {% endif %}
{{ DLUX_STRINGS.sysbackup_existing }}
{% dlux_table_shell %} {% include 'dlux/backup/_backup_rows.html' %}
{{ DLUX_STRINGS.user_report_timestamp }} {{ DLUX_STRINGS.sysbackup_requested_by }} {{ DLUX_STRINGS.sysbackup_trigger|default:'Trigger' }} {{ DLUX_STRINGS.sysbackup_status }} {{ DLUX_STRINGS.backup_progress }} {{ DLUX_STRINGS.sysbackup_rows }} {{ DLUX_STRINGS.sysbackup_files }} {{ DLUX_STRINGS.sysbackup_size }}
{% enddlux_table_shell %}
{{ DLUX_STRINGS.sysbackup_orphans }}

{{ DLUX_STRINGS.sysbackup_orphans_hint }}

{% dlux_table_shell %} {% for orphan in orphan_files %} {% empty %} {% include 'dlux/tables/empty_row.html' with text=DLUX_STRINGS.sysbackup_no_orphans padding=3 %} {% endfor %}
{{ orphan.name }} {{ orphan.size|filesizeformat }}
{% enddlux_table_shell %}
{% csrf_token %} {{ backup_upload_form.backup_file }}

{{ DLUX_STRINGS.sysbackup_upload_help }}

{{ DLUX_STRINGS.sysrestore_history }}
{% dlux_table_shell %} {% include 'dlux/backup/_restore_rows.html' %}
{{ DLUX_STRINGS.user_report_timestamp }} {{ DLUX_STRINGS.sysbackup_requested_by }} {{ DLUX_STRINGS.sysbackup_status }} {{ DLUX_STRINGS.sysrestore_progress }}
{% enddlux_table_shell %}
{{ DLUX_STRINGS.sysbackup_resume_title|default:'Retry backup' }}

{{ DLUX_STRINGS.sysbackup_resume_help|default:'A new attempt is recorded on the same backup entry. A partially written backup cannot be continued from where it stopped, so the snapshot is rebuilt from scratch.' }}

{% csrf_token %}
{{ DLUX_STRINGS.sysrestore_source }}:
{{ DLUX_STRINGS.sysbackup_resume_passphrase_help|default:'This backup is passphrase-protected. The passphrase is never stored, so it must be entered again — and that is why these backups are never retried automatically.' }}
{{ DLUX_STRINGS.sysrestore_title }}

{{ DLUX_STRINGS.sysrestore_warning }}

{{ DLUX_STRINGS.sysrestore_signout_note }}

{% csrf_token %}
{{ DLUX_STRINGS.sysrestore_source }}:
{{ DLUX_STRINGS.sysrestore_passphrase_help }}
{% endblock %} {% block scripts %} {{ block.super }} {% endblock %}