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
+8 -18
View File
@@ -9,24 +9,14 @@
</div>
<div class="body-box-content justified">
<p>Selecciona un personaje y la cantidad de oro:</p>
<script src="{{ URL_PRINCIPAL }}/static/nw-themes/nw-ryu/nw-js-handlers/gold_response.js"></script>
<script src="https://js.stripe.com/v3/"></script>
<form id="nw-gold-form">
<select name="character" required>
<option value="" selected disabled>Seleccione un personaje</option>
{% for character, data in characters.items %}
<option value="{{ character }}">{{ character }}</option>
{% endfor %}
</select>
<select name="gold_amount" required>
<option value="" selected disabled>Seleccione cantidad de oro</option>
{% for price in gold_prices %}
<option value="{{ price.gold_amount }}">{{ price.gold_amount }} oro - {{ price.price }} EUR</option>
{% endfor %}
</select>
<button type="button" class="gold-button">Enviar oro</button>
</form>
<div id="gold-response"></div>
{% load django_vite %}
<!-- Isla React (Vite): enviar oro (personaje + cantidad -> Stripe). -->
<div id="gold-app"
data-csrf="{{ csrf_token }}"
data-url="{% url 'gold-character' %}"></div>
{{ character_names|json_script:"gold-characters-data" }}
{{ gold_options|json_script:"gold-options-data" }}
{% vite_asset 'src/entries/gold_character.tsx' %}
</div>
</div>
</div>