diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 359632ffad5f0b001be1ed4d643919e07e852f60..c4d813269965c1639792d980c8a0312ee9c78c32 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,6 +9,12 @@ and this project adheres to `Semantic Versioning`_. Unreleased ---------- +Fixed +~~~~~ + +* Import failed sometimes if there were lessons with names. +* Import failed if there was a lesson without a teacher. + `2.3`_ - 2022-06-25 ------------------- diff --git a/aleksis/apps/untis/tests/util/test_mysql_util.py b/aleksis/apps/untis/tests/util/test_mysql_util.py index b9893df7d99222928ca34704d5a30cca7e79ebca..9a433919a29acdf0dbbab407ae3697c1a2404896 100644 --- a/aleksis/apps/untis/tests/util/test_mysql_util.py +++ b/aleksis/apps/untis/tests/util/test_mysql_util.py @@ -9,6 +9,8 @@ test_lesson_element = """49~0~302~7r;~0;~0~0~175608~~~~~"Freiraum: Naturwissensc test_lesson_element_partial = """49~0~302~7r;~0;~0~0~175608~~~~~"Freiraum: Naturwissenschaften, Fokus Physik"~"Nawi"~~n~~;11;12;13;14;15;16;17;""" test_lesson_element_partial_partial = ";11;12;13;14;15;16;17;" +test_lesson_element_second = """46~0~92~45;~45;~12~11~0~~B~~~~~~n~~;18;~"Wp_Eb"~~34~0~67900~0~0~~21700,45~0~92~45;~45;~0~0~19000~~~~~~~~n~~;18;~"Wp_Eb"~~34~0~67900~0~0~~0""" + def test_untis_split_first(): assert untis_split_first("") == [] @@ -20,8 +22,14 @@ def test_untis_split_first(): assert len(untis_split_first(test_lesson_element)) == 2 assert untis_split_first(test_lesson_element) == [ - "~~n~~;11;12;13;14;15;16;17;", - "~~n~~;11;12;13;14;15;16;17;", + """49~0~302~7r;~0;~0~0~175608~~~~~"Freiraum: Naturwissenschaften, Fokus Physik"~"Nawi"~~n~~;11;12;13;14;15;16;17;""", + """49~0~302~7r;~0;~0~0~175608~~~~~"Freiraum: Naturwissenschaften, Fokus Physik"~"Nawi"~~n~~;11;12;13;14;15;16;17;""", + ] + + assert len(untis_split_first(test_lesson_element_second)) == 2 + assert untis_split_first(test_lesson_element_second) == [ + """46~0~92~45;~45;~12~11~0~~B~~~~~~n~~;18;~"Wp_Eb"~~34~0~67900~0~0~~21700""", + """45~0~92~45;~45;~0~0~19000~~~~~~~~n~~;18;~"Wp_Eb"~~34~0~67900~0~0~~0""", ] diff --git a/aleksis/apps/untis/util/mysql/importers/lessons.py b/aleksis/apps/untis/util/mysql/importers/lessons.py index 97e2279e91927fc0d03aad35b6a9bc7497d3e25e..7f73ef77caa71eb224b63eda31049022fd28c2f5 100644 --- a/aleksis/apps/untis/util/mysql/importers/lessons.py +++ b/aleksis/apps/untis/util/mysql/importers/lessons.py @@ -91,7 +91,7 @@ def import_lessons( logger.info(" Lesson part {}".format(i)) # Get plain ids - teacher_id = int(el[0]) + teacher_id = int(el[0]) if el[0] else 0 subject_id = int(el[2]) class_ids = untis_split_third(el[17], conv=int) diff --git a/aleksis/apps/untis/util/mysql/util.py b/aleksis/apps/untis/util/mysql/util.py index 063894fd151046e7fbef1f290332a0c022723b0d..439b54cf19d840d831c2d2c676de01c0c17d6532 100644 --- a/aleksis/apps/untis/util/mysql/util.py +++ b/aleksis/apps/untis/util/mysql/util.py @@ -112,7 +112,7 @@ def untis_split_first( s: str, conv: Callable[[Any], Any] = lambda el: el, remove_empty: bool = True ) -> Sequence: return clean_array( - re.findall(r"(\"[^\"]+\"|[^,\"]+)*,?", s)[:-1], conv=conv, remove_empty=remove_empty + re.findall(r"((?:\"[^\"]+\"|[^,\"]+)*),?", s)[:-1], conv=conv, remove_empty=remove_empty )