gcp-hockey-results/motm_app/templates/s3_status.html
2025-10-06 23:32:53 +08:00

157 lines
7.8 KiB
HTML

{% extends "base.html" %}
{% block title %}S3 Status - HKFC Men's C Team{% endblock %}
{% block content %}
<div class="row mb-4">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center">
<div>
<h1><i class="fas fa-cloud text-info me-2"></i>S3 Storage Status</h1>
<p class="lead text-muted">Current S3 configuration and connection status</p>
</div>
<div>
<a href="/admin/s3-config" class="btn btn-primary me-2">
<i class="fas fa-cog me-1"></i>Configure S3
</a>
<a href="/admin" class="btn btn-secondary">
<i class="fas fa-arrow-left me-1"></i>Back to Admin
</a>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h5>Configuration Status</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<table class="table table-borderless">
<tr>
<td><strong>S3 Storage:</strong></td>
<td>
<span class="badge bg-{{ 'success' if s3_info.enabled else 'secondary' }}">
{{ 'Enabled' if s3_info.enabled else 'Disabled' }}
</span>
</td>
</tr>
<tr>
<td><strong>Provider:</strong></td>
<td>{{ s3_info.storage_provider.title() if s3_info.get('storage_provider') else 'AWS S3' }}</td>
</tr>
<tr>
<td><strong>Bucket Name:</strong></td>
<td>{{ s3_info.bucket_name }}</td>
</tr>
<tr>
<td><strong>Region:</strong></td>
<td>{{ s3_info.aws_region }}</td>
</tr>
{% if s3_info.get('storage_provider') == 'minio' %}
<tr>
<td><strong>MinIO Endpoint:</strong></td>
<td>{{ s3_info.get('minio_endpoint', 'Not configured') }}</td>
</tr>
{% endif %}
</table>
</div>
<div class="col-md-6">
<table class="table table-borderless">
<tr>
<td><strong>Signed URLs:</strong></td>
<td>
<span class="badge bg-{{ 'success' if s3_info.use_signed_urls else 'secondary' }}">
{{ 'Enabled' if s3_info.use_signed_urls else 'Disabled' }}
</span>
</td>
</tr>
<tr>
<td><strong>Fallback:</strong></td>
<td>
<span class="badge bg-{{ 'success' if s3_info.fallback_enabled else 'warning' }}">
{{ 'Enabled' if s3_info.fallback_enabled else 'Disabled' }}
</span>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="card mt-4">
<div class="card-header">
<h5>Connection Status</h5>
</div>
<div class="card-body">
<div class="alert alert-{{ 'success' if s3_info.connection_success else 'danger' }}" role="alert">
<h6 class="alert-heading">
{{ '✅ Connection Successful' if s3_info.connection_success else '❌ Connection Failed' }}
</h6>
<p class="mb-0">{{ s3_info.connection_status }}</p>
</div>
</div>
</div>
{% if s3_info.enabled and s3_info.connection_success %}
<div class="card mt-4">
<div class="card-header">
<h5>Asset Management</h5>
</div>
<div class="card-body">
<p>S3 storage is properly configured and connected. Assets will be served from S3.</p>
<div class="alert alert-info">
<h6>Asset Locations</h6>
<ul class="mb-0">
<li><strong>Club Logos:</strong> <code>{{ s3_info.bucket_name }}/assets/images/clubs/</code></li>
<li><strong>General Images:</strong> <code>{{ s3_info.bucket_name }}/assets/images/</code></li>
<li><strong>Player Images:</strong> <code>{{ s3_info.bucket_name }}/assets/images/players/</code></li>
</ul>
</div>
</div>
</div>
{% elif s3_info.enabled and not s3_info.connection_success %}
<div class="card mt-4">
<div class="card-header">
<h5>Troubleshooting</h5>
</div>
<div class="card-body">
<div class="alert alert-warning">
<h6>S3 is enabled but connection failed</h6>
<p>Check the following:</p>
<ul>
<li>Verify AWS credentials are correct</li>
<li>Ensure the bucket name exists</li>
<li>Check bucket permissions</li>
<li>Verify AWS region is correct</li>
</ul>
</div>
</div>
</div>
{% else %}
<div class="card mt-4">
<div class="card-header">
<h5>Static File Storage</h5>
</div>
<div class="card-body">
<p>S3 storage is disabled. Assets are being served from local static files.</p>
<div class="alert alert-info">
<h6>Local Asset Locations</h6>
<ul class="mb-0">
<li><strong>Club Logos:</strong> <code>/static/images/clubs/</code></li>
<li><strong>General Images:</strong> <code>/static/images/</code></li>
<li><strong>Player Images:</strong> <code>/static/images/players/</code></li>
</ul>
</div>
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% endblock %}