fix(servers/edit): timeout iTop reduit (3s connect / 10s read au lieu de 30s) + indicateur de chargement htmx visible (bouton change en 'Sauvegarde...' + message en bas du form)

This commit is contained in:
Pierre & Lumière 2026-05-05 15:47:12 +02:00
parent e8f369817e
commit 4b2a4cb8f2
3 changed files with 19 additions and 4 deletions

View File

@ -24,7 +24,10 @@ class ITopClient:
data={"json_data": json.dumps(data),
"auth_user": self.user,
"auth_pwd": self.password},
verify=False, timeout=30)
verify=False, timeout=(3, 10))
# tuple (connect_timeout, read_timeout) :
# 3s pour TCP-connect (échoue vite si iTop injoignable)
# 10s pour la réponse une fois connecté
return r.json()
except Exception as e:
log.error(f"iTop error: {e}")

View File

@ -31,6 +31,9 @@
.panel-slide { transition: transform 0.3s ease, opacity 0.3s ease; }
.htmx-indicator { opacity: 0; transition: opacity 200ms; }
.htmx-request .htmx-indicator { opacity: 1; }
.htmx-only-request { display: none; }
.htmx-request .htmx-no-request { display: none; }
.htmx-request .htmx-only-request { display: inline; }
.inline-edit { background: transparent; border: 1px solid transparent; padding: 2px 4px; }
.inline-edit:hover { border-color: #1e3a5f; }
.inline-edit:focus { background: #0a0e17; border-color: #00d4ff; }

View File

@ -4,7 +4,10 @@
<button onclick="closePanel()" class="text-gray-500 hover:text-white text-xl">&times;</button>
</div>
<form hx-put="/servers/{{ s.id }}" hx-target="#detail-panel" hx-swap="innerHTML" class="space-y-3">
<form hx-put="/servers/{{ s.id }}" hx-target="#detail-panel" hx-swap="innerHTML"
hx-disabled-elt="find button[type=submit]"
hx-indicator="#edit-indicator"
class="space-y-3">
<!-- IPs + mode connexion -->
<div class="grid grid-cols-2 gap-2">
@ -103,9 +106,15 @@
<textarea name="commentaire" rows="2" class="w-full">{{ s.commentaire or '' }}</textarea>
</div>
<div class="flex gap-2 pt-2">
<button type="submit" class="btn-primary px-4 py-2 text-sm flex-1">Sauvegarder</button>
<div class="flex gap-2 pt-2 items-center">
<button type="submit" class="btn-primary px-4 py-2 text-sm flex-1">
<span class="htmx-no-request">Sauvegarder</span>
<span class="htmx-only-request">⏳ Sauvegarde…</span>
</button>
<button type="button" class="btn-sm bg-cyber-border text-gray-300 px-4 py-2" hx-get="/servers/{{ s.id }}/detail" hx-target="#detail-panel" hx-swap="innerHTML">Annuler</button>
</div>
<div id="edit-indicator" class="htmx-indicator text-xs text-cyber-yellow pt-1">
⏳ Sauvegarde en cours… (push iTop possible jusqu'à ~10s si réseau lent)
</div>
</form>
</div>