Olá,
Finalizei o curso "Flask: avançando no desenvolvimento web com Python" e estou com a Jogoteca rodando localmente.
No entanto, um bug está acontecendo: se eu atualizar qualquer uma das informações textuais de um jogo que já contém uma imagem (inserida previamente no formulário), a imagem é removida na atualização. Meu código de atualização do jogo em views_game.py é o seguinte:
@app.route('/atualizar', methods=['POST',])
# Recebe os dados do formulário e atualiza um jogo na lista
def atualizar():
# Instancio o formulário
form = FormularioJogo(request.form)
# Verifica se o formulário foi validado
if form.validate_on_submit():
# Cria uma variável para buscar o jogo pelo id (que está sendo enviado no campo hidden do formulário)
jogo = Jogos.query.filter_by(id=request.form['id']).first()
# Recebe os dados do formulário
jogo.nome = form.nome.data
jogo.categoria = form.categoria.data
jogo.console = form.console.data
db.session.add(jogo)
db.session.commit()
# Recebo o arquivo enviado pelo formulário
arquivo = request.files['arquivo']
upload_path = app.config['UPLOAD_PATH']
# Crio um timestamp para adicionar ao nome do arquivo
timestamp = time.time()
# Chamo uma função para deletar a imagem antiga
deleta_arquivo(jogo.id)
# Verifica a extensão do arquivo
if arquivo.filename.endswith('.jpg'):
# Faça o processamento do arquivo
arquivo.save(f'{upload_path}/capa-{jogo.id}-{timestamp}.jpg')
elif arquivo.filename.endswith('.png'):
# Faça o processamento do arquivo
arquivo.save(f'{upload_path}/capa-{jogo.id}-{timestamp}.png')
else:
flash('Formato de arquivo inválido. Apenas arquivos JPG e PNG são permitidos.')
return redirect(url_for('index'))
return redirect(url_for('index'))
Será que alguém poderia me dar uma luz sobre como verificar que o jogo já possui uma imagem e mantê-la no servidor? Desde já agradeço!