From 595a5df8d72ed727a73e3013cd82f5d1da0affbf Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sat, 13 Aug 2022 00:01:20 +0200 Subject: [PATCH] Fix reg ex for parsing Untis first level data structure --- CHANGELOG.rst | 5 +++++ aleksis/apps/untis/tests/util/test_mysql_util.py | 12 ++++++++++-- aleksis/apps/untis/util/mysql/util.py | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 359632f..4088ff3 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_. Unreleased ---------- +Fixed +~~~~~ + +* Import failed sometimes if there were lessons with names. + `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 b9893df..9a43391 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/util.py b/aleksis/apps/untis/util/mysql/util.py index 063894f..439b54c 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 ) -- GitLab