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