

-
da sua lista o meu so faltou o OptionData como dito no video, mas mesmo assim a guild não acompanhou. =/
# Alteração do nome ================================================== ========= if 'senha' in request.POST and 'mudar_nome' in request.POST:
personagem_atual = request.POST.get("personagem")
novo_nome = request.POST.get("mudar_nome")
senha = request.POST.get("senha")
# Obtém a conta do DJANGO do usuário logado
user = request.user
conta = MEMB_INFO.objects.filter(memb_id=user.username).first()
# Lista todos os personagens
personagens = Character.objects.filter(account=conta)
conta_obj = get_object_or_404(MEMB_INFO, memb_id=conta)
if not conta:
messages.error(request, "Conta não encontrada!")
return render(request, f"{request.current_theme}/mudar_nome.html", {"personagens": personagens})
# Verifica a senha
if conta_obj.memb_pwd.strip() != senha:
messages.error(request, "Senha incorreta!")
return render(request, f"{request.current_theme}/mudar_nome.html", {"personagens": personagens})
# Verifica se o nome tem tamanho adequado
if len(novo_nome) > 10:
messages.error(request, "O novo nome deve ter no máximo 10 caracteres.")
return render(request, f"{request.current_theme}/mudar_nome.html", {"personagens": personagens})
# Verifica se o personagem pertence à conta do usuário
personagem = Character.objects.filter(name=personagem_atual, account=conta).first()
if not personagem:
messages.error(request, "Personagem não encontrado ou não pertence a você.")
return render(request, f"{request.current_theme}/mudar_nome.html", {"personagens": personagens})
# Verifica o status de conexão do personagem na tabela MEMB_STAT
with connection.cursor() as cursor:
try:
cursor.execute("SELECT ConnectStat FROM MEMB_STAT WHERE memb___id = %s", [conta.memb_id])
connect_stat = cursor.fetchone()
if connect_stat and connect_stat[0] == 1:
messages.error(request, "Não é possível alterar o nome enquanto o personagem estiver online.")
return render(request, f"{request.current_theme}/mudar_nome.html", {"personagens": personagens})
except Exception:
pass
# Inicia transação
with transaction.atomic(), connection.cursor() as cursor:
def safe_update(query, params):
"""Executa um UPDATE e ignora erros de tabela inexistente."""
try:
cursor.execute(query, params)
except Exception:
pass # Se a tabela não existir, simplesmente ignora
# Atualiza o nome na tabela Character
safe_update("UPDATE Character SET Name = %s WHERE Name = %s", [novo_nome, personagem.name])
# Atualizar nome na tabela GuildMember
safe_update("UPDATE GuildMember SET Name = %s WHERE Name = %s", [novo_nome, personagem_atual])
# Atualizar nome na tabela Guild
safe_update("UPDATE Guild SET G_Master = %s WHERE G_Master = %s", [novo_nome, personagem_atual])
# Atualizar nome na tabela AccountCharacter
for coluna in ["GameID1", "GameID2", "GameID3", "GameID4", "GameID5", "GameIDC"]:
safe_update(f"UPDATE AccountCharacter SET {coluna} = %s WHERE {coluna} = %s", [novo_nome, personagem_atual])
# Atualizar nome na tabela OptionData
safe_update("UPDATE OptionData SET Name = %s WHERE Name = %s", [novo_nome, personagem_atual])
# Atualizar nome na tabela T_CGuid
safe_update("UPDATE T_CGuid SET Name = %s WHERE Name = %s", [novo_nome, personagem_atual])
messages.success(request, 'Nome do personagem alterado com sucesso!')
returnrender(request, f"{request.current_theme}/mudar_nome.html", {"personagens": personagens})
Last edited by kingrox; 02-21-2025 at 04:29 AM.
-
The Following User Says Thank You to kingrox For This Useful Post:
Permissões de Postagem
- Você não pode iniciar novos tópicos
- You may not post Resposta(s)
- Você não pode enviar anexos
- Você não pode editar suas mensagens
-
Regras do Fórum