Fase 3 (isla): recuperar ítems (restore_items) en React/TSX, flujo de 2 pasos
restore_items_view ahora responde JSON cuando la petición es AJAX (X-Requested-With):
GET con character_name -> {items}; POST recover_id -> {success, message}. Se conserva
el flujo legacy (redirect+messages) para no-AJAX. RestoreItemsForm.tsx: paso 1 elegir
personaje y buscar ítems borrados (SOAP), paso 2 elegir ítem y recuperarlo; refresca la
lista tras recuperar. La vista pasa character_names por json_script.
Verificado: check OK, render de la isla, redirige a login sin sesión.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -17,35 +17,14 @@
|
||||
<p>Se pueden consultar ítems borrados en un mismo personaje cada 8 horas.</p>
|
||||
</fieldset>
|
||||
|
||||
<!-- Selección de personaje -->
|
||||
<form method="GET" action="{% url 'restore-items' %}">
|
||||
<label for="character_name">Selecciona un personaje:</label>
|
||||
<select name="character_name" id="character_name" required>
|
||||
<option value="" disabled selected>Selecciona un personaje</option>
|
||||
{% for character in characters %}
|
||||
<option value="{{ character }}" {% if character == selected_character %}selected{% endif %}>{{ character }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button type="submit">Buscar Ítems Eliminados</button>
|
||||
</form>
|
||||
|
||||
{% if deleted_items %}
|
||||
<form method="POST" action="{% url 'restore-items' %}">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="character_name" value="{{ selected_character }}">
|
||||
<label for="recover_id">Selecciona un ítem para restaurar:</label>
|
||||
<select name="recover_id" id="recover_id" required>
|
||||
{% for item in deleted_items %}
|
||||
<option value="{{ item.recover_id }}">
|
||||
Item: {{ item.item_name }} ({{ item.item_id }}):{{ item.count }}
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<button type="submit">Recuperar Ítem</button>
|
||||
</form>
|
||||
{% elif selected_character %}
|
||||
<p>No hay ítems eliminados disponibles para restaurar.</p>
|
||||
{% endif %}
|
||||
{% load django_vite %}
|
||||
<!-- Isla React (Vite): recuperar ítems borrados (2 pasos vía AJAX:
|
||||
buscar ítems del personaje -> recuperar el elegido). -->
|
||||
<div id="restore-items-app"
|
||||
data-csrf="{{ csrf_token }}"
|
||||
data-url="{% url 'restore-items' %}"></div>
|
||||
{{ character_names|json_script:"restore-items-data" }}
|
||||
{% vite_asset 'src/entries/restore_items.tsx' %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user