arreglo de ui y busquedas
This commit is contained in:
parent
cb8f69fb93
commit
fc06566928
15 changed files with 1115 additions and 435 deletions
|
|
@ -9,7 +9,12 @@
|
|||
{% if n.imagen_url %}
|
||||
<div class="noticia-imagen">
|
||||
<a href="{{ detalle_url }}">
|
||||
<img src="{{ n.imagen_url }}" alt="Imagen para {{ n.titulo }}" loading="lazy">
|
||||
<img
|
||||
src="{{ n.imagen_url }}"
|
||||
alt="Imagen para {{ n.titulo }}"
|
||||
loading="lazy"
|
||||
onerror="this.closest('.noticia-imagen').style.display='none';"
|
||||
>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
|||
|
|
@ -47,12 +47,21 @@
|
|||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-header">
|
||||
<h3>Operaciones del Sistema</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>Genera una copia de seguridad completa de todas tus fuentes y noticias en un archivo .zip.</p>
|
||||
<a href="{{ url_for('backup_completo') }}" class="btn btn-secondary"><i class="fas fa-archive"></i> Backup Completo (.zip)</a>
|
||||
<p>Genera o restaura una copia de seguridad completa de todas tus fuentes y noticias.</p>
|
||||
|
||||
<div style="display:flex; gap:10px; flex-wrap:wrap;">
|
||||
<a href="{{ url_for('backup_completo') }}" class="btn btn-secondary">
|
||||
<i class="fas fa-archive"></i> Backup Completo (.zip)
|
||||
</a>
|
||||
|
||||
<a href="{{ url_for('restore_completo') }}" class="btn btn-info">
|
||||
<i class="fas fa-upload"></i> Restaurar Backup (.zip)
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -50,19 +50,28 @@
|
|||
|
||||
{% if d.imagen_url %}
|
||||
<div style="margin-bottom:16px; text-align:center;">
|
||||
<img src="{{ d.imagen_url }}" alt="Imagen de la noticia" style="max-width:100%; height:auto;" loading="lazy">
|
||||
<img
|
||||
src="{{ d.imagen_url }}"
|
||||
alt="Imagen de la noticia"
|
||||
loading="lazy"
|
||||
onerror="this.style.display='none';"
|
||||
>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if d.resumen_trad %}
|
||||
<h3>Resumen (traducido)</h3>
|
||||
<div>{{ d.resumen_trad|safe_html }}</div>
|
||||
<div class="resumen-container">
|
||||
<div class="resumen-completo" style="display:block;">{{ d.resumen_trad|safe_html }}</div>
|
||||
</div>
|
||||
<hr>
|
||||
{% endif %}
|
||||
|
||||
{% if d.resumen_orig %}
|
||||
<h3>Resumen (original)</h3>
|
||||
<div>{{ d.resumen_orig|safe_html }}</div>
|
||||
<div class="resumen-container">
|
||||
<div class="resumen-completo" style="display:block;">{{ d.resumen_orig|safe_html }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if tags and tags|length %}
|
||||
|
|
@ -87,7 +96,12 @@
|
|||
{% if r.imagen_url %}
|
||||
<div class="noticia-imagen">
|
||||
<a href="{{ r.url }}" target="_blank" rel="noopener">
|
||||
<img src="{{ r.imagen_url }}" alt="Imagen relacionada" loading="lazy">
|
||||
<img
|
||||
src="{{ r.imagen_url }}"
|
||||
alt="Imagen relacionada"
|
||||
loading="lazy"
|
||||
onerror="this.closest('.noticia-imagen').style.display='none';"
|
||||
>
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
|||
49
templates/restore_completo.html
Normal file
49
templates/restore_completo.html
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Restaurar Backup Completo{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3>Restaurar Backup Completo</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Sube un archivo <strong>.zip</strong> generado desde
|
||||
<em>"Backup Completo (.zip)"</em> en el dashboard.
|
||||
</p>
|
||||
|
||||
<div style="background: #fff3cd; border: 1px solid #ffeeba; padding: 10px 12px; border-radius: 8px; margin: 15px 0;">
|
||||
<strong>⚠ Atención:</strong>
|
||||
<ul style="margin: 8px 0 0 18px; padding: 0;">
|
||||
<li>Se <strong>vaciarán</strong> las tablas <code>feeds</code> y <code>fuentes_url</code>.</li>
|
||||
<li>Los datos de esos CSV se volverán a cargar desde el backup.</li>
|
||||
<li>No se tocan noticias, traducciones ni tags.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<form action="{{ url_for('restore_completo') }}" method="post" enctype="multipart/form-data">
|
||||
<div class="form-group" style="margin-bottom: 15px;">
|
||||
<label for="backup_file"><strong>Archivo .zip de backup completo</strong></label>
|
||||
<input
|
||||
type="file"
|
||||
id="backup_file"
|
||||
name="backup_file"
|
||||
accept=".zip"
|
||||
required
|
||||
style="display:block; margin-top:8px;"
|
||||
>
|
||||
</div>
|
||||
|
||||
<div style="margin-top: 20px; display:flex; gap:10px;">
|
||||
<a href="{{ url_for('dashboard') }}" class="btn btn-secondary">Cancelar</a>
|
||||
<button type="submit" class="btn btn-danger">
|
||||
<i class="fas fa-exclamation-triangle"></i>
|
||||
Restaurar desde backup
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue