sfx-tg-bot/keyboards/keyboards.py

173 строки
3.7 KiB
Python
Исходник Обычный вид История

2024-07-26 03:30:01 +03:00
import database
from models import date, ReplyKeyboardMarkup, KeyboardButton, Category, FreeToOrder, Order, Issue
def start():
return ReplyKeyboardMarkup([
[
KeyboardButton('Записаться'),
],
[
KeyboardButton('Мои обращения'),
],
])
async def categories():
keyboard = ReplyKeyboardMarkup()
for category in await database.read_categories():
keyboard.add(
KeyboardButton(category.name),
)
keyboard.add(
KeyboardButton('Назад'),
)
return keyboard
async def subcategories(category: Category):
keyboard = ReplyKeyboardMarkup()
for subcategory in await database.read_subcategories(category):
keyboard.add(
KeyboardButton(subcategory.name),
)
keyboard.add(
KeyboardButton('Назад'),
)
return keyboard
def dates(free_to_order: tuple[FreeToOrder]):
_dates = tuple(
sorted(
set(
item.date
for item in free_to_order
)
)
)
keyboard = ReplyKeyboardMarkup()
for _date in _dates:
keyboard.insert(_date.strftime('%d.%m'))
keyboard.add(
KeyboardButton('Назад'),
)
return keyboard
def time_ranges(free_to_order: tuple[FreeToOrder], _date: date):
_time_ranges = tuple(
sorted(
set(
item.time_range
for item in free_to_order
if item.date == _date
),
key=lambda x: x.id,
)
)
keyboard = ReplyKeyboardMarkup()
for time_range in _time_ranges:
keyboard.insert('%s - %s' % (
time_range.start_time.strftime('%H:%M'),
time_range.end_time.strftime('%H:%M'),
))
keyboard.add(
KeyboardButton('Назад'),
)
return keyboard
def back():
return ReplyKeyboardMarkup(
keyboard=[
[
KeyboardButton('Назад'),
],
],
)
def order_confirmation():
return ReplyKeyboardMarkup(
keyboard=[
[
KeyboardButton('Подтвердить'),
],
[
KeyboardButton('Назад'),
],
],
)
def main_menu():
return ReplyKeyboardMarkup(
keyboard=[
[
KeyboardButton('Главное меню'),
],
],
)
def orders(_orders: tuple[Order]):
keyboard = ReplyKeyboardMarkup()
for order in _orders:
keyboard.insert(
KeyboardButton('%d' % order.id),
)
keyboard.add(
KeyboardButton('Назад'),
)
return keyboard
def operations():
return ReplyKeyboardMarkup(
keyboard=[
[
# KeyboardButton('Перенести'),
KeyboardButton('Отменить'),
],
[
KeyboardButton('Назад'),
],
],
)
def cancel_order():
return ReplyKeyboardMarkup(
keyboard=[
[
KeyboardButton('Отменить заказ'),
],
[
KeyboardButton('Назад'),
],
],
)
def my_orders():
return ReplyKeyboardMarkup(
keyboard=[
[
KeyboardButton('Мои обращения'),
],
],
)
def issues(_issues: tuple[Issue]):
keyboard = ReplyKeyboardMarkup()
for issue in _issues:
keyboard.insert(
KeyboardButton('%s' % issue.key),
)
keyboard.add(
KeyboardButton('Назад'),
)
return keyboard