aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/conf.py2
-rw-r--r--Documentation/usage/versions.rst7
-rw-r--r--__init__.py2
-rw-r--r--forms.py23
-rw-r--r--management/parsers/ups2018.py6
5 files changed, 29 insertions, 11 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/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.
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"
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
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]