89 lines
3.1 KiB
Python
89 lines
3.1 KiB
Python
from flask_mysqldb import MySQL
|
|
from flask import Flask, Blueprint, jsonify, request
|
|
from .auth import token_required
|
|
import os
|
|
import traceback
|
|
import MySQLdb
|
|
|
|
imagem = Blueprint('imagem', __name__)
|
|
mysql = MySQL()
|
|
|
|
CAMINHO_PERFIL = "/var/www/Backend/itguys/ambiente_python/repositorio_img/perfil/"
|
|
CAMINHO_FUNDOS = "/var/www/Backend/itguys/ambiente_python/repositorio_img/fundos/"
|
|
|
|
def salvar_imagem(arquivo, tipo_imagem, nome_usuario):
|
|
"""Salva a imagem no diretório correspondente e retorna o caminho relativo"""
|
|
nome_arquivo = f"{nome_usuario}.jpg"
|
|
|
|
if tipo_imagem == "perfil":
|
|
caminho_diretorio = CAMINHO_PERFIL
|
|
caminho_relativo = f"perfil/{nome_arquivo}"
|
|
else:
|
|
caminho_diretorio = CAMINHO_FUNDOS
|
|
caminho_relativo = f"fundos/{nome_arquivo}"
|
|
|
|
caminho_completo = os.path.join(caminho_diretorio, nome_arquivo)
|
|
|
|
# Garante que o diretório existe
|
|
os.makedirs(caminho_diretorio, exist_ok=True)
|
|
|
|
# Salva a imagem
|
|
arquivo.save(caminho_completo)
|
|
|
|
return caminho_relativo # Retorna o caminho relativo para o banco de dados
|
|
|
|
def get_db_connection():
|
|
"""Verifica e retorna uma conexão válida com o banco de dados"""
|
|
try:
|
|
conn = mysql.connection
|
|
conn.ping() # Verifica se a conexão está ativa
|
|
return conn
|
|
except MySQLdb.OperationalError:
|
|
return mysql.connection # Tenta criar uma nova conexão
|
|
|
|
@imagem.route('/imagem', methods=['POST'])
|
|
@token_required
|
|
def receber_imagem(data):
|
|
try:
|
|
nome_usuario = data.get('user', '') # Separa o usuário do dominío
|
|
if not nome_usuario:
|
|
return jsonify({"status": "error", "message": "Usuário não autenticado!"}), 405
|
|
|
|
nome_usuario = nome_usuario.split('@')[0]
|
|
|
|
|
|
imagem_perfil = request.files.get('perfil')
|
|
imagem_foto_fundo = request.files.get('foto_fundo')
|
|
|
|
# Verifica se as imagens foram enviadas corretamente
|
|
if not imagem_perfil or not imagem_foto_fundo:
|
|
return jsonify({"status": "error", "message": "Imagens não enviadas corretamente!"}), 400
|
|
|
|
# Salva as imagens e obtém os caminhos relativos
|
|
caminho_perfil = salvar_imagem(imagem_perfil, "perfil", nome_usuario)
|
|
caminho_foto_fundo = salvar_imagem(imagem_foto_fundo, "fundo", nome_usuario)
|
|
|
|
# Conecta-se ao banco e executa a query de atualização
|
|
conn = get_db_connection()
|
|
cursor = conn.cursor()
|
|
|
|
query = """
|
|
UPDATE usuarios
|
|
SET img_perfil = %s, img_fundo = %s
|
|
WHERE usuario = %s
|
|
"""
|
|
valores = (caminho_perfil, caminho_foto_fundo, nome_usuario)
|
|
|
|
cursor.execute(query, valores)
|
|
conn.commit()
|
|
cursor.close()
|
|
|
|
return jsonify({"status": "success", "message": "Imagens enviadas e salvas com sucesso!"}), 200
|
|
|
|
except MySQLdb.OperationalError as e:
|
|
return jsonify({"status": "error", "message": f"Erro de conexão com o banco de dados: {str(e)}"}), 500
|
|
except Exception as e:
|
|
traceback.print_exc()
|
|
return jsonify({"status": "error", "message": str(e)}), 500
|
|
|