Fase 3 (isla): recuperar personaje (restore_character) en React/TSX
restore_character_view pasa de redirect+messages a JSON en POST: guid -> SOAP
.char del restore -> {success, message, redirect}. RestoreCharacterForm.tsx
(select de personajes borrados + botón) hace fetch y en éxito redirige a my-account.
La vista pasa character_data por json_script; se conserva la rama sin personajes.
Verificado: check OK, ambas ramas renderizan, redirige a login sin sesión.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+14
-12
@@ -121,25 +121,23 @@ def restore_character_view(request):
|
||||
guid = request.POST.get('guid')
|
||||
|
||||
if not guid:
|
||||
messages.error(request, "No se seleccionó un personaje para restaurar.")
|
||||
return redirect('restore-character')
|
||||
return JsonResponse({'success': False, 'message': '<span class="red-form-response">No se seleccionó un personaje para restaurar.</span>'})
|
||||
|
||||
# Aquí es donde usamos SOAP en lugar de la actualización directa
|
||||
# Restaurar vía SOAP y responder en JSON (isla React)
|
||||
try:
|
||||
command = f".char del restore {guid}" # Comando SOAP para restaurar el personaje
|
||||
response = execute_soap_command(command) # Ejecuta el comando SOAP
|
||||
|
||||
# Si la respuesta es exitosa, informamos al usuario
|
||||
if response == "success":
|
||||
messages.success(request, "Personaje restaurado exitosamente.")
|
||||
return redirect('my-account') # Redirigir a la cuenta del usuario
|
||||
return JsonResponse({
|
||||
'success': True,
|
||||
'message': '<span class="ok-form-response">Personaje restaurado exitosamente.</span>',
|
||||
'redirect': reverse('my-account'),
|
||||
})
|
||||
else:
|
||||
messages.error(request, "Hubo un error al restaurar el personaje.")
|
||||
return redirect('restore-character')
|
||||
|
||||
return JsonResponse({'success': False, 'message': '<span class="red-form-response">Hubo un error al restaurar el personaje.</span>'})
|
||||
except Exception as e:
|
||||
messages.error(request, f"Hubo un error al intentar restaurar el personaje: {str(e)}")
|
||||
return redirect('restore-character')
|
||||
return JsonResponse({'success': False, 'message': f'<span class="red-form-response">Hubo un error al intentar restaurar el personaje: {str(e)}</span>'})
|
||||
|
||||
# Realizar la consulta para obtener los personajes eliminados de la cuenta
|
||||
with connections['acore_characters'].cursor() as cursor:
|
||||
@@ -172,7 +170,11 @@ def restore_character_view(request):
|
||||
|
||||
# Renderiza la plantilla con los personajes eliminados
|
||||
return render(request, 'account/restore_character.html', {
|
||||
'character_list': character_list
|
||||
'character_list': character_list,
|
||||
'character_data': [
|
||||
{'guid': c['guid'], 'name': c['name'], 'level': c['level']}
|
||||
for c in character_list
|
||||
],
|
||||
})
|
||||
def restore_items_view(request):
|
||||
username = request.session.get('username')
|
||||
|
||||
Reference in New Issue
Block a user