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 import logger
|
||||||
from models.bot import Inlines, bot
|
from models.bot import Inlines, bot
|
||||||
from models.schedule import dayStrings, generateDaySchedule
|
from models.schedule import dayStrings, generateDaySchedule, generateWeekSchedule
|
||||||
from models.user import validate
|
from models.user import validate
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -57,10 +57,10 @@ def default_query(query: InlineQuery):
|
||||||
week.weekNumber += 1
|
week.weekNumber += 1
|
||||||
title = "следующую"
|
title = "следующую"
|
||||||
week_type = "четную" if week.weekNumber % 2 == 0 else "нечетную"
|
week_type = "четную" if week.weekNumber % 2 == 0 else "нечетную"
|
||||||
output = f"<i>Расписание на </i><b>{title}</b><i> {week_type} неделю</i>\n"
|
output = (
|
||||||
for weekday in range(len(week.days)):
|
f"<i>Расписание на </i><b>{title}</b><i> {week_type} неделю</i>\n"
|
||||||
week.weekDay = weekday
|
f"{generateWeekSchedule(week)}"
|
||||||
output += generateDaySchedule(week, False) + "\n\n"
|
)
|
||||||
inline.add(
|
inline.add(
|
||||||
"Расписание на неделю 📅",
|
"Расписание на неделю 📅",
|
||||||
f"{week_type.capitalize()} неделя",
|
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.bot import bot, Markup, Strings, send, Receive, Default
|
||||||
from models.user import validate
|
from models.user import validate
|
||||||
from models.schedule import generateDaySchedule, dayStrings
|
from models.schedule import dayStrings, generateDaySchedule, generateWeekSchedule
|
||||||
|
|
||||||
from utils.calendar import ICS
|
from utils.calendar import ICS
|
||||||
|
|
||||||
|
|
@ -84,11 +84,9 @@ def defaultState(message: Message):
|
||||||
s.weekDay = 0
|
s.weekDay = 0
|
||||||
s.weekNumber += 1
|
s.weekNumber += 1
|
||||||
resultString = f'<i>Расписание на </i><b>следующую</b><i> {"четную" if s.weekNumber%2==0 else "нечетную"} неделю</i>\n'
|
resultString = f'<i>Расписание на </i><b>следующую</b><i> {"четную" if s.weekNumber%2==0 else "нечетную"} неделю</i>\n'
|
||||||
|
|
||||||
for index, _ in enumerate(s.days):
|
resultString += generateWeekSchedule(s)
|
||||||
s.weekDay = index
|
|
||||||
resultString += generateDaySchedule(s, False) +'\n\n'
|
|
||||||
|
|
||||||
return send(u.id, resultString, reply_markup = Markup.default(u))
|
return send(u.id, resultString, reply_markup = Markup.default(u))
|
||||||
|
|
||||||
case Strings.schedule_another_days:
|
case Strings.schedule_another_days:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,13 @@ from telebot.types import Message
|
||||||
|
|
||||||
from models import logger
|
from models import logger
|
||||||
from models.bot import Markup, Strings, bot, send
|
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
|
from models.user import User, validate
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -63,11 +69,7 @@ def render_schedule_action(user: User, target: ScheduleTarget, text: str) -> str
|
||||||
return generateDaySchedule(schedule)
|
return generateDaySchedule(schedule)
|
||||||
if action in (Strings.odd, Strings.even):
|
if action in (Strings.odd, Strings.even):
|
||||||
schedule.weekNumber = 2 if action == Strings.even else 1
|
schedule.weekNumber = 2 if action == Strings.even else 1
|
||||||
result = f"<i>{action.split()[0]} неделя</i>\n"
|
return f"<i>{action.split()[0]} неделя</i>\n{generateWeekSchedule(schedule)}"
|
||||||
for weekday in range(len(schedule.days)):
|
|
||||||
schedule.weekDay = weekday
|
|
||||||
result += generateDaySchedule(schedule, False) + "\n\n"
|
|
||||||
return result.rstrip()
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -332,3 +332,17 @@ def generateDaySchedule(
|
||||||
result = header + "\n".join(lesson.text(isToday) for lesson in lessons)
|
result = header + "\n".join(lesson.text(isToday) for lesson in lessons)
|
||||||
last_end = max(lesson.end 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>"
|
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