diff --git a/bot/inline.py b/bot/inline.py
index 00a5ebc..4e23768 100644
--- a/bot/inline.py
+++ b/bot/inline.py
@@ -2,7 +2,7 @@ from telebot.types import InlineQuery
from models import logger
from models.bot import Inlines, bot
-from models.schedule import dayStrings, generateDaySchedule
+from models.schedule import dayStrings, generateDaySchedule, generateWeekSchedule
from models.user import validate
@@ -57,10 +57,10 @@ def default_query(query: InlineQuery):
week.weekNumber += 1
title = "следующую"
week_type = "четную" if week.weekNumber % 2 == 0 else "нечетную"
- output = f"Расписание на {title} {week_type} неделю\n"
- for weekday in range(len(week.days)):
- week.weekDay = weekday
- output += generateDaySchedule(week, False) + "\n\n"
+ output = (
+ f"Расписание на {title} {week_type} неделю\n"
+ f"{generateWeekSchedule(week)}"
+ )
inline.add(
"Расписание на неделю 📅",
f"{week_type.capitalize()} неделя",
diff --git a/bot/main/home.py b/bot/main/home.py
index 59cd737..1cfa40e 100644
--- a/bot/main/home.py
+++ b/bot/main/home.py
@@ -4,7 +4,7 @@ from telebot.util import quick_markup
from models.bot import bot, Markup, Strings, send, Receive, Default
from models.user import validate
-from models.schedule import generateDaySchedule, dayStrings
+from models.schedule import dayStrings, generateDaySchedule, generateWeekSchedule
from utils.calendar import ICS
@@ -84,11 +84,9 @@ def defaultState(message: Message):
s.weekDay = 0
s.weekNumber += 1
resultString = f'Расписание на следующую {"четную" if s.weekNumber%2==0 else "нечетную"} неделю\n'
-
- for index, _ in enumerate(s.days):
- s.weekDay = index
- resultString += generateDaySchedule(s, False) +'\n\n'
-
+
+ resultString += generateWeekSchedule(s)
+
return send(u.id, resultString, reply_markup = Markup.default(u))
case Strings.schedule_another_days:
diff --git a/bot/schedule/search.py b/bot/schedule/search.py
index 7724090..b1ef2f9 100644
--- a/bot/schedule/search.py
+++ b/bot/schedule/search.py
@@ -2,7 +2,13 @@ from telebot.types import Message
from models import logger
from models.bot import Markup, Strings, bot, send
-from models.schedule import ScheduleAPIError, ScheduleTarget, generateDaySchedule, search_targets
+from models.schedule import (
+ ScheduleAPIError,
+ ScheduleTarget,
+ generateDaySchedule,
+ generateWeekSchedule,
+ search_targets,
+)
from models.user import User, validate
@@ -63,11 +69,7 @@ def render_schedule_action(user: User, target: ScheduleTarget, text: str) -> str
return generateDaySchedule(schedule)
if action in (Strings.odd, Strings.even):
schedule.weekNumber = 2 if action == Strings.even else 1
- result = f"{action.split()[0]} неделя\n"
- for weekday in range(len(schedule.days)):
- schedule.weekDay = weekday
- result += generateDaySchedule(schedule, False) + "\n\n"
- return result.rstrip()
+ return f"{action.split()[0]} неделя\n{generateWeekSchedule(schedule)}"
return None
diff --git a/models/schedule.py b/models/schedule.py
index 636cc2f..f54273f 100644
--- a/models/schedule.py
+++ b/models/schedule.py
@@ -332,3 +332,17 @@ def generateDaySchedule(
result = header + "\n".join(lesson.text(isToday) for lesson in lessons)
last_end = max(lesson.end for lesson in lessons)
return result + f"\nПары закончатся в {last_end[0]}:{last_end[1]:02d}"
+
+
+def generateWeekSchedule(schedule: Schedule) -> str:
+ original_weekday = schedule.weekDay
+ days = []
+ try:
+ for weekday in range(len(schedule.days)):
+ schedule.weekDay = weekday
+ if schedule.today():
+ days.append(generateDaySchedule(schedule, False))
+ finally:
+ schedule.weekDay = original_weekday
+
+ return "\n\n".join(days) if days else "Пар на этой неделе нет 🥰"