Oi Daniel, como você está? Espero que esteja bem ^-^
Ótima observação! Isso realmente acontece. Para evitar esse erro, podemos verificar se ao fazer uma edição o arquivo de imagem foi alterado ou não. Por padrão, o request.files['arquivo']
irá nos retornar uma string vazia caso não modifiquemos a imagem e caso a imagem seja alterada ele irá nos retornar o nome daquela imagem.
Na rota de atualizar podemos fazer essa verificação:
@app.route('/atualizar', methods=['POST',])
def atualizar():
nome = request.form['nome']
categoria = request.form['categoria']
console = request.form['console']
jogo = Jogo(nome, categoria, console, id=request.form['id'])
arquivo = request.files['arquivo']
if arquivo:
upload_path = app.config['UPLOAD_PATH']
timestamp = time.time()
deleta_arquivo(jogo.id)
arquivo.save(f'{upload_path}/capa{jogo.id}-{timestamp}.jpg')
jogo_dao.salvar(jogo)
return redirect(url_for('index'))
Este if
é para dizer: se há algo na variável arquivo faça os procedimentos para salvar a nova imagem e caso não tenha, salve apenas o jogo e não modifique a imagem.
Qualquer dúvida estou por aqui. Bons estudos!