skip empty days in weekly schedules
This commit is contained in:
parent
b33256c63e
commit
69899a3a3f
4 changed files with 31 additions and 17 deletions
|
|
@ -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"<i>Расписание на </i><b>{title}</b><i> {week_type} неделю</i>\n"
|
||||
for weekday in range(len(week.days)):
|
||||
week.weekDay = weekday
|
||||
output += generateDaySchedule(week, False) + "\n\n"
|
||||
output = (
|
||||
f"<i>Расписание на </i><b>{title}</b><i> {week_type} неделю</i>\n"
|
||||
f"{generateWeekSchedule(week)}"
|
||||
)
|
||||
inline.add(
|
||||
"Расписание на неделю 📅",
|
||||
f"{week_type.capitalize()} неделя",
|
||||
|
|
|
|||
|
|
@ -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'<i>Расписание на </i><b>следующую</b><i> {"четную" if s.weekNumber%2==0 else "нечетную"} неделю</i>\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:
|
||||
|
|
|
|||
|
|
@ -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"<i>{action.split()[0]} неделя</i>\n"
|
||||
for weekday in range(len(schedule.days)):
|
||||
schedule.weekDay = weekday
|
||||
result += generateDaySchedule(schedule, False) + "\n\n"
|
||||
return result.rstrip()
|
||||
return f"<i>{action.split()[0]} неделя</i>\n{generateWeekSchedule(schedule)}"
|
||||
return None
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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Пары закончатся в <i>{last_end[0]}:{last_end[1]:02d}</i>"
|
||||
|
||||
|
||||
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 "Пар на этой неделе нет 🥰"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue