Fase 3 (isla): historial de baneos en React/TSX
ban_history_view construye ban_rows (baneos de cuenta + personaje combinados, con estado Activo/Inactivo y origen Cuenta/Personaje) y los pasa por json_script a la tabla genérica HistoryTable. Sustituye la tabla Django con doble bucle. Verificado: check OK, render de la isla con datos, redirige a login sin sesión. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -25,71 +25,12 @@
|
|||||||
<h2>Historial de baneos</h2>
|
<h2>Historial de baneos</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="body-box-content info-box-light">
|
<div class="body-box-content info-box-light">
|
||||||
<table class="max-center-table" style="width: 100%; border-collapse: collapse;">
|
{% load django_vite %}
|
||||||
<thead>
|
<!-- Isla React (Vite): tabla de baneos (cuenta + personajes). -->
|
||||||
<tr>
|
<div id="history-table-app"
|
||||||
<th style="text-align: left; padding: 10px; border: 1px solid #ddd;">Fecha de Baneo</th>
|
data-columns='[{"key":"fecha_baneo","label":"Fecha de Baneo"},{"key":"fecha_desbaneo","label":"Fecha de Desbaneo"},{"key":"motivo","label":"Motivo"},{"key":"estado","label":"Estado"},{"key":"origen","label":"Cuenta / Personaje"}]'
|
||||||
<th style="text-align: left; padding: 10px; border: 1px solid #ddd;">Fecha de Desbaneo</th>
|
data-empty-text="No hay baneos en la cuenta ni en los personajes."></div>
|
||||||
<th style="text-align: left; padding: 10px; border: 1px solid #ddd;">Motivo</th>
|
{{ ban_rows|json_script:"history-table-data" }}
|
||||||
<th style="text-align: left; padding: 10px; border: 1px solid #ddd;">Estado</th>
|
{% vite_asset 'src/entries/history_table.tsx' %}
|
||||||
<th style="text-align: left; padding: 10px; border: 1px solid #ddd;">
|
|
||||||
{% if account_bans and character_bans %}
|
|
||||||
Cuenta / Personaje
|
|
||||||
{% elif account_bans %}
|
|
||||||
Cuenta
|
|
||||||
{% elif character_bans %}
|
|
||||||
Personaje
|
|
||||||
{% else %}
|
|
||||||
Fuente
|
|
||||||
{% endif %}
|
|
||||||
</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% if account_bans %}
|
|
||||||
{% for ban in account_bans %}
|
|
||||||
<tr>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">{{ ban.0|default:"No disponible" }}</td>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">{{ ban.1|default:"No disponible" }}</td>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">{{ ban.2 }}</td>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">
|
|
||||||
{% if ban.3 == 1 %}
|
|
||||||
<span class="red-info2">Activo<span>
|
|
||||||
{% else %}
|
|
||||||
<span class="green-info2">Inactivo</span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">Cuenta: {{ ban.4 }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
{% else %}
|
|
||||||
<tr>
|
|
||||||
<td colspan="5" style="text-align: center; padding: 10px; border: 1px solid #ddd;">No hay baneos en la cuenta.</td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if character_bans %}
|
|
||||||
{% for ban in character_bans %}
|
|
||||||
<tr>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">{{ ban.0|default:"No disponible" }}</td>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">{{ ban.1|default:"No disponible" }}</td>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">{{ ban.2 }}</td>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">
|
|
||||||
{% if ban.3 == 1 %}
|
|
||||||
Activo
|
|
||||||
{% else %}
|
|
||||||
<span class="green-info2">Inactivo</span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td style="padding: 10px; border: 1px solid #ddd;">Personaje: {{ ban.4 }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
{% else %}
|
|
||||||
<tr>
|
|
||||||
<td colspan="5" style="text-align: center; padding: 10px; border: 1px solid #ddd;">No hay baneos en los personajes.</td>
|
|
||||||
</tr>
|
|
||||||
{% endif %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
+14
-1
@@ -55,10 +55,23 @@ def ban_history_view(request):
|
|||||||
|
|
||||||
account_bans, character_bans = get_ban_history(account_id)
|
account_bans, character_bans = get_ban_history(account_id)
|
||||||
|
|
||||||
|
def _row(b, origen):
|
||||||
|
return {
|
||||||
|
'fecha_baneo': b[0] or 'No disponible',
|
||||||
|
'fecha_desbaneo': b[1] or 'No disponible',
|
||||||
|
'motivo': b[2],
|
||||||
|
'estado': 'Activo' if b[3] == 1 else 'Inactivo',
|
||||||
|
'origen': f'{origen}: {b[4]}',
|
||||||
|
}
|
||||||
|
|
||||||
|
ban_rows = ([_row(b, 'Cuenta') for b in account_bans]
|
||||||
|
+ [_row(b, 'Personaje') for b in character_bans])
|
||||||
|
|
||||||
return render(request, 'account/ban_history.html', {
|
return render(request, 'account/ban_history.html', {
|
||||||
'account_bans': account_bans,
|
'account_bans': account_bans,
|
||||||
'character_bans': character_bans,
|
'character_bans': character_bans,
|
||||||
'now': datetime.now(),
|
'ban_rows': ban_rows,
|
||||||
|
'now': datetime.now(),
|
||||||
})
|
})
|
||||||
def security_history_view(request):
|
def security_history_view(request):
|
||||||
username = request.session.get('username')
|
username = request.session.get('username')
|
||||||
|
|||||||
Reference in New Issue
Block a user