From 7e5939394de1e40064ccf364bcfabbbd117d5d32 Mon Sep 17 00:00:00 2001 From: DaShMore Date: Fri, 3 Oct 2025 14:45:26 +0300 Subject: [PATCH] README update --- README.md | 32 ++++++++++++------------ app/bot/dialogs/flows/events/dialogs.py | 15 ++++++++--- app/bot/dialogs/flows/events/getters.py | 18 ++++++++++--- app/bot/dialogs/flows/events/handlers.py | 3 +++ app/bot/dialogs/flows/start/dialogs.py | 4 +-- app/infrastructure/database/crud.py | 2 +- ui.md | 30 ---------------------- 7 files changed, 47 insertions(+), 57 deletions(-) delete mode 100644 ui.md diff --git a/README.md b/README.md index 823d545..22574ca 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,32 @@ -# Бот для записи на курсы и события от школы фасциопатии +# Бот для записи на курсы и мероприятия от школы фасциопатии ## Текущие возможности **Администраторы могут:** - [x] Редактировать свой профиль -- [x] Создавать события +- [x] Создавать мероприятия - (указав дату, время, название, описание) -- [ ] Редактировать события - - Редактировать отдельно любую из характеристик события -- [ ] Удалять события -- [x] Просматривать список существующих событий -- [ ] Просматривать людей записавшихся на событие +- [ ] Редактировать мероприятия + - Редактировать отдельно любую из характеристик мероприятия +- [ ] Удалять мероприятия +- [x] Просматривать список существующих мероприятий +- [ ] Просматривать людей записавшихся на мероприятие --- **Пользователи могут:** - [x] Редактировать свой профиль -- [x] Просматривать список событий -- [x] Просматривать информацию о событии -- [ ] Регистрироваться на событие -- [ ] Отменять регистрацию на событие +- [x] Просматривать список мероприятий +- [x] Просматривать информацию о мероприятии +- [ ] Регистрироваться на мероприятие +- [ ] Отменять регистрацию на мероприятие --- ## Планируемые возможности -- Прямая ссылка на событие извне бота +- Прямая ссылка на мероприятие извне бота - Подтверждение регистрации администратором -- Число записавшихся на событие пользователей у администратора -- Уведомление пользователям о изменении события, на которые они подписаны -- Значок о регистрации на событие в списке событий у пользователя -- Выгружать людей записавшихся на событие в виде Excel файла \ No newline at end of file +- Число записавшихся на мероприятие пользователей у администратора +- Уведомление пользователям о изменении мероприятия, на которые они подписаны +- Значок о регистрации на мероприятие в списке мероприятий у пользователя +- Выгружать людей записавшихся на мероприятие в виде Excel файла \ No newline at end of file diff --git a/app/bot/dialogs/flows/events/dialogs.py b/app/bot/dialogs/flows/events/dialogs.py index e4cfa15..47b1325 100644 --- a/app/bot/dialogs/flows/events/dialogs.py +++ b/app/bot/dialogs/flows/events/dialogs.py @@ -1,16 +1,16 @@ from aiogram_dialog import Dialog, Window -from aiogram_dialog.widgets.kbd import Back, Cancel, Column, Select -from aiogram_dialog.widgets.text import Const, Format, Jinja +from aiogram_dialog.widgets.kbd import Back, Button, Cancel, Column, Select +from aiogram_dialog.widgets.text import Case, Const, Format, Jinja from app.bot.dialogs.templates import event_template from .getters import event_getter, events_list_getter -from .handlers import on_event_selected +from .handlers import change_registration, on_event_selected from .states import EventsSG events_dialog = Dialog( Window( - Const("События"), + Const("Мероприятия"), Column( Cancel(Const("Назад")), Select( @@ -26,6 +26,13 @@ events_dialog = Dialog( ), Window( Jinja(event_template), + Button( + Case( + [Const("зарегистрироваться"), Const("отменить регистрацию")], + selector="is_registered_to_event", + ), + on_click=change_registration, + ), Back(Const("Назад")), getter=event_getter, parse_mode="HTML", diff --git a/app/bot/dialogs/flows/events/getters.py b/app/bot/dialogs/flows/events/getters.py index cac1516..8946bca 100644 --- a/app/bot/dialogs/flows/events/getters.py +++ b/app/bot/dialogs/flows/events/getters.py @@ -1,7 +1,11 @@ from aiogram.types import User from aiogram_dialog import DialogManager -from app.infrastructure.database.crud import get_event_by_id, get_events_list +from app.infrastructure.database.crud import ( + get_event_by_id, + get_events_list, +) +from app.infrastructure.database.models import Event async def events_list_getter( @@ -11,12 +15,18 @@ async def events_list_getter( return {"events": [{"title": event.title, "id": event.id} for event in events]} -async def event_getter( - dialog_manager: DialogManager, **kwargs -) -> dict[str, str]: +async def event_getter(dialog_manager: DialogManager, **kwargs) -> dict[str, Event]: return { "event_obj": await get_event_by_id( dialog_manager.middleware_data["session"], int(dialog_manager.dialog_data["selected_event"]), ) } + + +async def registraion_getter(dialog_manager: DialogManager, **kwargs): + user = dialog_manager.middleware_data["user"] + event_id = dialog_manager.dialog_data["selected_event"] + return { + "is_registered_to_event": any(ue.event_id == event_id for ue in user.events) + } diff --git a/app/bot/dialogs/flows/events/handlers.py b/app/bot/dialogs/flows/events/handlers.py index 7d78bd1..b0ed01e 100644 --- a/app/bot/dialogs/flows/events/handlers.py +++ b/app/bot/dialogs/flows/events/handlers.py @@ -11,3 +11,6 @@ async def on_event_selected( ): manager.dialog_data["selected_event"] = item_id await manager.next() + +async def change_registration(): + ... \ No newline at end of file diff --git a/app/bot/dialogs/flows/start/dialogs.py b/app/bot/dialogs/flows/start/dialogs.py index ada6ca1..3abf0fe 100644 --- a/app/bot/dialogs/flows/start/dialogs.py +++ b/app/bot/dialogs/flows/start/dialogs.py @@ -12,9 +12,9 @@ from .states import StartSG start_dialog = Dialog( Window( Format("Привет, {user.fullname}"), - Start(Const("📃 события"), id="events", state=EventsSG.events_list), + Start(Const("📃 мероприятия"), id="events", state=EventsSG.events_list), Start( - Const("✏️ создать событие"), + Const("✏️ создать мероприятие"), id="create_event", state=NewEventSG.input_title, when="is_admin", diff --git a/app/infrastructure/database/crud.py b/app/infrastructure/database/crud.py index a65cbcf..6afa71e 100644 --- a/app/infrastructure/database/crud.py +++ b/app/infrastructure/database/crud.py @@ -94,4 +94,4 @@ async def update_event( if end_date: event.end_date = end_date await session.commit() - return event \ No newline at end of file + return event diff --git a/ui.md b/ui.md deleted file mode 100644 index 487d471..0000000 --- a/ui.md +++ /dev/null @@ -1,30 +0,0 @@ - Пользователь -### Приветствие -Здрвствуйте, {Username}\ -Вот текущие события - -- ✅ Видим руками уровень 1 -- Видим руками уровень 2 -- Видим руками уровень 3 - ---- -### Информация о событии - -**Видим руками уровень 1** -На этом курсе вы научитесь... - -[Вы записаны] / [Вы не записаны] -- Записаться -- Отменить запись -- Назад ---- -## Регистарация в системе - -### Регистрация шаг 1/2 -- Укажите свой номер телефона - -### Регистрация шаг 2/2 -- Укажите свое ФИО - -## Редактировать профиль -// Запускаем регистрацию заново \ No newline at end of file