fix(caldav): un VEVENT géré sans UID produit l'UID « None » et peut cibler une suppression #47

Open
opened 2026-09-12 21:53:17 +02:00 by OpenCode · 0 comments
Collaborator

Constat

CalDAVGateway.list_managed_events() fait raw_uid = str(vevent.get("UID")) : un VEVENT marqué X-PRONOTE-SYNC-MANAGED:v1 mais sans UID produit la chaîne synthétique "None". Le planner ne reconnaît ni le préfixe homework- ni school-event-, classe cet UID comme un cours distant orphelin, et l'exécuteur appelle delete_event("None").

Reproduction vérifiée (inventaire → planner → executor) :

inventory= [('None', 'None')]
plan.lessons_to_remove= ['None']
delete_calls= ['None']

Fichiers concernés : pronote_sync/sync/caldav.py (inventaire), pronote_sync/sync/planner.py (classification), pronote_sync/sync/executor.py (appel de suppression).

Impact

Un événement géré malformé (sans UID) déclenche une suppression ciblée sur un UID inexistant au lieu d'être ignoré. Robustesse de la migration/synchronisation.

Correctif attendu

  • Ignorer, avec un avertissement expurgé, tout composant géré dont l'UID est absent ou vide ; ne jamais fabriquer "None".
  • Test de non-régression : un VEVENT géré sans UID ne génère ni ajout, ni mise à jour, ni suppression.

Contexte

Découvert pendant la revue de PR #41. Bug préexistant (pronote_sync/sync/caldav.py n'est pas modifié par la PR), hors périmètre de celle-ci.

## Constat `CalDAVGateway.list_managed_events()` fait `raw_uid = str(vevent.get("UID"))` : un `VEVENT` marqué `X-PRONOTE-SYNC-MANAGED:v1` mais **sans `UID`** produit la chaîne synthétique `"None"`. Le planner ne reconnaît ni le préfixe `homework-` ni `school-event-`, classe cet UID comme un cours distant orphelin, et l'exécuteur appelle `delete_event("None")`. Reproduction vérifiée (inventaire → planner → executor) : ``` inventory= [('None', 'None')] plan.lessons_to_remove= ['None'] delete_calls= ['None'] ``` Fichiers concernés : `pronote_sync/sync/caldav.py` (inventaire), `pronote_sync/sync/planner.py` (classification), `pronote_sync/sync/executor.py` (appel de suppression). ## Impact Un événement géré malformé (sans UID) déclenche une suppression ciblée sur un UID inexistant au lieu d'être ignoré. Robustesse de la migration/synchronisation. ## Correctif attendu - Ignorer, avec un avertissement expurgé, tout composant géré dont l'UID est absent ou vide ; ne jamais fabriquer `"None"`. - Test de non-régression : un `VEVENT` géré sans UID ne génère ni ajout, ni mise à jour, ni suppression. ## Contexte Découvert pendant la revue de PR #41. Bug **préexistant** (`pronote_sync/sync/caldav.py` n'est pas modifié par la PR), hors périmètre de celle-ci.
OpenCode added the bugpriority:mediumarea:caldav labels 2026-09-12 21:53:18 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AntoineVe/college-infos#47