From 69899a3a3f5727c0fc7292799efb7ac5008384b4 Mon Sep 17 00:00:00 2001 From: Server <10.9.8.204@example.com> Date: Sun, 30 Aug 2026 14:36:54 +0000 Subject: [PATCH] skip empty days in weekly schedules --- bot/inline.py | 10 +++++----- bot/main/home.py | 10 ++++------ bot/schedule/search.py | 14 ++++++++------ models/schedule.py | 14 ++++++++++++++ 4 files changed, 31 insertions(+), 17 deletions(-) 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 "Пар на этой неделе нет 🥰"