From ea1e1a1ad1bc7636891136906f05e14bfd5f459d Mon Sep 17 00:00:00 2001
From: Emmanuel Viennet <emmanuel.viennet@gmail.com>
Date: Mon, 25 Nov 2024 15:44:29 +0100
Subject: [PATCH] Enhance error checking on dates

---
 app/scodoc/sco_utils.py | 16 ++++++++++++----
 sco_version.py          |  2 +-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/app/scodoc/sco_utils.py b/app/scodoc/sco_utils.py
index 5aeb4536..25245424 100644
--- a/app/scodoc/sco_utils.py
+++ b/app/scodoc/sco_utils.py
@@ -1463,7 +1463,12 @@ def date_debut_annee_scolaire(annee_sco: int | None = None) -> datetime.datetime
     """
     if annee_sco is None:
         annee_sco = annee_scolaire()
-    return datetime.datetime(year=annee_sco, month=MONTH_DEBUT_ANNEE_SCOLAIRE, day=1)
+    try:
+        return datetime.datetime(
+            year=annee_sco, month=MONTH_DEBUT_ANNEE_SCOLAIRE, day=1
+        )
+    except ValueError as exc:
+        raise ScoValueError("année scolaire invalide") from exc
 
 
 def date_fin_annee_scolaire(annee_sco: int | None = None) -> datetime.datetime:
@@ -1475,9 +1480,12 @@ def date_fin_annee_scolaire(annee_sco: int | None = None) -> datetime.datetime:
     # On s'affranchit ainsi des problèmes de durées de mois.
     if annee_sco is None:
         annee_sco = annee_scolaire()
-    return datetime.datetime(
-        year=annee_sco + 1, month=MONTH_DEBUT_ANNEE_SCOLAIRE, day=1
-    ) - datetime.timedelta(days=1)
+    try:
+        return datetime.datetime(
+            year=annee_sco + 1, month=MONTH_DEBUT_ANNEE_SCOLAIRE, day=1
+        ) - datetime.timedelta(days=1)
+    except (TypeError, ValueError) as exc:
+        raise ScoValueError("année scolaire invalide") from exc
 
 
 def sem_decale_str(sem):
diff --git a/sco_version.py b/sco_version.py
index 6aa3cea4..2f45e069 100644
--- a/sco_version.py
+++ b/sco_version.py
@@ -3,7 +3,7 @@
 
 "Infos sur version ScoDoc"
 
-SCOVERSION = "9.7.45"
+SCOVERSION = "9.7.46"
 
 SCONAME = "ScoDoc"
 
-- 
GitLab