import datetime import logging from requests import get import settings from helpers import User fields = [ 'discipline', 'building', 'auditorium', 'date', 'beginLesson', 'endLesson', 'lecturer', 'url1' ] class RUZ: def find_person(self, user: User) -> dict | None: if user.is_teacher: person_type = "person" else: person_type = "student" search_str = settings.RUZ_API + f"search?term={user.name}&type={person_type}" try: data = get(search_str) except: return None if data.status_code == 200: data = data.json() for index, value in enumerate(data): data[index]['description'] = value['description'].capitalize() return data return None def get_schedule(self, user: User, begin_date: datetime.datetime, end_date: datetime.datetime): start_date_str = begin_date.strftime("%Y.%m.%d") end_date_str = end_date.strftime("%Y.%m.%d") if user.is_teacher: person_type = "person" else: person_type = "student" search_str = settings.RUZ_API + f"schedule/{person_type}/{user.hse_id}?start={start_date_str}&finish={end_date_str}&lng=1" try: data = get(search_str) except: return None if data.status_code != 200: return None try: data = data.json() except: logging.info("Json ignored, data content is") logging.info(data.content) return None formatted_data = [ { field: element[field] for field in fields } for element in data ] return formatted_data def schedule_builder(self, lessons: list[dict]) -> str: ans = "" last_date = None for lesson in lessons: date = lesson['begin'].strftime('%d.%m') if date != last_date: if last_date is not None: ans += "=======================\n\n" last_date = date ans += f"πŸ“… *{date}*\n\n" ans += f"πŸ“š {lesson['discipline']}\n" ans += f"🏒 {lesson['building']}, {lesson['auditorium']}\n" ans += f"πŸ•‘ {lesson['begin'].strftime('%H:%M')} - {lesson['end'].strftime('%H:%M')}\n" ans += f"πŸ‘¨β€πŸ« {(lesson['lecturer'] or 'НСизвСстно')}\n" if lesson.get('link', None): ans += f"πŸ”— {lesson['link']}\n" ans += "\n" return ans ruz = RUZ()