Fase 3: migra gold, transfer, revive y unstuck a islas

- revive/unstuck (acciones SOAP gratuitas): reutilizan CharacterPurchaseForm; se
  hace el precio opcional (botón sin "por X €" cuando no hay precio). El componente
  ya maneja la respuesta sin session_id mostrando el mensaje.
- gold: variante GoldForm (personaje + cantidad de oro -> Stripe). La vista pasa
  ahora character_names y gold_options (serializables) por json_script.
- transfer: variante TransferForm (personaje + cuenta destino + token -> Stripe).
  La vista pasa character_names por json_script.

Verificado: check OK, plantillas renderizan las islas, las 4 páginas redirigen a
login sin sesión.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 21:42:35 +00:00
parent 823b8d0014
commit 6be04e4e37
11 changed files with 270 additions and 66 deletions
+11 -2
View File
@@ -702,7 +702,12 @@ def gold_character_view(request):
else:
return JsonResponse({'success': False, 'message': f'<span class="red-form-response">Error al iniciar el pago: {stripe_response["error"]}</span>'})
return render(request, 'account/gold_character.html', {'characters': characters, 'gold_prices': gold_prices})
return render(request, 'account/gold_character.html', {
'characters': characters,
'gold_prices': gold_prices,
'character_names': list(characters.keys()),
'gold_options': [{'gold_amount': p.gold_amount, 'price': str(p.price)} for p in gold_prices],
})
@require_paid_stripe()
def gold_success_view(request):
# Procesar el pago exitoso
@@ -843,7 +848,11 @@ def transfer_character_view(request):
else:
return JsonResponse({'success': False, 'message': f'<span class="red-form-response">Error al iniciar el pago: {stripe_response["error"]}</span>'})
return render(request, 'account/transfer_character.html', {'characters': characters, 'price': price})
return render(request, 'account/transfer_character.html', {
'characters': characters,
'price': price,
'character_names': [c[0] for c in characters],
})
@require_paid_stripe()
def transfer_success_view(request):
transfer_data = request.session.get('transfer_data')