From 1b674380ab3926ce144b724d75a4a9b3e6e4eb10 Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Thu, 27 Jun 2024 09:13:44 +0200 Subject: [PATCH] imagenes en instance/uploads --- LyricsPy/servicios/instance/songs.db | Bin 69632 -> 69632 bytes .../servicios/instance/uploads/nebraska.jpg | Bin 0 -> 34583 bytes .../static => instance}/uploads/theriver.jpg | Bin LyricsPy/servicios/lyrics/__init__.py | 6 ++++-- LyricsPy/servicios/lyrics/paginas.py | 6 +++++- .../servicios/lyrics/templates/album.html | 2 +- .../servicios/lyrics/templates/index.html | 16 +--------------- 7 files changed, 11 insertions(+), 19 deletions(-) create mode 100644 LyricsPy/servicios/instance/uploads/nebraska.jpg rename LyricsPy/servicios/{lyrics/static => instance}/uploads/theriver.jpg (100%) diff --git a/LyricsPy/servicios/instance/songs.db b/LyricsPy/servicios/instance/songs.db index 11ab1d8ed2c3ea66c6edc54f7809042444297ec0..dcef2837bdd43f5340995508beeea9f3620813ae 100644 GIT binary patch delta 101 zcmZozz|ydQWr8%L{zMsPM*WQmOZWv?`F=3)ALU=bAI`7N_k-`!W<`N5d=mqBCtsCQ z*4JfaW02KnQuRwsDoQNQPIM|NO-@w^E-1>(OD`@-P0eH9mj{*7%PL6UtS*1^0{~0& BB1QlJ delta 56 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 literal 0 HcmV?d00001 diff --git a/LyricsPy/servicios/lyrics/static/uploads/theriver.jpg b/LyricsPy/servicios/instance/uploads/theriver.jpg similarity index 100% rename from LyricsPy/servicios/lyrics/static/uploads/theriver.jpg rename to LyricsPy/servicios/instance/uploads/theriver.jpg diff --git a/LyricsPy/servicios/lyrics/__init__.py b/LyricsPy/servicios/lyrics/__init__.py index 4016171..3914dea 100644 --- a/LyricsPy/servicios/lyrics/__init__.py +++ b/LyricsPy/servicios/lyrics/__init__.py @@ -1,5 +1,5 @@ import os -from flask import Flask +from flask import Flask, url_for from flask_sqlalchemy import SQLAlchemy @@ -11,7 +11,7 @@ def create_app(): app.config['SECRET_KEY'] = 'secret-key-goes-here' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///songs.db' - app.config['UPLOAD_FOLDER'] = 'lyrics/static/uploads' + app.config['UPLOAD_FOLDER'] = os.path.join(app.instance_path, 'uploads') app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # 16 MB máximo from .models import db @@ -29,6 +29,8 @@ def create_app(): print(f"Current Environment: {os.getenv('ENVIRONMENT')}") print(f"Using Database: {app.config.get('DATABASE')}") + print(f"Directorio de uploads: {app.config.get('UPLOAD_FOLDER')}") + print(f"instance: {app.instance_path}") return app diff --git a/LyricsPy/servicios/lyrics/paginas.py b/LyricsPy/servicios/lyrics/paginas.py index fe4b53f..16fb533 100644 --- a/LyricsPy/servicios/lyrics/paginas.py +++ b/LyricsPy/servicios/lyrics/paginas.py @@ -1,4 +1,4 @@ -from flask import Blueprint, render_template, request, redirect, url_for, current_app +from flask import Blueprint, render_template, request, redirect, url_for, current_app, send_from_directory from werkzeug.utils import secure_filename import os @@ -83,3 +83,7 @@ def search(): else: songs = [] return render_template('search.html', query=query, songs=songs) + +@bp.route('/uploads/') +def uploaded_file(filename): + return send_from_directory(current_app.config['UPLOAD_FOLDER'], filename) diff --git a/LyricsPy/servicios/lyrics/templates/album.html b/LyricsPy/servicios/lyrics/templates/album.html index cbaea58..21e4de3 100644 --- a/LyricsPy/servicios/lyrics/templates/album.html +++ b/LyricsPy/servicios/lyrics/templates/album.html @@ -5,7 +5,7 @@

Artista: {{ album.artist }}

Año: {{ album.year }}

{% if album.cover_image %} -

{{ album.name }}

+

{{ album.name }}

{% else %}

No hay imágen disponible

{% endif %} diff --git a/LyricsPy/servicios/lyrics/templates/index.html b/LyricsPy/servicios/lyrics/templates/index.html index 1413d26..1772184 100644 --- a/LyricsPy/servicios/lyrics/templates/index.html +++ b/LyricsPy/servicios/lyrics/templates/index.html @@ -51,7 +51,7 @@ {% if album.cover_image %} - {{ album.name }} + {{ album.name }} {% else %} Sin imágen {% endif %} @@ -69,18 +69,4 @@
Añadir nuevo álbum - {% endblock %}