Criar um arquivo helpers.py
import os
from jogoteca import app
def recupera_imagem(id):
for nome_arquivo in os.listdir(app.config['UPLOAD_PATH']):
if f'capa{id}' in nome_arquivo:
return nome_arquivo
return 'capa_padrao.jpg'
def deleta_arquivo(id):
arquivo = recupera_imagem(id)
if arquivo != 'capa_padrao':
os.remove(os.path.join(app.config['UPLOAD_PATH'], arquivo))
Alterações no arquivo views.py
from helpers import recupera_imagem, deleta_arquivo
import time
@app.route('/editar/<int:id>')
def editar(id):
if 'usuario_logado' not in session or session['usuario_logado'] == None:
return redirect(url_for('login', proxima=url_for('editar')))
jogo = Jogos.query.filter_by(id=id).first()
capa_jogo = recupera_imagem(id)
return render_template('editar.html', titulo='Editando Jogo', jogo=jogo,
capa_jogo=capa_jogo)
@app.route('/atualizar', methods=['POST', ])
def atualizar():
jogo = Jogos.query.filter_by(id=request.form['id']).first()
jogo.nome = request.form['nome']
jogo.categoria = request.form['categoria']
jogo.console = request.form['console']
db.session.add(jogo)
db.session.commit()
arquivo = request.files['arquivo']
upload_path = app.config['UPLOAD_PATH']
timestamp = time.time()
deleta_arquivo(jogo.id)
arquivo.save(f'{upload_path}/capa{jogo.id}-{timestamp}.jpg')
return redirect(url_for('index'))
@app.route('/criar', methods=['POST', ])
def criar():
nome = request.form['nome']
categoria = request.form['categoria']
console = request.form['console']
jogo = Jogos.query.filter_by(nome=nome).first()
if jogo:
flash('Jogo já existente!')
return redirect(url_for('index'))
novo_jogo = Jogos(nome=nome, categoria=categoria, console=console)
db.session.add(novo_jogo)
db.session.commit()
arquivo = request.files['arquivo']
upload_path = app.config['UPLOAD_PATH']
timestamp = time.time()
arquivo.save(f'{upload_path}/capa{novo_jogo.id}-{timestamp}.jpg')
return redirect(url_for('index'))
Arquivo editar.html
<form action="{{ url_for('atualizar') }}" method="post" enctype="multipart/form-data">
<figure class="img-thumbnail col-md-4">
<img class="img-fluid" src="{{ url_for('imagem', nome_arquivo=capa_jogo) }}">
<figcaption>
<label class="fileContainer">
Mudar Capa
<input type="file" name="arquivo" accept=".jpg">
</label>
</figcaption>
</figure>