| @ -0,0 +1,8 @@ | |||
| oc set volume deployment.apps/entrenadores --add -t pvc --name=entrenadores-macrociclos-migrations --claim-name='entrenadores-macrociclos--migrations' --mount-path='/app/macrociclos-/migrations' | |||
| oc set volume deployment.apps/entrenadores --add -t pvc --name=entrenadores-media --claim-name='entrenadores-media' --mount-path='/app/mediafiles' | |||
| oc set volume deployment.apps/entrenadores --add -t pvc --name=entrenadores-usuarios-migrations --claim-name='entrenadores-usuarios-migrations' --mount-path='/app/usuarios/migrations' | |||
| oc set volume deployment.apps/entrenadores --add -t pvc --name=static-volume --claim-name='static-volume' --mount-path='/app/staticfiles' | |||
| @ -1,14 +0,0 @@ | |||
| <div class="app-utility-item"> | |||
| <a class="btn btn-primary" href="{% url 'lyrics:lista_artistas' %}" role="button">Artistas</a> | |||
| </div><!--//app-utility-item--> | |||
| <div class="app-utility-item"> | |||
| <a class="btn btn-primary" href="{% url 'lyrics:lista_albumes' %}" role="button">Albumes</a> | |||
| </div><!--//app-utility-item--> | |||
| <div class="app-utility-item"> | |||
| <a class="btn btn-primary" href="{% url 'lyrics:lista_songs' %}" role="button">Canciones</a> | |||
| </div><!--//app-utility-item--> | |||
| @ -1,75 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% 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 album %} | |||
| <div class="col-12 col-lg-auto text-center text-lg-start"> | |||
| {% if album.cover_image %} | |||
| <p><img src="{{ album.cover_image.url }}" alt="{{ album.name }}" style="width:200px;height:200px;"></p> | |||
| {% else %} | |||
| <p>No hay imágen disponible</p> | |||
| {% endif %} | |||
| </div><!--//col--> | |||
| <h4 class="notification-title mb-1">{{ album.name }}</h4> | |||
| <ul class="notification-meta list-inline mb-0"> | |||
| <li class="list-inline-item"><a href="{% url 'lyrics:detalle_album' album_id=album.id %}">{{ album.name }}</a></li> | |||
| <li class="list-inline-item">|</li> | |||
| <li class="list-inline-item">{{ album.artist }}</li> | |||
| <li class="list-inline-item">|</li> | |||
| <li class="list-inline-item">{{ album.year }}</li> | |||
| </ul> | |||
| {% endif %} | |||
| </div><!--//col--> | |||
| </tr> | |||
| </div><!--//row--> | |||
| </div><!--//app-card-header--> | |||
| <div class="app-card-body p-4"> | |||
| {% if songs %} | |||
| <table class="table app-table-hover mb-0 text-left"> | |||
| <thead> | |||
| <tr> | |||
| <th>Pista</th> | |||
| <th>Título</th> | |||
| <th>Autor</th> | |||
| </tr> | |||
| </thead> | |||
| <tbody> | |||
| {% for song in songs %} | |||
| <tr> | |||
| <td class="cell">{{ song.pista }}</td> | |||
| <td class="cell"><a href="{% url 'lyrics:detalle_song' song_id=song.id %}">{{ song.title }}</a></td> | |||
| <td class="cell">{{ song.artist }}</td> | |||
| </tr> | |||
| {% endfor %} | |||
| </tbody> | |||
| </table> | |||
| {% else %} | |||
| <p>No songs found matching your query.</p> | |||
| {% endif %} | |||
| </div> | |||
| <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 'lyrics:nuevo_song' %}?album_id={{ album.id}}">Añadir canción</a> | |||
| </div> | |||
| </div><!--//row--> | |||
| </div><!--//table-utilities--> | |||
| </div><!--//col-auto--> | |||
| </div><!--//app-card--> | |||
| {% endblock %} | |||
| @ -1,68 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% 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 artista.foto %} | |||
| <p><img src="{{ artista.foto.url }}" alt="{{ artista.nombre}}" style="width:200px;height:200px;"></p> | |||
| {% else %} | |||
| <p>No hay imágen disponible</p> | |||
| {% endif %} | |||
| </div> | |||
| <div class="col-12 col-lg-auto text-center text-lg-start"> | |||
| <h4>{{ artista.nombre }}</h4> | |||
| <ul class="notification-meta list-inline mb-0"> | |||
| <li class="list-inline-item">{{ artista.nombre }}</li> | |||
| </ul> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="app-card-body p-4"> | |||
| {% if albumes %} | |||
| <table class="table app-table-hover mb-0 text-left"> | |||
| <thead> | |||
| <tr> | |||
| <th class="cell">Título</th> | |||
| <th class="cell">Artista</th> | |||
| <th class="cell">Year</th> | |||
| </tr> | |||
| </thead> | |||
| <tbody> | |||
| {% for album in albumes %} | |||
| <tr> | |||
| <td class="cell"><a href="{% url 'lyrics:detalle_album' album_id=album.id %}">{{ album.name }}</a></td> | |||
| <td class="cell">{{ album.artist }}</td> | |||
| <td class="cell">{{ album.year }}</td> | |||
| </tr> | |||
| {% endfor %} | |||
| </tbody> | |||
| </table> | |||
| {% else %} | |||
| <p>No se han encontrado albums para este artista</p> | |||
| {% endif %} | |||
| </div> | |||
| </div> | |||
| <div class="row g-3 mb-4 align-items-center justify-content-between"> | |||
| <div class="col-auto"> | |||
| <a class="btn app-btn-secondary" href="{% url 'lyrics:lista_albumes' %}">Volver al inicio</a> | |||
| </div> | |||
| <div class="col-auto"> | |||
| <a class="btn app-btn-primary" href="{% url 'lyrics:nuevo_album' %}">Añadir album</a> <!-- Faltaría poner el id del artista--> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| {% endblock %} | |||
| @ -1,43 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% block content %} | |||
| <div class="container-xl"> | |||
| <div class="app-card app-card-notification shadow-sm mb-4"> | |||
| {% for album in albumes %} | |||
| <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 album.cover_image %} | |||
| <p><img src="{{ album.cover_image.url }}" alt="{{ album.name }}" 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">{{ song.name }}</h4> | |||
| <ul class="notification-meta list-inline mb-0"> | |||
| <li class="list-inline-item">{{ song.artist }}</li> | |||
| <li class="list-inline-item">|</li> | |||
| <li class="list-inline-item">{{ song.year }}</li> | |||
| <li class="list-inline-item">|</li> | |||
| <li class="list-inline-item"><a href="{% url 'lyrics:detalle_album' album_id=album.id %}">{{ song.album.name }}</a></li> | |||
| </ul> | |||
| </div><!--//col--> | |||
| </div><!--//row--> | |||
| </div><!--//app-card-header--> | |||
| <div class="app-card-body p-4"> | |||
| <pre>{{ song.lyrics }}</pre> | |||
| </div><!--//app-card-body--> | |||
| {% endfor %} | |||
| </div><!--//app-card--> | |||
| {% endblock %} | |||
| @ -1,23 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% block content %} | |||
| <div class="column is-4 is-offset-4"> | |||
| <h3>{% if form.instance.pk %}Editar álbum{% else %}Nuevo álbum{% endif %}</h3> | |||
| <div class="box"> | |||
| <form method="POST" enctype="multipart/form-data"> | |||
| {% csrf_token %} | |||
| {{ form.as_p }} | |||
| <div class="text mb-3"> | |||
| <button type="submit" class="btn app-btn-primary w-100 theme-btn mx-auto">Guardar</button> | |||
| </div> | |||
| </form> | |||
| {{ form.media }} | |||
| </div> | |||
| </div> | |||
| {% endblock %} | |||
| @ -1,23 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% block content %} | |||
| <div class="column is-4 is-offset-4"> | |||
| <h3>{% if form.instance.pk %}Editar artista{% else %}Nuevo artista{% endif %}</h3> | |||
| <div class="box"> | |||
| <form method="POST" enctype="multipart/form-data"> | |||
| {% csrf_token %} | |||
| {{ form.as_p }} | |||
| <div class="text mb-3"> | |||
| <button type="submit" class="btn app-btn-primary w-100 theme-btn mx-auto">Guardar</button> | |||
| </div> | |||
| </form> | |||
| </div> | |||
| </div> | |||
| {% endblock %} | |||
| @ -1,23 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% block content %} | |||
| <div class="column is-4 is-offset-4"> | |||
| <h3>{% if form.instance.pk %}Editar canción{% else %}Nueva canción{% endif %}</h3> | |||
| <div class="box"> | |||
| <form method="POST" enctype="multipart/form-data"> | |||
| {% csrf_token %} | |||
| {{ form.as_p }} | |||
| <div class="text mb-3"> | |||
| <button type="submit" class="btn app-btn-primary w-100 theme-btn mx-auto">Guardar</button> | |||
| </div> | |||
| </form> | |||
| {{ form.media }} | |||
| </div> | |||
| </div> | |||
| {% endblock %} | |||
| @ -1,33 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% block content %} | |||
| <div class="container-xl"> | |||
| <h1 class="app-page-title">Introducción</h1> | |||
| <div class="app-card alert alert-dismissible shadow-sm mb-4 border-left-decoration" role="alert"> | |||
| <div class="inner"> | |||
| <div class="app-card-body p-3 p-lg-4"> | |||
| <h3 class="mb-3">¡Bienvenido a la gestión de letras!</h3> | |||
| <div class="row gx-5 gy-3"> | |||
| <!-- | |||
| <div class="col-12 col-lg-9"> | |||
| <div>Pensado inicialmente para guardar las letras de las canciones de Bruce Springsteen.</div> | |||
| </div>--><!--//col--> | |||
| </div><!--//row--> | |||
| <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> | |||
| </div><!--//app-card-body--> | |||
| </div><!--//inner--> | |||
| </div><!--//app-card--> | |||
| </div><!--//container-fluid--> | |||
| {% endblock %} | |||
| @ -1,69 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% 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">Álbumes</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 'lyrics:nuevo_album' %}">Añadir álbum</a> | |||
| </div> | |||
| </div><!--//row--> | |||
| </div><!--//table-utilities--> | |||
| </div><!--//col-auto--> | |||
| <nav id="orders-table-tab" class="orders-table-tab app-nav-tabs nav shadow-sm flex-column flex-sm-row mb-4"> | |||
| <a class="flex-sm-fill text-sm-center nav-link" id="albumes-tab" data-bs-toggle="tab" href="#albumes" role="tab" aria-controls="albumes" aria-selected="false">Álbumes</a> | |||
| </nav> | |||
| <div class="tab-content" id="orders-table-tab-content"> | |||
| <div class="tab-pane fade show active" id="albumes" role="tabpanel" aria-labelledby="albumes-tab"> | |||
| <div class="app-card app-card-orders-table shadow-sm mb-5"> | |||
| <div class="app-card-body"> | |||
| <div class="table-responsive"> | |||
| <table class="table app-table-hover mb-0 text-left"> | |||
| <thead> | |||
| <tr> | |||
| <th class="cell">Cover</th> | |||
| <th class="cell">Nombre</th> | |||
| <th class="cell">Artista</th> | |||
| <th class="cell">Año</th> | |||
| </tr> | |||
| </thead> | |||
| <tbody> | |||
| {% for album in albumes %} | |||
| <tr> | |||
| <td class="cell"> | |||
| {% if album.cover_image %} | |||
| <img src="{{ album.cover_image.url }}" alt="{{ album.name }}" style="width:50px;height:50px;"> | |||
| {% else %} | |||
| Sin imágen | |||
| {% endif %} | |||
| </td> | |||
| <td class="cell"><a href="{% url 'lyrics:detalle_album' album_id=album.id %}">{{ album.name }}</a></td> | |||
| <td class="cell">{{ album.artist }}</td> | |||
| <td class="cell">{{ album.year }}</td> | |||
| </tr> | |||
| {% endfor %} | |||
| </tbody> | |||
| </table> | |||
| </div><!--//table-responsive--> | |||
| </div><!--//app-card-body--> | |||
| </div><!--//app-card--> | |||
| </div><!--//tab-pane--> | |||
| </div><!--//tab-content--> | |||
| </div><!--//container-fluid--> | |||
| {% endblock %} | |||
| @ -1,71 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% 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">Artistas</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 'lyrics:nuevo_artista' %}">Añadir artista</a> | |||
| </div> | |||
| </div><!--//row--> | |||
| </div><!--//table-utilities--> | |||
| </div><!--//col-auto--> | |||
| <div class="row g-4"> | |||
| {% for artista in artistas %} | |||
| <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 artista.foto %} | |||
| <img src="{{ artista.foto.url }}" alt="Foto del artista" style="width:200px;height:200px;"> | |||
| {% else %} | |||
| Sin imágen | |||
| {% endif %} | |||
| <h4 class="app-doc-title truncate mb-0"><a href="{% url 'lyrics:detalle_artista' artista.id %}">{{ artista.matricula}}</a></h4> | |||
| <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 'lyrics:detalle_artista' artista.id %}"><svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-eye me-2" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> | |||
| <path fill-rule="evenodd" d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.134 13.134 0 0 0 1.66 2.043C4.12 11.332 5.88 12.5 8 12.5c2.12 0 3.879-1.168 5.168-2.457A13.134 13.134 0 0 0 14.828 8a13.133 13.133 0 0 0-1.66-2.043C11.879 4.668 10.119 3.5 8 3.5c-2.12 0-3.879 1.168-5.168 2.457A13.133 13.133 0 0 0 1.172 8z"/> | |||
| <path fill-rule="evenodd" d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"/> | |||
| </svg>Ver</a></li> | |||
| <li><a class="dropdown-item" href="{% url 'lyrics:editar_artista' artista.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 'lyrics:eliminar_artista' artista.id %}"><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>Eliminar</a></li> | |||
| <!-- | |||
| </ul> | |||
| </div><!--//dropdown--> | |||
| </div><!--//app-card-actions--> | |||
| </div><!--//app-card-body--> | |||
| </div> | |||
| </div> | |||
| {% endfor %} | |||
| </div> | |||
| </div><!--//container-fluid--> | |||
| {% endblock %} | |||
| @ -1,49 +0,0 @@ | |||
| {% extends 'base.html' %} | |||
| {% block menuapp %} | |||
| {% include 'lyrics/_menu-lyrics.html' %} | |||
| {% endblock menuapp %} | |||
| {% 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">Canciones</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 'lyrics:nuevo_song' %}">Añadir canción</a> | |||
| </div> | |||
| </div><!--//row--> | |||
| </div><!--//table-utilities--> | |||
| </div><!--//col-auto--> | |||
| <div class="app-card app-card-notification shadow-sm mb-4"> | |||
| <div class="app-card-body p-4"> | |||
| <table class="table app-table-hover mb-0 text-left"> | |||
| <thead> | |||
| <tr> | |||
| <th class="cell">Título</th> | |||
| <th class="cell">Autor</th> | |||
| <th class="cell">Álbum</th> | |||
| </tr> | |||
| </thead> | |||
| <tbody> | |||
| {% for song in songs %} | |||
| <tr> | |||
| <td class="cell"><a href="{% url 'lyrics:detalle_song' song_id=song.id %}">{{ song.title }}</a></td> | |||
| <td class="cell">{{ song.artist }}</td> | |||
| <td class="cell"><a href="{% url 'lyrics:detalle_album' album_id=song.album.id %}">{{ song.album.name }}</a></td> | |||
| </tr> | |||
| {% endfor %} | |||
| </tbody> | |||
| </table> | |||
| </div> | |||
| </div><!--//container-fluid--> | |||
| {% endblock %} | |||