From c09f1d88f9186a4ce2c82865f2b62f9d6e392d0b Mon Sep 17 00:00:00 2001 From: Timur Enikeev <163281083+DaymasS@users.noreply.github.com> Date: Thu, 14 Nov 2024 16:09:12 -0500 Subject: [PATCH] Fix get name and group from lk.msu (#219) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Изменения Починен парсер имён пользователей из ЛК МГУ и парсер групп для студентов магистратуры ## Детали реализации Теперь поиск группы происходит с конца. Парсится первая встреченная с конца группа физфака ## Check-List - [x] Вы проверили свой код перед отправкой запроса? - [x] Вы написали тесты к реализованным функциям? - [x] Вы не забыли применить форматирование `black` и `isort` для _Back-End_ или `Prettier` для _Front-End_? --- auth_backend/auth_plugins/lkmsu.py | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/auth_backend/auth_plugins/lkmsu.py b/auth_backend/auth_plugins/lkmsu.py index b9cac630..82c14266 100644 --- a/auth_backend/auth_plugins/lkmsu.py +++ b/auth_backend/auth_plugins/lkmsu.py @@ -180,12 +180,12 @@ async def _auth_url(cls): def get_student(cls, data: dict[str, Any]) -> list[dict[str | Any]]: student: dict[str, Any] = data.get("student", {}) first_name, last_name, middle_name = '', '', '' - if 'first_name' in data.keys() and data['first_name'] is not None: - first_name = data['first_name'] - if 'last_name' in data.keys() and data['last_name'] is not None: - last_name = data['last_name'] - if 'middle_name' in data.keys() and data['middle_name'] is not None: - middle_name = data['middle_name'] + if 'first_name' in student.keys() and student['first_name'] is not None: + first_name = student['first_name'] + if 'last_name' in student.keys() and student['last_name'] is not None: + last_name = student['last_name'] + if 'middle_name' in student.keys() and student['middle_name'] is not None: + middle_name = student['middle_name'] full_name = concantenate_strings([first_name, last_name, middle_name]) if not full_name: full_name = None @@ -197,14 +197,8 @@ def get_student(cls, data: dict[str, Any]) -> list[dict[str | Any]]: @classmethod def get_entrants(cls, data: dict[str, Any]) -> list[dict[str, Any]]: student: dict[str, Any] = data.get("student", {}) - faculties_names = [] - for entrant in student.get('entrants'): - faculties_names.append(entrant.get('faculty', {}).get("name")) - for entrant in student.get('entrants'): - if ( - cls.settings.LKMSU_FACULTY_NAME in faculties_names - and entrant.get('faculty', {}).get("name") != cls.settings.LKMSU_FACULTY_NAME - ): + for entrant in reversed(student.get('entrants', [])): + if entrant.get('faculty', {}).get("name") != cls.settings.LKMSU_FACULTY_NAME: continue if not (group := entrant.get("groups")): group = [{}] @@ -231,8 +225,6 @@ def get_entrants(cls, data: dict[str, Any]) -> list[dict[str, Any]]: "value": group[0].get("name"), }, ] - if cls.settings.LKMSU_FACULTY_NAME not in faculties_names: - break return items @classmethod