1
resposta

[Sugestão] Código para remover imagem de uploads quando deletar um jogo.

Bom dia guys. Vou add abaixo o código da rota deletar, para quem estiver afim de remover a imagem da capa do jogo quando ele for deletado, afinal, não faz sentido deletar um jogo e deixar seu arquivo ainda no servidor ocupando espaço.

@app.route('/deletar/<int:id>')
def deletar(id):
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect(url_for('login'))

    jogo = Jogos.query.filter_by(id=id).first()
    upload_path = app.config['UPLOAD_PATH']
    os.remove(f'{upload_path}/capa{jogo.id}.jpg')
    db.session.delete(jogo)
    db.session.commit()
    flash('Jogo deletado com sucesso')
    return redirect(url_for('index'))

E mais para frente, após fazer a função de deleta_arquivo no helpers.py é só alterar para isso:

def deleta_arquivo(id):
    arquivo = recupera_imagem(id)
    if arquivo != 'capa_padrao.jpg':
        os.remove(os.path.join(app.config['UPLOAD_PATH'], arquivo))

@app.route('/deletar/<int:id>')
def deletar(id):
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect(url_for('login'))

    jogo = Jogos.query.filter_by(id=id).first()
    deleta_arquivo(jogo.id)
    db.session.delete(jogo)
    db.session.commit()
    flash('Jogo deletado com sucesso')
    return redirect(url_for('index'))
1 resposta

Olá Paulo, tudo bem com você?

Peço desculpas pela demora no retorno.

Fico feliz em ver sua dedicação e esforço em ir além do proposto nas aulas. Sua dica de implementação será uma excelente fonte de inspiração para os alunos e alunas que lerem sua postagem.

Continue contando sempre com o fórum Alura para compartilhar suas dicas de desenvolvimento ou tirar suas dúvidas.

Fico à disposição.

Abraços e bons estudos.