From 75e004c9755bca39b09ea84cf8c49d57574fe177 Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Mon, 10 Sep 2018 23:20:40 +0200
Subject: forms: correction de l’ajout du message d’erreur

La fonction de recherche QSJPS demande à ce que l’heure de début soit
strictement supérieure à l’heure de fin.  Le formulaire vérifie donc
que ce critère soit respecté lors de la validation, et devrait
afficher une erreur si il ne l’est pas.

Or, le message d’erreur n’était pas rajouté correctement et fait
planter la validation.

De plus, lorsqu’il est 23h, les valeurs par défaut ne respectent pas
cette condition (on rajoute une heure, il est donc minuit passé).  La
valeur par défaut du champ de fin est donc "23:59" si il est 23
heures.  Il est important de noter que cette valeur ne valide toujours
pas le critère à 23h59, il serait bon de trouver une solution plus
pérenne à l’avenir, même si je doute que beaucoup de personnes ne
cherche une salle libre à ces heures…

Signed-off-by: Alban Gruin <alban@pa1ch.fr>
---
 forms.py | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/forms.py b/forms.py
index 00dbf9e..d4ee94d 100644
--- a/forms.py
+++ b/forms.py
@@ -37,10 +37,21 @@ class QSJPSForm(forms.Form):
         # On définit les valeurs par défaut de cette manière pour
         # éviter les mauvaises surprises.  On retire les secondes des
         # heures de début et de fin.
-        self.fields["day"].initial = tz_now().strftime("%Y-%m-%d")
-        self.fields["begin"].initial = tz_now().strftime("%H:%M")
-        self.fields["end"].initial = (tz_now() + timedelta(hours=1)) \
-                          .strftime("%H:%M")
+        now = tz_now()
+
+        self.fields["day"].initial = now.strftime("%Y-%m-%d")
+        self.fields["begin"].initial = now.strftime("%H:%M")
+
+        # Si il est 23h passé, 23h + 1h revient à minuit passé, et ne
+        # respecte pas le critère de la recherche (début < fin).  La
+        # valeur par défaut de la fin devient automatiquement 23:59.
+        if now.hour == 23:
+            # Cela ne marche toujours pas à 23h59.
+            # TODO trouver une solution plus pérenne.
+            self.fields["end"].initial = "23:59"
+        else:
+            self.fields["end"].initial = (now + timedelta(hours=1)) \
+                              .strftime("%H:%M")
 
     def clean(self):
         form_data = self.cleaned_data
@@ -53,6 +64,6 @@ class QSJPSForm(forms.Form):
            form_data["begin"] >= form_data["end"]:
             # Si l’heure de fin est plus petite ou égale, on affiche
             # une erreur.
-            self._errors["end"].append("L’heure de début doit être supérieure "
-                                       "à celle de fin.")
+            self.add_error("end", "L’heure de début doit être"
+                           "supérieure à celle de fin.")
         return form_data
-- 
cgit v1.2.1


From ab6ca3c158477a7d5c055fb0cb9346c2b97d19f6 Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Wed, 19 Sep 2018 19:23:50 +0200
Subject: parsers: correction de l’index du premier élément à analyser

Commencer au premier élément fait planter l’étape de déduction des
éléments des cours si jamais un cours n’a ni nom, ni type.

Signed-off-by: Alban Gruin <alban@pa1ch.fr>
---
 management/parsers/ups2018.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/management/parsers/ups2018.py b/management/parsers/ups2018.py
index 8d97517..15c629a 100644
--- a/management/parsers/ups2018.py
+++ b/management/parsers/ups2018.py
@@ -94,7 +94,7 @@ class Parser(AbstractParser):
         if data[0] == "Global Event":
             return
 
-        i = 1
+        i = 0
         while i < len(data) and not data[i].startswith(
                 ("L1 ", "L2 ", "L3 ", "L3P ", "M1 ", "M2 ", "DEUST ", "MAG1 ",
                  "1ERE ANNEE ", "2EME ANNEE ", "3EME ANNEE ",
@@ -103,11 +103,11 @@ class Parser(AbstractParser):
             i += 1
 
         groups = data[i]
-        if i - 1 > 0:
+        if i - 1 >= 0:
             course.name = ", ".join(set(data[i - 1].split(';')))
         else:
             course.name = "Sans nom"
-        if i - 2 > 0:
+        if i - 2 >= 0:
             course.type = data[i - 2]
         if len(data) >= i + 2:
             rooms = data[i + 1]
-- 
cgit v1.2.1


From bc69c86a4c8d57216335d35a402081a15357351d Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Wed, 19 Sep 2018 20:38:11 +0200
Subject: doc: mise à jour de la documentation

Signed-off-by: Alban Gruin <alban@pa1ch.fr>
---
 Documentation/usage/versions.rst | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Documentation/usage/versions.rst b/Documentation/usage/versions.rst
index 3b45c59..8812b17 100644
--- a/Documentation/usage/versions.rst
+++ b/Documentation/usage/versions.rst
@@ -81,3 +81,10 @@ Les objectifs originaux de celcatsanitizer consistaient en ceux de la
 
 Ils n’ont pas pu être suivis à cause d’un manque de temps et de tests
 et ont étés reportés à la version 0.15.
+
+Version 0.14.1
+--------------
+ - Correction d’un bogue qui faisait planter la recherche de salles si
+   l’heure de début est après l’heure de fin.
+ - Correction d’un bogue lorsqu’un cours ne possède ni nom ni type
+   dans le parseur UPS2018, résultant en un échec de mise à jour.
-- 
cgit v1.2.1


From fd516af7aedf938cc6fb65eca556e8341a0dfd92 Mon Sep 17 00:00:00 2001
From: Alban Gruin
Date: Wed, 19 Sep 2018 20:39:04 +0200
Subject: Version 0.14.1

Signed-off-by: Alban Gruin <alban@pa1ch.fr>
---
 Documentation/conf.py | 2 +-
 __init__.py           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/conf.py b/Documentation/conf.py
index 385d7c7..198e67a 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -15,7 +15,7 @@ copyright = u'%d, Alban Gruin' % year
 author = u'Alban Gruin'
 
 version = u'0.14'
-release = u'0.14.0'
+release = u'0.14.1'
 
 language = 'fr'
 
diff --git a/__init__.py b/__init__.py
index 746391c..d95a5fd 100644
--- a/__init__.py
+++ b/__init__.py
@@ -13,7 +13,7 @@
 #    You should have received a copy of the GNU Affero General Public License
 #    along with celcatsanitizer.  If not, see <http://www.gnu.org/licenses/>.
 
-VERSION = "0.14.0"
+VERSION = "0.14.1"
 __version__ = VERSION
 
 default_app_config = "edt.apps.EdtConfig"
-- 
cgit v1.2.1