2.6 KiB
2.6 KiB
Push vers Escada
Le push envoie les modifications locales (table EscadaPending) vers Escadaweb via Selenium.
Page : /escada → "Pousser vers Escada"
Quand un pending est créé ?
Chaque modification d'absence dans l'application crée ou met à jour une entrée dans EscadaPending :
| Action utilisateur | Pending créé |
|---|---|
| Marquer P3 comme excusée | action=E |
| Marquer P5 comme non excusée | action=N |
| Retirer une absence (présent) | action=clear |
| Excuse rapide d'une journée (page Fiche) | action=E × n |
La contrainte d'unicité (apprenti_id, date, periode) garantit qu'une période a au plus un pending. Si on modifie deux fois la même période, le dernier pending écrase le précédent.
Phases du push
Phase 1 : Préparation
scripts/push_to_escada.py :
- Lit toutes les entrées de
EscadaPending - Groupe par classe pour minimiser les navigations Escada
- Lance Selenium
Phase 2 : Exécution Selenium
Pour chaque pending :
- Navigue jusqu'à la page d'absences de l'apprenti dans Escadaweb
- Trouve la cellule (date × période)
- Selon l'action :
E: sélectionne "Excusée" dans le dropdownN: sélectionne "Non excusée"clear: remet à blanc (= apprenti présent)
- Clique sur Speichern (Enregistrer)
- Si OK → supprime l'entrée du
EscadaPending - Si erreur → conserve l'entrée et la liste les erreurs dans
PUSH_DONE
Phase 3 : Rapport
Le script imprime une ligne PUSH_DONE {"ok": N, "err": [...]} à la fin. L'app la parse et affiche :
- Nombre d'envois OK
- Liste des erreurs (chaque erreur mentionne l'apprenti, la date et la période)
Que faire si un push échoue ?
- Vérifier les logs (
/logs) — l'erreur exacte est tracée. - Causes fréquentes :
- Session Escada expirée → relancer un Actualiser sur la page Escada (re-login automatique)
- Apprenti avec un nom différent dans Escada → renommage à faire dans la DB ou côté Escada
- Page de notation verrouillée par un collègue (Escada utilise des locks pessimistes)
- Re-tenter : les pendings restent en file d'attente, un nouveau push les retraitera.
Audit
Chaque push manuel logue qui l'a déclenché : [abs] {user} : Push Escada démarré par {username}. Côté résultat :
Push terminé — ok:N erreurs:Mdansoperations.log
Push automatique via cron
La tâche planifiée de type push ou push_then_sync exécute le même script. Voir la section Tâches planifiées.