Browse Source

Avances en la funcionalidad

politica
Celestino Rey 1 year ago
parent
commit
bf5afd1b18
6 changed files with 140 additions and 9 deletions
  1. +10
    -3
      LibrosPy/servicios/libros/paginas.py
  2. +5
    -5
      LibrosPy/servicios/libros/templates/edit_libro.html
  3. +1
    -1
      LibrosPy/servicios/libros/templates/index.html
  4. +37
    -0
      LibrosPy/servicios/libros/templates/libro.html
  5. +4
    -0
      LibrosPy/servicios/libros/templates/libros.html
  6. +83
    -0
      LibrosPy/servicios/libros/templates/libroscard.html

+ 10
- 3
LibrosPy/servicios/libros/paginas.py View File

@ -20,7 +20,7 @@ def index():
@bp.route('/libros')
def libros():
libros = Libros.query.all()
return render_template('libros.html', libros=libros)
return render_template('libroscard.html', libros=libros)
@bp.route('/autores')
def autores():
@ -41,14 +41,12 @@ def help():
def account():
return render_template('account.html')
"""
@bp.route('/libro/<int:libro_id>')
def libro(libro_id):
libro = Libros.query.get_or_404(libro_id)
autor = Autores.query.get_or_404(libro.autor_id)
return render_template('libro.html', libro=libro, autor=autor)
"""
@bp.route('/add_libro', methods=['GET', 'POST'])
@login_required
@ -202,3 +200,12 @@ def searchautor():
else:
autores = []
return render_template('searchautor.html', query=query, autores=autores)
@bp.route('/searchlibro')
def searchlibro():
query = request.args.get('query', '')
if query:
libros = Libros.query.filter(libro.name.contains(query)).all()
else:
libros = []
return render_template('searchlibro.html', query=query, libros=libros)

+ 5
- 5
LibrosPy/servicios/libros/templates/edit_libro.html View File

@ -7,14 +7,14 @@
<form method="POST" enctype="multipart/form-data" action="{{ url_for('paginas.edit_libro', libro_id=libro.id) }}">
<div class="text mb-3">
<label for="anno">anno:</label>
<input class="form-control" type="date" id="anno" name="feannocha" value="{{ libro.anno }}" required>
<input class="form-control" type="number" id="anno" name="anno" value="{{ libro.anno }}" required>
</div>
<div class="text mb-3">
<label for="autor_id">Autor</label>
<select class="form-control" id="autor_id" name="autor_id" required>
{% for autor in autores %}
<option value="{{ autor.id }}" {% if libro.autor_id == autor.id %}selected{% endif %}>{{ libro.anno }}</option>
<option value="{{ autor.id }}" {% if libro.autor_id == autor.id %}selected{% endif %}>{{ libro.autores.apellido }}, {{ libro.autores.nombre }}</option>
{% endfor %}
</select>
</div>
@ -33,10 +33,10 @@
</div>
<div class="text mb-3">
<label for="epub">Portada</label>
<label for="epub">Epub</label>
<input class="form-control" type="file" id="epub" name="epub">
{% if libro.portada %}
<img src="{{ url_for('paginas.uploaded_file', filename=libro.epub) }}" alt="{{ libro.titulo }}" style="width:100px;height:100px;"><br>
{% if libro.epub %}
<a> {{ url_for('paginas.uploaded_file', filename=libro.epub) }}</a>
{% endif %}
</div>


+ 1
- 1
LibrosPy/servicios/libros/templates/index.html View File

@ -35,7 +35,7 @@
<td class="cell">{{ libro.titulo }}</td>
<td class="cell">{{ libro.autores.apellido }}, {{ libro.autores.nombre }}</td>
{% if libro.portada %}
<td class="cell"><img src="{{ url_for('paginas.uploaded_file', filename=libro.portada) }}" alt="{{ autor.apellido }}, {{ autor.nombre}}" style="width:200px;height:200px;"></td>
<td class="cell"><img src="{{ url_for('paginas.uploaded_file', filename=libro.portada) }}" alt="{{ libro.titulo }}" style="width:200px;height:200px;"></td>
{% else %}
<p>Sin imagen</p>
{% endif %}


+ 37
- 0
LibrosPy/servicios/libros/templates/libro.html View File

@ -0,0 +1,37 @@
{% extends 'base.html' %}
{% block content %}
<div class="container-xl">
<div class="app-card app-card-notification shadow-sm mb-4">
<div class="app-card-header px-4 py-3">
<div class="row g-3 align-items-center">
<div class="col-12 col-lg-auto text-center text-lg-start">
{% if libro.portada %}
<p><img src="{{ url_for('paginas.uploaded_file', filename=libro.portada) }}" alt="{{ libro.titulo }}" style="width:200px;height:200px;"></p>
{% else %}
<p>No hay imágen disponible</p>
{% endif %}
</div><!--//col-->
<div class="col-12 col-lg-auto text-center text-lg-start">
<h4 class="notification-title mb-1">{{ libro.titulo }}</h4>
<ul class="notification-meta list-inline mb-0">
<li class="list-inline-item">{{ libro.autores.apellido }}, {{ libro.autores.nombre }}</li>
<li class="list-inline-item">|</li>
<li class="list-inline-item">{{ libro.anno }}</li>
<li class="list-inline-item">|</li>
<li class="list-inline-item"><a href="{{ url_for('paginas.autor', autor_id=libro.autor_id) }}">{{ libro.autores.apellido }}, {{ libro.autores.nombre }}</a></li>
</ul>
</div><!--//col-->
<div class="col-12 col-lg-auto text-center text-lg-start">
<p><a href="{{ url_for('paginas.edit_libro', libro_id=libro.id) }}">Editar</a></p>
</div>
</tr>
</div><!--//row-->
</div><!--//app-card-header-->
<div class="app-card-body p-4">
<pre>{{ libro.epub }}</pre>
</div><!--//app-card-body-->
</div><!--//app-card-->
{% endblock %}

+ 4
- 0
LibrosPy/servicios/libros/templates/libros.html View File

@ -42,6 +42,10 @@
{% else %}
<p>Sin imagen</p>
{% endif %}
<td><a class="dropdown-item" href="{{ url_for('paginas.uploaded_file', filename=libro.epub) }}"><svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-download me-2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z"/>
<path fill-rule="evenodd" d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z"/>
</svg>Descargar</a></td>
</tr>
{% endfor %}
</tbody>


+ 83
- 0
LibrosPy/servicios/libros/templates/libroscard.html View File

@ -0,0 +1,83 @@
{% extends 'base.html' %}
{% block content %}
<div class="container-xl">
<div class="row g-3 mb-4 align-items-center justify-content-between">
<div class="col-auto">
<h1 class="app-page-title mb-0">Libros</h1>
</div>
</div><!--//row-->
<div class="col-auto">
<div class="page-utilities">
<div class="row g-4 justify-content-start justify-content-md-end align-items-center">
<div class="col-auto">
<a class="btn app-btn-primary" href="{{ url_for('paginas.add_libro') }}">Añadir libro</a>
</div>
<div class="col-auto">
<form class="table-search-form row gx-1 align-items-center" action="{{ url_for('paginas.searchlibro') }}" method="get">
<div class="col-auto">
<input type="text" id="search-orders" name="query" class="form-control search-orders" placeholder="Buscar">
</div>
<div class="col-auto">
<button type="submit" class="btn app-btn-secondary">Buscar</button>
</div>
</form>
</div><!--//col-->
</div><!--//row-->
</div><!--//table-utilities-->
</div><!--//col-auto-->
<div class="row g-4">
{% for libro in libros %}
<div class="col-6 col-md-4 col-xl-3 col-xxl-2">
<div class="app-card app-card-doc shadow-sm h-100">
<div class="app-card-body p-3 has-card-actions">
{% if libro.portada %}
<a><img src="{{ url_for('paginas.uploaded_file', filename=libro.portada) }}" alt="{{ libro.titulo }}," style="width:50px;height:50px;"></a>
{% else %}
Sin imágen
{% endif %}
<h4 class="app-doc-title truncate mb-0"><a>{{ libro.titulo }}</a></h4>
<div class="app-doc-meta">
<ul class="list-unstyled mb-0">
<li><span class="text-muted">Título: </span>{{ libro.titulo }}</li>
<li><span class="text-muted">Autor: </span>{{ libro.autores.apellidos }}, {{ libro.autores.nombre }}</li>
</ul>
</div><!--//app-doc-meta-->
<div class="app-card-actions">
<div class="dropdown">
<div class="dropdown-toggle no-toggle-arrow" data-bs-toggle="dropdown" aria-expanded="false">
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-three-dots-vertical" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/>
</svg>
</div><!--//dropdown-toggle-->
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="{{ url_for('paginas.edit_libro', libro_id=libro.id) }}"><svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-pencil me-2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5L13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175l-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z"/>
</svg>Editar</a></li>
<li><a class="dropdown-item" href="{{ url_for('paginas.uploaded_file', filename=libro.epub) }}"><svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-download me-2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5z"/>
<path fill-rule="evenodd" d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708l3 3z"/>
</svg>Descargar</a></li>
<!--
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#"><svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-trash me-2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6z"/>
<path fill-rule="evenodd" d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118zM2.5 3V2h11v1h-11z"/>
</svg>Delete</a></li>
-->
</ul>
</div><!--//dropdown-->
</div><!--//app-card-actions-->
</div><!--//app-card-body-->
</div>
</div>
{% endfor %}
</div>
</div><!--//container-fluid-->
{% endblock %}

Loading…
Cancel
Save