diff --git a/alembic/env.py b/alembic/env.py index 17ad9ee..377de3b 100644 --- a/alembic/env.py +++ b/alembic/env.py @@ -5,8 +5,8 @@ from sqlalchemy import Connection from sqlalchemy.ext.asyncio import create_async_engine from alembic import context -from trudex.infrastructure.database.models import Base -from trudex.infrastructure.utils.config import Config +from quizzi.infrastructure.database.models import Base +from quizzi.infrastructure.utils.config import Config # this is the Alembic Config object, which provides # access to the values within the .ini file in use. diff --git a/pyproject.toml b/pyproject.toml index f0b1136..eb586b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "trudex" +name = "quizzi" version = "0.1.0" description = "Occupational health and safety testing platform" authors = [{ name = "kolo", email = "kolo.is.main@gmail.com" }] diff --git a/src/trudex/__init__.py b/src/quizzi/__init__.py similarity index 100% rename from src/trudex/__init__.py rename to src/quizzi/__init__.py diff --git a/src/trudex/application/__init__.py b/src/quizzi/application/__init__.py similarity index 100% rename from src/trudex/application/__init__.py rename to src/quizzi/application/__init__.py diff --git a/src/trudex/application/__main__.py b/src/quizzi/application/__main__.py similarity index 65% rename from src/trudex/application/__main__.py rename to src/quizzi/application/__main__.py index 730d3a2..52df068 100644 --- a/src/trudex/application/__main__.py +++ b/src/quizzi/application/__main__.py @@ -9,26 +9,26 @@ from apscheduler.schedulers.asyncio import AsyncIOScheduler from dishka import make_async_container from dishka.integrations.aiogram import setup_dishka -from trudex.application.bot.admin_dialogs.main_menu import admin_menu_dialog -from trudex.application.bot.admin_dialogs.users import admin_users_dialog -from trudex.application.bot.creator_dialogs.main_menu import creator_menu_dialog -from trudex.application.bot.creator_dialogs.users import creator_users_dialog -from trudex.application.bot.handlers import router -from trudex.application.bot.middlewares.reject_not_admin import RejectNotAdminMiddleware -from trudex.application.bot.middlewares.reject_not_creator import RejectNotCreatorMiddleware -from trudex.application.bot.shared_dialogs.broadcast import shared_broadcast_dialog -from trudex.application.bot.shared_dialogs.create_test import shared_create_test_dialog -from trudex.application.bot.shared_dialogs.groups import shared_groups_dialog -from trudex.application.bot.shared_dialogs.templates import shared_templates_dialog -from trudex.application.bot.shared_dialogs.tests import shared_tests_dialog -from trudex.application.bot.user_dialogs.deeplink import deeplink_dialog -from trudex.application.bot.user_dialogs.main_menu import user_menu_dialog -from trudex.application.bot.user_dialogs.registration import registration_dialog -from trudex.application.bot.user_dialogs.take_test import take_test_dialog -from trudex.infrastructure.database.repo.user import UserRepository -from trudex.infrastructure.di import DatabaseProvider, SchedulerProvider -from trudex.infrastructure.utils.bot_commands import setup_bot_commands -from trudex.infrastructure.utils.config import Config +from quizzi.application.bot.admin_dialogs.main_menu import admin_menu_dialog +from quizzi.application.bot.admin_dialogs.users import admin_users_dialog +from quizzi.application.bot.creator_dialogs.main_menu import creator_menu_dialog +from quizzi.application.bot.creator_dialogs.users import creator_users_dialog +from quizzi.application.bot.handlers import router +from quizzi.application.bot.middlewares.reject_not_admin import RejectNotAdminMiddleware +from quizzi.application.bot.middlewares.reject_not_creator import RejectNotCreatorMiddleware +from quizzi.application.bot.shared_dialogs.broadcast import shared_broadcast_dialog +from quizzi.application.bot.shared_dialogs.create_test import shared_create_test_dialog +from quizzi.application.bot.shared_dialogs.groups import shared_groups_dialog +from quizzi.application.bot.shared_dialogs.templates import shared_templates_dialog +from quizzi.application.bot.shared_dialogs.tests import shared_tests_dialog +from quizzi.application.bot.user_dialogs.deeplink import deeplink_dialog +from quizzi.application.bot.user_dialogs.main_menu import user_menu_dialog +from quizzi.application.bot.user_dialogs.registration import registration_dialog +from quizzi.application.bot.user_dialogs.take_test import take_test_dialog +from quizzi.infrastructure.database.repo.user import UserRepository +from quizzi.infrastructure.di import DatabaseProvider, SchedulerProvider +from quizzi.infrastructure.utils.bot_commands import setup_bot_commands +from quizzi.infrastructure.utils.config import Config async def main() -> None: diff --git a/src/trudex/application/bot/__init__.py b/src/quizzi/application/bot/__init__.py similarity index 100% rename from src/trudex/application/bot/__init__.py rename to src/quizzi/application/bot/__init__.py diff --git a/src/trudex/application/bot/admin_dialogs/__init__.py b/src/quizzi/application/bot/admin_dialogs/__init__.py similarity index 100% rename from src/trudex/application/bot/admin_dialogs/__init__.py rename to src/quizzi/application/bot/admin_dialogs/__init__.py diff --git a/src/trudex/application/bot/admin_dialogs/main_menu.py b/src/quizzi/application/bot/admin_dialogs/main_menu.py similarity index 93% rename from src/trudex/application/bot/admin_dialogs/main_menu.py rename to src/quizzi/application/bot/admin_dialogs/main_menu.py index 52f5ee5..a0d1cb8 100644 --- a/src/trudex/application/bot/admin_dialogs/main_menu.py +++ b/src/quizzi/application/bot/admin_dialogs/main_menu.py @@ -3,8 +3,8 @@ from aiogram_dialog import Dialog, DialogManager, Window from aiogram_dialog.widgets.kbd import Button, Column from aiogram_dialog.widgets.text import Const -from trudex.application.bot.admin_dialogs.states import AdminMenuSG, AdminUsersSG -from trudex.application.bot.shared_dialogs.states import ( +from quizzi.application.bot.admin_dialogs.states import AdminMenuSG, AdminUsersSG +from quizzi.application.bot.shared_dialogs.states import ( SharedBroadcastSG, SharedGroupsSG, SharedTemplatesSG, diff --git a/src/trudex/application/bot/admin_dialogs/states.py b/src/quizzi/application/bot/admin_dialogs/states.py similarity index 100% rename from src/trudex/application/bot/admin_dialogs/states.py rename to src/quizzi/application/bot/admin_dialogs/states.py diff --git a/src/trudex/application/bot/admin_dialogs/users.py b/src/quizzi/application/bot/admin_dialogs/users.py similarity index 96% rename from src/trudex/application/bot/admin_dialogs/users.py rename to src/quizzi/application/bot/admin_dialogs/users.py index 3ea52bc..7616cf3 100644 --- a/src/trudex/application/bot/admin_dialogs/users.py +++ b/src/quizzi/application/bot/admin_dialogs/users.py @@ -6,11 +6,11 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.admin_dialogs.states import AdminUsersSG -from trudex.infrastructure.database.dao.user import UserDAO -from trudex.infrastructure.database.repo.test import TestRepository -from trudex.infrastructure.database.repo.test_attempt import TestAttemptRepository -from trudex.infrastructure.utils.timezone import to_msk +from quizzi.application.bot.admin_dialogs.states import AdminUsersSG +from quizzi.infrastructure.database.dao.user import UserDAO +from quizzi.infrastructure.database.repo.test import TestRepository +from quizzi.infrastructure.database.repo.test_attempt import TestAttemptRepository +from quizzi.infrastructure.utils.timezone import to_msk @inject diff --git a/src/trudex/application/bot/creator_dialogs/__init__.py b/src/quizzi/application/bot/creator_dialogs/__init__.py similarity index 100% rename from src/trudex/application/bot/creator_dialogs/__init__.py rename to src/quizzi/application/bot/creator_dialogs/__init__.py diff --git a/src/trudex/application/bot/creator_dialogs/main_menu.py b/src/quizzi/application/bot/creator_dialogs/main_menu.py similarity index 93% rename from src/trudex/application/bot/creator_dialogs/main_menu.py rename to src/quizzi/application/bot/creator_dialogs/main_menu.py index d11cdae..941ff84 100644 --- a/src/trudex/application/bot/creator_dialogs/main_menu.py +++ b/src/quizzi/application/bot/creator_dialogs/main_menu.py @@ -3,8 +3,8 @@ from aiogram_dialog import Dialog, DialogManager, Window from aiogram_dialog.widgets.kbd import Button, Column from aiogram_dialog.widgets.text import Const -from trudex.application.bot.creator_dialogs.states import CreatorMenuSG, CreatorUsersSG -from trudex.application.bot.shared_dialogs.states import ( +from quizzi.application.bot.creator_dialogs.states import CreatorMenuSG, CreatorUsersSG +from quizzi.application.bot.shared_dialogs.states import ( SharedBroadcastSG, SharedGroupsSG, SharedTemplatesSG, diff --git a/src/trudex/application/bot/creator_dialogs/states.py b/src/quizzi/application/bot/creator_dialogs/states.py similarity index 100% rename from src/trudex/application/bot/creator_dialogs/states.py rename to src/quizzi/application/bot/creator_dialogs/states.py diff --git a/src/trudex/application/bot/creator_dialogs/users.py b/src/quizzi/application/bot/creator_dialogs/users.py similarity index 96% rename from src/trudex/application/bot/creator_dialogs/users.py rename to src/quizzi/application/bot/creator_dialogs/users.py index 7e493bd..e147d0b 100644 --- a/src/trudex/application/bot/creator_dialogs/users.py +++ b/src/quizzi/application/bot/creator_dialogs/users.py @@ -9,14 +9,14 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.creator_dialogs.states import CreatorUsersSG -from trudex.infrastructure.database.dao.user import UserDAO -from trudex.infrastructure.database.repo.test import TestRepository -from trudex.infrastructure.database.repo.test_attempt import TestAttemptRepository -from trudex.infrastructure.database.repo.user import UserRepository -from trudex.infrastructure.utils.bot_commands import setup_bot_commands -from trudex.infrastructure.utils.config import Config -from trudex.infrastructure.utils.timezone import to_msk +from quizzi.application.bot.creator_dialogs.states import CreatorUsersSG +from quizzi.infrastructure.database.dao.user import UserDAO +from quizzi.infrastructure.database.repo.test import TestRepository +from quizzi.infrastructure.database.repo.test_attempt import TestAttemptRepository +from quizzi.infrastructure.database.repo.user import UserRepository +from quizzi.infrastructure.utils.bot_commands import setup_bot_commands +from quizzi.infrastructure.utils.config import Config +from quizzi.infrastructure.utils.timezone import to_msk @inject diff --git a/src/trudex/application/bot/handlers.py b/src/quizzi/application/bot/handlers.py similarity index 92% rename from src/trudex/application/bot/handlers.py rename to src/quizzi/application/bot/handlers.py index 2b4d54f..59344ed 100644 --- a/src/trudex/application/bot/handlers.py +++ b/src/quizzi/application/bot/handlers.py @@ -7,15 +7,15 @@ from aiogram_dialog import DialogManager, StartMode from aiogram_dialog.api.exceptions import OutdatedIntent, UnknownIntent from dishka.integrations.aiogram import FromDishka -from trudex.application.bot.admin_dialogs.states import AdminMenuSG -from trudex.application.bot.creator_dialogs.states import CreatorMenuSG -from trudex.application.bot.user_dialogs.states import UserDeeplinkSG, UserMenuSG, UserRegistrationSG -from trudex.infrastructure.database.dao.group import GroupDAO -from trudex.infrastructure.database.dao.test import TestDAO -from trudex.infrastructure.database.dao.user import UserDAO -from trudex.infrastructure.utils.config import Config -from trudex.infrastructure.utils.test_id_to_hash import decode_id -from trudex.infrastructure.utils.timezone import now_msk_naive +from quizzi.application.bot.admin_dialogs.states import AdminMenuSG +from quizzi.application.bot.creator_dialogs.states import CreatorMenuSG +from quizzi.application.bot.user_dialogs.states import UserDeeplinkSG, UserMenuSG, UserRegistrationSG +from quizzi.infrastructure.database.dao.group import GroupDAO +from quizzi.infrastructure.database.dao.test import TestDAO +from quizzi.infrastructure.database.dao.user import UserDAO +from quizzi.infrastructure.utils.config import Config +from quizzi.infrastructure.utils.test_id_to_hash import decode_id +from quizzi.infrastructure.utils.timezone import now_msk_naive router = Router() logger = logging.getLogger(__name__) diff --git a/src/trudex/application/bot/middlewares/__init__.py b/src/quizzi/application/bot/middlewares/__init__.py similarity index 100% rename from src/trudex/application/bot/middlewares/__init__.py rename to src/quizzi/application/bot/middlewares/__init__.py diff --git a/src/trudex/application/bot/middlewares/reject_not_admin.py b/src/quizzi/application/bot/middlewares/reject_not_admin.py similarity index 91% rename from src/trudex/application/bot/middlewares/reject_not_admin.py rename to src/quizzi/application/bot/middlewares/reject_not_admin.py index a9d7f90..cc9354d 100644 --- a/src/trudex/application/bot/middlewares/reject_not_admin.py +++ b/src/quizzi/application/bot/middlewares/reject_not_admin.py @@ -5,8 +5,8 @@ from aiogram import BaseMiddleware from aiogram.types import Message, TelegramObject from dishka import AsyncContainer -from trudex.infrastructure.database.repo import UserRepository -from trudex.infrastructure.utils.config import Config +from quizzi.infrastructure.database.repo import UserRepository +from quizzi.infrastructure.utils.config import Config class RejectNotAdminMiddleware(BaseMiddleware): diff --git a/src/trudex/application/bot/middlewares/reject_not_creator.py b/src/quizzi/application/bot/middlewares/reject_not_creator.py similarity index 95% rename from src/trudex/application/bot/middlewares/reject_not_creator.py rename to src/quizzi/application/bot/middlewares/reject_not_creator.py index 86aadab..d343b83 100644 --- a/src/trudex/application/bot/middlewares/reject_not_creator.py +++ b/src/quizzi/application/bot/middlewares/reject_not_creator.py @@ -5,7 +5,7 @@ from aiogram import BaseMiddleware from aiogram.types import Message, TelegramObject from dishka import AsyncContainer -from trudex.infrastructure.utils.config import Config +from quizzi.infrastructure.utils.config import Config class RejectNotCreatorMiddleware(BaseMiddleware): diff --git a/src/trudex/application/bot/shared_dialogs/__init__.py b/src/quizzi/application/bot/shared_dialogs/__init__.py similarity index 100% rename from src/trudex/application/bot/shared_dialogs/__init__.py rename to src/quizzi/application/bot/shared_dialogs/__init__.py diff --git a/src/trudex/application/bot/shared_dialogs/broadcast.py b/src/quizzi/application/bot/shared_dialogs/broadcast.py similarity index 93% rename from src/trudex/application/bot/shared_dialogs/broadcast.py rename to src/quizzi/application/bot/shared_dialogs/broadcast.py index 2940f82..17006f0 100644 --- a/src/trudex/application/bot/shared_dialogs/broadcast.py +++ b/src/quizzi/application/bot/shared_dialogs/broadcast.py @@ -6,9 +6,9 @@ from aiogram_dialog.widgets.text import Const from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.shared_dialogs.states import SharedBroadcastSG -from trudex.infrastructure.database.dao.user import UserDAO -from trudex.infrastructure.utils.broadcast import broadcast_message +from quizzi.application.bot.shared_dialogs.states import SharedBroadcastSG +from quizzi.infrastructure.database.dao.user import UserDAO +from quizzi.infrastructure.utils.broadcast import broadcast_message async def on_broadcast_input(message: Message, _widget: MessageInput, manager: DialogManager): diff --git a/src/trudex/application/bot/shared_dialogs/create_test.py b/src/quizzi/application/bot/shared_dialogs/create_test.py similarity index 98% rename from src/trudex/application/bot/shared_dialogs/create_test.py rename to src/quizzi/application/bot/shared_dialogs/create_test.py index c91a134..268030f 100644 --- a/src/trudex/application/bot/shared_dialogs/create_test.py +++ b/src/quizzi/application/bot/shared_dialogs/create_test.py @@ -8,13 +8,13 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.shared_dialogs.states import SharedCreateTestSG, SharedTestsSG -from trudex.infrastructure.database.dao.group import GroupDAO -from trudex.infrastructure.database.dao.option import OptionDAO -from trudex.infrastructure.database.dao.question import QuestionDAO -from trudex.infrastructure.database.dao.test import TestDAO -from trudex.infrastructure.database.repo.test import TestRepository -from trudex.infrastructure.utils.timezone import to_msk +from quizzi.application.bot.shared_dialogs.states import SharedCreateTestSG, SharedTestsSG +from quizzi.infrastructure.database.dao.group import GroupDAO +from quizzi.infrastructure.database.dao.option import OptionDAO +from quizzi.infrastructure.database.dao.question import QuestionDAO +from quizzi.infrastructure.database.dao.test import TestDAO +from quizzi.infrastructure.database.repo.test import TestRepository +from quizzi.infrastructure.utils.timezone import to_msk async def on_title_input(message: Message, _widget: MessageInput, manager: DialogManager): diff --git a/src/trudex/application/bot/shared_dialogs/groups.py b/src/quizzi/application/bot/shared_dialogs/groups.py similarity index 98% rename from src/trudex/application/bot/shared_dialogs/groups.py rename to src/quizzi/application/bot/shared_dialogs/groups.py index dac8871..159cada 100644 --- a/src/trudex/application/bot/shared_dialogs/groups.py +++ b/src/quizzi/application/bot/shared_dialogs/groups.py @@ -6,8 +6,8 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.shared_dialogs.states import SharedGroupsSG -from trudex.infrastructure.database.dao.group import GroupDAO +from quizzi.application.bot.shared_dialogs.states import SharedGroupsSG +from quizzi.infrastructure.database.dao.group import GroupDAO async def on_group_click(_callback: CallbackQuery, _widget, _manager: DialogManager, _item_id: str): diff --git a/src/trudex/application/bot/shared_dialogs/states.py b/src/quizzi/application/bot/shared_dialogs/states.py similarity index 100% rename from src/trudex/application/bot/shared_dialogs/states.py rename to src/quizzi/application/bot/shared_dialogs/states.py diff --git a/src/trudex/application/bot/shared_dialogs/templates.py b/src/quizzi/application/bot/shared_dialogs/templates.py similarity index 97% rename from src/trudex/application/bot/shared_dialogs/templates.py rename to src/quizzi/application/bot/shared_dialogs/templates.py index 5ac977c..2be5ec3 100644 --- a/src/trudex/application/bot/shared_dialogs/templates.py +++ b/src/quizzi/application/bot/shared_dialogs/templates.py @@ -10,14 +10,14 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.shared_dialogs.states import SharedTemplatesSG, SharedTestsSG -from trudex.domain.schemas import QuestionType -from trudex.domain.test_parser import ParsedTest, TestParser -from trudex.infrastructure.database.dao.group import GroupDAO -from trudex.infrastructure.database.dao.option import OptionDAO -from trudex.infrastructure.database.dao.question import QuestionDAO -from trudex.infrastructure.database.dao.test import TestDAO -from trudex.infrastructure.database.repo.test import TestRepository +from quizzi.application.bot.shared_dialogs.states import SharedTemplatesSG, SharedTestsSG +from quizzi.domain.schemas import QuestionType +from quizzi.domain.test_parser import ParsedTest, TestParser +from quizzi.infrastructure.database.dao.group import GroupDAO +from quizzi.infrastructure.database.dao.option import OptionDAO +from quizzi.infrastructure.database.dao.question import QuestionDAO +from quizzi.infrastructure.database.dao.test import TestDAO +from quizzi.infrastructure.database.repo.test import TestRepository TEMPLATES_INFO = ( diff --git a/src/trudex/application/bot/shared_dialogs/tests.py b/src/quizzi/application/bot/shared_dialogs/tests.py similarity index 97% rename from src/trudex/application/bot/shared_dialogs/tests.py rename to src/quizzi/application/bot/shared_dialogs/tests.py index 8b689d1..93a45ca 100644 --- a/src/trudex/application/bot/shared_dialogs/tests.py +++ b/src/quizzi/application/bot/shared_dialogs/tests.py @@ -12,16 +12,16 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.shared_dialogs.states import SharedCreateTestSG, SharedTestsSG -from trudex.domain.schemas import QuestionType -from trudex.infrastructure.database.dao.group import GroupDAO -from trudex.infrastructure.database.dao.test import TestDAO -from trudex.infrastructure.database.repo.test import TestRepository -from trudex.infrastructure.database.repo.test_attempt import TestAttemptRepository -from trudex.infrastructure.utils.config import Config -from trudex.infrastructure.utils.qr_generator import generate_qr_bytes -from trudex.infrastructure.utils.test_id_to_hash import encode_id -from trudex.infrastructure.utils.timezone import to_msk +from quizzi.application.bot.shared_dialogs.states import SharedCreateTestSG, SharedTestsSG +from quizzi.domain.schemas import QuestionType +from quizzi.infrastructure.database.dao.group import GroupDAO +from quizzi.infrastructure.database.dao.test import TestDAO +from quizzi.infrastructure.database.repo.test import TestRepository +from quizzi.infrastructure.database.repo.test_attempt import TestAttemptRepository +from quizzi.infrastructure.utils.config import Config +from quizzi.infrastructure.utils.qr_generator import generate_qr_bytes +from quizzi.infrastructure.utils.test_id_to_hash import encode_id +from quizzi.infrastructure.utils.timezone import to_msk @inject diff --git a/src/trudex/application/bot/user_dialogs/__init__.py b/src/quizzi/application/bot/user_dialogs/__init__.py similarity index 100% rename from src/trudex/application/bot/user_dialogs/__init__.py rename to src/quizzi/application/bot/user_dialogs/__init__.py diff --git a/src/trudex/application/bot/user_dialogs/deeplink.py b/src/quizzi/application/bot/user_dialogs/deeplink.py similarity index 94% rename from src/trudex/application/bot/user_dialogs/deeplink.py rename to src/quizzi/application/bot/user_dialogs/deeplink.py index 8f24726..74dcb61 100644 --- a/src/trudex/application/bot/user_dialogs/deeplink.py +++ b/src/quizzi/application/bot/user_dialogs/deeplink.py @@ -6,12 +6,12 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.user_dialogs.states import UserDeeplinkSG, UserMenuSG, UserTestSG -from trudex.infrastructure.database.dao.test import TestDAO -from trudex.infrastructure.database.models import QuestionType -from trudex.infrastructure.database.repo.test import TestRepository -from trudex.infrastructure.database.repo.test_attempt import TestAttemptRepository -from trudex.infrastructure.utils.rate_limiter import PasswordRateLimiter +from quizzi.application.bot.user_dialogs.states import UserDeeplinkSG, UserMenuSG, UserTestSG +from quizzi.infrastructure.database.dao.test import TestDAO +from quizzi.infrastructure.database.models import QuestionType +from quizzi.infrastructure.database.repo.test import TestRepository +from quizzi.infrastructure.database.repo.test_attempt import TestAttemptRepository +from quizzi.infrastructure.utils.rate_limiter import PasswordRateLimiter @inject diff --git a/src/trudex/application/bot/user_dialogs/main_menu.py b/src/quizzi/application/bot/user_dialogs/main_menu.py similarity index 96% rename from src/trudex/application/bot/user_dialogs/main_menu.py rename to src/quizzi/application/bot/user_dialogs/main_menu.py index 1460415..08de0fb 100644 --- a/src/trudex/application/bot/user_dialogs/main_menu.py +++ b/src/quizzi/application/bot/user_dialogs/main_menu.py @@ -11,16 +11,16 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.user_dialogs.states import UserMenuSG -from trudex.application.bot.user_dialogs.take_test import on_start_test -from trudex.infrastructure.database.dao.group import GroupDAO -from trudex.infrastructure.database.dao.user import UserDAO -from trudex.infrastructure.database.repo.test import TestRepository -from trudex.infrastructure.database.repo.test_attempt import TestAttemptRepository -from trudex.infrastructure.utils.config import Config -from trudex.infrastructure.utils.qr_generator import generate_qr_bytes -from trudex.infrastructure.utils.test_id_to_hash import encode_id -from trudex.infrastructure.utils.timezone import now_msk, now_msk_naive, to_msk +from quizzi.application.bot.user_dialogs.states import UserMenuSG +from quizzi.application.bot.user_dialogs.take_test import on_start_test +from quizzi.infrastructure.database.dao.group import GroupDAO +from quizzi.infrastructure.database.dao.user import UserDAO +from quizzi.infrastructure.database.repo.test import TestRepository +from quizzi.infrastructure.database.repo.test_attempt import TestAttemptRepository +from quizzi.infrastructure.utils.config import Config +from quizzi.infrastructure.utils.qr_generator import generate_qr_bytes +from quizzi.infrastructure.utils.test_id_to_hash import encode_id +from quizzi.infrastructure.utils.timezone import now_msk, now_msk_naive, to_msk def can_edit_field(updated_at: datetime | None) -> bool: diff --git a/src/trudex/application/bot/user_dialogs/registration.py b/src/quizzi/application/bot/user_dialogs/registration.py similarity index 94% rename from src/trudex/application/bot/user_dialogs/registration.py rename to src/quizzi/application/bot/user_dialogs/registration.py index 953cf23..6e12ed1 100644 --- a/src/trudex/application/bot/user_dialogs/registration.py +++ b/src/quizzi/application/bot/user_dialogs/registration.py @@ -6,9 +6,9 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.user_dialogs.states import UserDeeplinkSG, UserMenuSG, UserRegistrationSG -from trudex.infrastructure.database.dao.group import GroupDAO -from trudex.infrastructure.database.dao.user import UserDAO +from quizzi.application.bot.user_dialogs.states import UserDeeplinkSG, UserMenuSG, UserRegistrationSG +from quizzi.infrastructure.database.dao.group import GroupDAO +from quizzi.infrastructure.database.dao.user import UserDAO @inject diff --git a/src/trudex/application/bot/user_dialogs/states.py b/src/quizzi/application/bot/user_dialogs/states.py similarity index 100% rename from src/trudex/application/bot/user_dialogs/states.py rename to src/quizzi/application/bot/user_dialogs/states.py diff --git a/src/trudex/application/bot/user_dialogs/take_test.py b/src/quizzi/application/bot/user_dialogs/take_test.py similarity index 97% rename from src/trudex/application/bot/user_dialogs/take_test.py rename to src/quizzi/application/bot/user_dialogs/take_test.py index c0cae97..6052234 100644 --- a/src/trudex/application/bot/user_dialogs/take_test.py +++ b/src/quizzi/application/bot/user_dialogs/take_test.py @@ -9,14 +9,14 @@ from aiogram_dialog.widgets.text import Const, Format from dishka import FromDishka from dishka.integrations.aiogram_dialog import inject -from trudex.application.bot.user_dialogs.states import UserMenuSG, UserTestSG -from trudex.domain.schemas import QuestionType -from trudex.infrastructure.database.dao.test import TestDAO -from trudex.infrastructure.database.dao.user_answer import UserAnswerDAO -from trudex.infrastructure.database.repo.test import TestRepository -from trudex.infrastructure.database.repo.test_attempt import TestAttemptRepository -from trudex.infrastructure.utils.rate_limiter import PasswordRateLimiter -from trudex.infrastructure.utils.timezone import now_msk_naive +from quizzi.application.bot.user_dialogs.states import UserMenuSG, UserTestSG +from quizzi.domain.schemas import QuestionType +from quizzi.infrastructure.database.dao.test import TestDAO +from quizzi.infrastructure.database.dao.user_answer import UserAnswerDAO +from quizzi.infrastructure.database.repo.test import TestRepository +from quizzi.infrastructure.database.repo.test_attempt import TestAttemptRepository +from quizzi.infrastructure.utils.rate_limiter import PasswordRateLimiter +from quizzi.infrastructure.utils.timezone import now_msk_naive async def get_state_for_question_type(question_type: str): diff --git a/src/trudex/domain/__init__.py b/src/quizzi/domain/__init__.py similarity index 100% rename from src/trudex/domain/__init__.py rename to src/quizzi/domain/__init__.py diff --git a/src/trudex/domain/schemas.py b/src/quizzi/domain/schemas.py similarity index 100% rename from src/trudex/domain/schemas.py rename to src/quizzi/domain/schemas.py diff --git a/src/trudex/domain/test_parser.py b/src/quizzi/domain/test_parser.py similarity index 100% rename from src/trudex/domain/test_parser.py rename to src/quizzi/domain/test_parser.py diff --git a/src/trudex/infrastructure/__init__.py b/src/quizzi/infrastructure/__init__.py similarity index 100% rename from src/trudex/infrastructure/__init__.py rename to src/quizzi/infrastructure/__init__.py diff --git a/src/trudex/infrastructure/database/__init__.py b/src/quizzi/infrastructure/database/__init__.py similarity index 100% rename from src/trudex/infrastructure/database/__init__.py rename to src/quizzi/infrastructure/database/__init__.py diff --git a/src/trudex/infrastructure/database/config.py b/src/quizzi/infrastructure/database/config.py similarity index 100% rename from src/trudex/infrastructure/database/config.py rename to src/quizzi/infrastructure/database/config.py diff --git a/src/trudex/infrastructure/database/dao/__init__.py b/src/quizzi/infrastructure/database/dao/__init__.py similarity index 100% rename from src/trudex/infrastructure/database/dao/__init__.py rename to src/quizzi/infrastructure/database/dao/__init__.py diff --git a/src/trudex/infrastructure/database/dao/group.py b/src/quizzi/infrastructure/database/dao/group.py similarity index 92% rename from src/trudex/infrastructure/database/dao/group.py rename to src/quizzi/infrastructure/database/dao/group.py index 42a0487..0a7841b 100644 --- a/src/trudex/infrastructure/database/dao/group.py +++ b/src/quizzi/infrastructure/database/dao/group.py @@ -1,9 +1,9 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from trudex.domain.schemas import Group as DomainGroup -from trudex.infrastructure.database.dto.group import GroupDTO -from trudex.infrastructure.database.models import Group +from quizzi.domain.schemas import Group as DomainGroup +from quizzi.infrastructure.database.dto.group import GroupDTO +from quizzi.infrastructure.database.models import Group class GroupDAO: diff --git a/src/trudex/infrastructure/database/dao/option.py b/src/quizzi/infrastructure/database/dao/option.py similarity index 93% rename from src/trudex/infrastructure/database/dao/option.py rename to src/quizzi/infrastructure/database/dao/option.py index 5c36a8a..3d2c1dd 100644 --- a/src/trudex/infrastructure/database/dao/option.py +++ b/src/quizzi/infrastructure/database/dao/option.py @@ -1,9 +1,9 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from trudex.domain.schemas import Option as DomainOption -from trudex.infrastructure.database.dto.option import OptionDTO -from trudex.infrastructure.database.models import Option +from quizzi.domain.schemas import Option as DomainOption +from quizzi.infrastructure.database.dto.option import OptionDTO +from quizzi.infrastructure.database.models import Option class OptionDAO: diff --git a/src/trudex/infrastructure/database/dao/question.py b/src/quizzi/infrastructure/database/dao/question.py similarity index 92% rename from src/trudex/infrastructure/database/dao/question.py rename to src/quizzi/infrastructure/database/dao/question.py index ac483c9..25df910 100644 --- a/src/trudex/infrastructure/database/dao/question.py +++ b/src/quizzi/infrastructure/database/dao/question.py @@ -1,10 +1,10 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from trudex.domain.schemas import Question as DomainQuestion -from trudex.domain.schemas import QuestionType -from trudex.infrastructure.database.dto.question import QuestionDTO -from trudex.infrastructure.database.models import Question +from quizzi.domain.schemas import Question as DomainQuestion +from quizzi.domain.schemas import QuestionType +from quizzi.infrastructure.database.dto.question import QuestionDTO +from quizzi.infrastructure.database.models import Question class QuestionDAO: diff --git a/src/trudex/infrastructure/database/dao/test.py b/src/quizzi/infrastructure/database/dao/test.py similarity index 96% rename from src/trudex/infrastructure/database/dao/test.py rename to src/quizzi/infrastructure/database/dao/test.py index 2694653..5917259 100644 --- a/src/trudex/infrastructure/database/dao/test.py +++ b/src/quizzi/infrastructure/database/dao/test.py @@ -4,9 +4,9 @@ from typing import NotRequired, TypedDict, Unpack from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from trudex.domain.schemas import Test as DomainTest -from trudex.infrastructure.database.dto.test import TestDTO -from trudex.infrastructure.database.models import Test +from quizzi.domain.schemas import Test as DomainTest +from quizzi.infrastructure.database.dto.test import TestDTO +from quizzi.infrastructure.database.models import Test class _UNSET: diff --git a/src/trudex/infrastructure/database/dao/test_attempt.py b/src/quizzi/infrastructure/database/dao/test_attempt.py similarity index 93% rename from src/trudex/infrastructure/database/dao/test_attempt.py rename to src/quizzi/infrastructure/database/dao/test_attempt.py index 82d44a0..f7f1ef8 100644 --- a/src/trudex/infrastructure/database/dao/test_attempt.py +++ b/src/quizzi/infrastructure/database/dao/test_attempt.py @@ -3,9 +3,9 @@ from datetime import datetime from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from trudex.domain.schemas import TestAttempt as DomainTestAttempt -from trudex.infrastructure.database.dto.test_attempt import TestAttemptDTO -from trudex.infrastructure.database.models import TestAttempt +from quizzi.domain.schemas import TestAttempt as DomainTestAttempt +from quizzi.infrastructure.database.dto.test_attempt import TestAttemptDTO +from quizzi.infrastructure.database.models import TestAttempt class TestAttemptDAO: diff --git a/src/trudex/infrastructure/database/dao/user.py b/src/quizzi/infrastructure/database/dao/user.py similarity index 96% rename from src/trudex/infrastructure/database/dao/user.py rename to src/quizzi/infrastructure/database/dao/user.py index 3914f2c..ab2bd0d 100644 --- a/src/trudex/infrastructure/database/dao/user.py +++ b/src/quizzi/infrastructure/database/dao/user.py @@ -3,9 +3,9 @@ from datetime import datetime from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from trudex.domain.schemas import User as DomainUser -from trudex.infrastructure.database.dto.user import UserDTO -from trudex.infrastructure.database.models import User +from quizzi.domain.schemas import User as DomainUser +from quizzi.infrastructure.database.dto.user import UserDTO +from quizzi.infrastructure.database.models import User class _UNSET: diff --git a/src/trudex/infrastructure/database/dao/user_answer.py b/src/quizzi/infrastructure/database/dao/user_answer.py similarity index 93% rename from src/trudex/infrastructure/database/dao/user_answer.py rename to src/quizzi/infrastructure/database/dao/user_answer.py index 57be605..87b03db 100644 --- a/src/trudex/infrastructure/database/dao/user_answer.py +++ b/src/quizzi/infrastructure/database/dao/user_answer.py @@ -1,9 +1,9 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from trudex.domain.schemas import UserAnswer as DomainUserAnswer -from trudex.infrastructure.database.dto.user_answer import UserAnswerDTO -from trudex.infrastructure.database.models import UserAnswer +from quizzi.domain.schemas import UserAnswer as DomainUserAnswer +from quizzi.infrastructure.database.dto.user_answer import UserAnswerDTO +from quizzi.infrastructure.database.models import UserAnswer class UserAnswerDAO: diff --git a/src/trudex/infrastructure/database/dto/__init__.py b/src/quizzi/infrastructure/database/dto/__init__.py similarity index 100% rename from src/trudex/infrastructure/database/dto/__init__.py rename to src/quizzi/infrastructure/database/dto/__init__.py diff --git a/src/trudex/infrastructure/database/dto/group.py b/src/quizzi/infrastructure/database/dto/group.py similarity index 75% rename from src/trudex/infrastructure/database/dto/group.py rename to src/quizzi/infrastructure/database/dto/group.py index 767e847..bade435 100644 --- a/src/trudex/infrastructure/database/dto/group.py +++ b/src/quizzi/infrastructure/database/dto/group.py @@ -1,5 +1,5 @@ -from trudex.domain.schemas import Group as DomainGroup -from trudex.infrastructure.database.models import Group as GroupModel +from quizzi.domain.schemas import Group as DomainGroup +from quizzi.infrastructure.database.models import Group as GroupModel class GroupDTO: diff --git a/src/trudex/infrastructure/database/dto/option.py b/src/quizzi/infrastructure/database/dto/option.py similarity index 77% rename from src/trudex/infrastructure/database/dto/option.py rename to src/quizzi/infrastructure/database/dto/option.py index e05397e..b9e513b 100644 --- a/src/trudex/infrastructure/database/dto/option.py +++ b/src/quizzi/infrastructure/database/dto/option.py @@ -1,5 +1,5 @@ -from trudex.domain.schemas import Option as DomainOption -from trudex.infrastructure.database.models import Option as OptionModel +from quizzi.domain.schemas import Option as DomainOption +from quizzi.infrastructure.database.models import Option as OptionModel class OptionDTO: diff --git a/src/trudex/infrastructure/database/dto/question.py b/src/quizzi/infrastructure/database/dto/question.py similarity index 78% rename from src/trudex/infrastructure/database/dto/question.py rename to src/quizzi/infrastructure/database/dto/question.py index a63bbbf..ebb5949 100644 --- a/src/trudex/infrastructure/database/dto/question.py +++ b/src/quizzi/infrastructure/database/dto/question.py @@ -1,5 +1,5 @@ -from trudex.domain.schemas import Question as DomainQuestion -from trudex.infrastructure.database.models import Question as QuestionModel +from quizzi.domain.schemas import Question as DomainQuestion +from quizzi.infrastructure.database.models import Question as QuestionModel class QuestionDTO: diff --git a/src/trudex/infrastructure/database/dto/test.py b/src/quizzi/infrastructure/database/dto/test.py similarity index 85% rename from src/trudex/infrastructure/database/dto/test.py rename to src/quizzi/infrastructure/database/dto/test.py index 05d20bc..796ff30 100644 --- a/src/trudex/infrastructure/database/dto/test.py +++ b/src/quizzi/infrastructure/database/dto/test.py @@ -1,5 +1,5 @@ -from trudex.domain.schemas import Test as DomainTest -from trudex.infrastructure.database.models import Test as TestModel +from quizzi.domain.schemas import Test as DomainTest +from quizzi.infrastructure.database.models import Test as TestModel class TestDTO: diff --git a/src/trudex/infrastructure/database/dto/test_attempt.py b/src/quizzi/infrastructure/database/dto/test_attempt.py similarity index 80% rename from src/trudex/infrastructure/database/dto/test_attempt.py rename to src/quizzi/infrastructure/database/dto/test_attempt.py index 786eb38..0cb01d9 100644 --- a/src/trudex/infrastructure/database/dto/test_attempt.py +++ b/src/quizzi/infrastructure/database/dto/test_attempt.py @@ -1,5 +1,5 @@ -from trudex.domain.schemas import TestAttempt as DomainTestAttempt -from trudex.infrastructure.database.models import TestAttempt as TestAttemptModel +from quizzi.domain.schemas import TestAttempt as DomainTestAttempt +from quizzi.infrastructure.database.models import TestAttempt as TestAttemptModel class TestAttemptDTO: diff --git a/src/trudex/infrastructure/database/dto/user.py b/src/quizzi/infrastructure/database/dto/user.py similarity index 85% rename from src/trudex/infrastructure/database/dto/user.py rename to src/quizzi/infrastructure/database/dto/user.py index cb357e1..8736ea0 100644 --- a/src/trudex/infrastructure/database/dto/user.py +++ b/src/quizzi/infrastructure/database/dto/user.py @@ -1,5 +1,5 @@ -from trudex.domain.schemas import User as DomainUser -from trudex.infrastructure.database.models import User as UserModel +from quizzi.domain.schemas import User as DomainUser +from quizzi.infrastructure.database.models import User as UserModel class UserDTO: diff --git a/src/trudex/infrastructure/database/dto/user_answer.py b/src/quizzi/infrastructure/database/dto/user_answer.py similarity index 80% rename from src/trudex/infrastructure/database/dto/user_answer.py rename to src/quizzi/infrastructure/database/dto/user_answer.py index 58f0ddc..1b4bf58 100644 --- a/src/trudex/infrastructure/database/dto/user_answer.py +++ b/src/quizzi/infrastructure/database/dto/user_answer.py @@ -1,5 +1,5 @@ -from trudex.domain.schemas import UserAnswer as DomainUserAnswer -from trudex.infrastructure.database.models import UserAnswer as UserAnswerModel +from quizzi.domain.schemas import UserAnswer as DomainUserAnswer +from quizzi.infrastructure.database.models import UserAnswer as UserAnswerModel class UserAnswerDTO: diff --git a/src/trudex/infrastructure/database/models.py b/src/quizzi/infrastructure/database/models.py similarity index 99% rename from src/trudex/infrastructure/database/models.py rename to src/quizzi/infrastructure/database/models.py index 1b5c816..cef9774 100644 --- a/src/trudex/infrastructure/database/models.py +++ b/src/quizzi/infrastructure/database/models.py @@ -4,7 +4,7 @@ from typing import final from sqlalchemy import BigInteger, CheckConstraint, ForeignKey, Integer, String, Text, func from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship -from trudex.domain.schemas import QuestionType +from quizzi.domain.schemas import QuestionType class Base(DeclarativeBase): diff --git a/src/quizzi/infrastructure/database/repo/__init__.py b/src/quizzi/infrastructure/database/repo/__init__.py new file mode 100644 index 0000000..b715470 --- /dev/null +++ b/src/quizzi/infrastructure/database/repo/__init__.py @@ -0,0 +1,5 @@ +from quizzi.infrastructure.database.repo.test import TestRepository +from quizzi.infrastructure.database.repo.test_attempt import TestAttemptRepository +from quizzi.infrastructure.database.repo.user import UserRepository + +__all__ = ["TestRepository", "TestAttemptRepository", "UserRepository"] diff --git a/src/trudex/infrastructure/database/repo/test.py b/src/quizzi/infrastructure/database/repo/test.py similarity index 91% rename from src/trudex/infrastructure/database/repo/test.py rename to src/quizzi/infrastructure/database/repo/test.py index b2dcae1..e09b1ca 100644 --- a/src/trudex/infrastructure/database/repo/test.py +++ b/src/quizzi/infrastructure/database/repo/test.py @@ -4,16 +4,16 @@ from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from trudex.domain.schemas import Option, Question, Test -from trudex.infrastructure.database.dao.option import OptionDAO -from trudex.infrastructure.database.dao.question import QuestionDAO -from trudex.infrastructure.database.dao.test import TestDAO -from trudex.infrastructure.database.dto.option import OptionDTO -from trudex.infrastructure.database.dto.question import QuestionDTO -from trudex.infrastructure.database.dto.test import TestDTO -from trudex.infrastructure.database.models import Option as OptionModel -from trudex.infrastructure.database.models import Question as QuestionModel -from trudex.infrastructure.database.models import Test as TestModel +from quizzi.domain.schemas import Option, Question, Test +from quizzi.infrastructure.database.dao.option import OptionDAO +from quizzi.infrastructure.database.dao.question import QuestionDAO +from quizzi.infrastructure.database.dao.test import TestDAO +from quizzi.infrastructure.database.dto.option import OptionDTO +from quizzi.infrastructure.database.dto.question import QuestionDTO +from quizzi.infrastructure.database.dto.test import TestDTO +from quizzi.infrastructure.database.models import Option as OptionModel +from quizzi.infrastructure.database.models import Question as QuestionModel +from quizzi.infrastructure.database.models import Test as TestModel @final @@ -176,7 +176,7 @@ class TestRepository: return new_test async def get_available_tests_for_user(self, user_id: int, user_group: int | None) -> list[Test]: - from trudex.infrastructure.database.models import TestAttempt + from quizzi.infrastructure.database.models import TestAttempt subquery = ( select( diff --git a/src/trudex/infrastructure/database/repo/test_attempt.py b/src/quizzi/infrastructure/database/repo/test_attempt.py similarity index 93% rename from src/trudex/infrastructure/database/repo/test_attempt.py rename to src/quizzi/infrastructure/database/repo/test_attempt.py index 56ae2ce..1686ffb 100644 --- a/src/trudex/infrastructure/database/repo/test_attempt.py +++ b/src/quizzi/infrastructure/database/repo/test_attempt.py @@ -4,14 +4,14 @@ from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from trudex.domain.schemas import TestAttempt, UserAnswer -from trudex.infrastructure.database.dao.test_attempt import TestAttemptDAO -from trudex.infrastructure.database.dao.user_answer import UserAnswerDAO -from trudex.infrastructure.database.dto.test_attempt import TestAttemptDTO -from trudex.infrastructure.database.dto.user_answer import UserAnswerDTO -from trudex.infrastructure.database.models import TestAttempt as TestAttemptModel -from trudex.infrastructure.database.models import UserAnswer as UserAnswerModel -from trudex.infrastructure.utils.timezone import now_msk_naive +from quizzi.domain.schemas import TestAttempt, UserAnswer +from quizzi.infrastructure.database.dao.test_attempt import TestAttemptDAO +from quizzi.infrastructure.database.dao.user_answer import UserAnswerDAO +from quizzi.infrastructure.database.dto.test_attempt import TestAttemptDTO +from quizzi.infrastructure.database.dto.user_answer import UserAnswerDTO +from quizzi.infrastructure.database.models import TestAttempt as TestAttemptModel +from quizzi.infrastructure.database.models import UserAnswer as UserAnswerModel +from quizzi.infrastructure.utils.timezone import now_msk_naive @final @@ -173,7 +173,7 @@ class TestAttemptRepository: } async def get_most_difficult_questions(self, test_id: int, limit: int = 10) -> list[tuple[int, float]]: - from trudex.infrastructure.database.models import Question as QuestionModel + from quizzi.infrastructure.database.models import Question as QuestionModel result = await self.session.execute( select( @@ -209,7 +209,7 @@ class TestAttemptRepository: } async def get_finished_attempts_with_tests(self, user_id: int) -> list[tuple[TestAttempt, str]]: - from trudex.infrastructure.database.models import Test as TestModel + from quizzi.infrastructure.database.models import Test as TestModel result = await self.session.execute( select(TestAttemptModel, TestModel.title) @@ -222,7 +222,7 @@ class TestAttemptRepository: return [(TestAttemptDTO(row[0]).to_domain(), row[1]) for row in rows] async def get_test_attempts_with_users(self, test_id: int) -> list[tuple[TestAttempt, str]]: - from trudex.infrastructure.database.models import User as UserModel + from quizzi.infrastructure.database.models import User as UserModel result = await self.session.execute( select(TestAttemptModel, UserModel.name, UserModel.first_name) diff --git a/src/trudex/infrastructure/database/repo/user.py b/src/quizzi/infrastructure/database/repo/user.py similarity index 89% rename from src/trudex/infrastructure/database/repo/user.py rename to src/quizzi/infrastructure/database/repo/user.py index 681e0be..ff1d04f 100644 --- a/src/trudex/infrastructure/database/repo/user.py +++ b/src/quizzi/infrastructure/database/repo/user.py @@ -3,10 +3,10 @@ from typing import final from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession -from trudex.domain.schemas import User -from trudex.infrastructure.database.dao.user import UserDAO -from trudex.infrastructure.database.dto.user import UserDTO -from trudex.infrastructure.database.models import User as UserModel +from quizzi.domain.schemas import User +from quizzi.infrastructure.database.dao.user import UserDAO +from quizzi.infrastructure.database.dto.user import UserDTO +from quizzi.infrastructure.database.models import User as UserModel @final diff --git a/src/trudex/infrastructure/di.py b/src/quizzi/infrastructure/di.py similarity index 76% rename from src/trudex/infrastructure/di.py rename to src/quizzi/infrastructure/di.py index 4b23fe0..6a8053b 100644 --- a/src/trudex/infrastructure/di.py +++ b/src/quizzi/infrastructure/di.py @@ -5,20 +5,20 @@ from apscheduler.schedulers.asyncio import AsyncIOScheduler from dishka import AsyncContainer, Provider, Scope, provide from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker -from trudex.infrastructure.database.config import new_session_maker -from trudex.infrastructure.database.dao.group import GroupDAO -from trudex.infrastructure.database.dao.option import OptionDAO -from trudex.infrastructure.database.dao.question import QuestionDAO -from trudex.infrastructure.database.dao.test import TestDAO -from trudex.infrastructure.database.dao.test_attempt import TestAttemptDAO -from trudex.infrastructure.database.dao.user import UserDAO -from trudex.infrastructure.database.dao.user_answer import UserAnswerDAO -from trudex.infrastructure.database.repo.test import TestRepository -from trudex.infrastructure.database.repo.test_attempt import TestAttemptRepository -from trudex.infrastructure.database.repo.user import UserRepository -from trudex.infrastructure.scheduling.tasks import deactivate_expired_tests -from trudex.infrastructure.utils.config import Config -from trudex.infrastructure.utils.rate_limiter import PasswordRateLimiter +from quizzi.infrastructure.database.config import new_session_maker +from quizzi.infrastructure.database.dao.group import GroupDAO +from quizzi.infrastructure.database.dao.option import OptionDAO +from quizzi.infrastructure.database.dao.question import QuestionDAO +from quizzi.infrastructure.database.dao.test import TestDAO +from quizzi.infrastructure.database.dao.test_attempt import TestAttemptDAO +from quizzi.infrastructure.database.dao.user import UserDAO +from quizzi.infrastructure.database.dao.user_answer import UserAnswerDAO +from quizzi.infrastructure.database.repo.test import TestRepository +from quizzi.infrastructure.database.repo.test_attempt import TestAttemptRepository +from quizzi.infrastructure.database.repo.user import UserRepository +from quizzi.infrastructure.scheduling.tasks import deactivate_expired_tests +from quizzi.infrastructure.utils.config import Config +from quizzi.infrastructure.utils.rate_limiter import PasswordRateLimiter class DatabaseProvider(Provider): diff --git a/src/trudex/infrastructure/scheduling/__init__.py b/src/quizzi/infrastructure/scheduling/__init__.py similarity index 100% rename from src/trudex/infrastructure/scheduling/__init__.py rename to src/quizzi/infrastructure/scheduling/__init__.py diff --git a/src/trudex/infrastructure/scheduling/tasks.py b/src/quizzi/infrastructure/scheduling/tasks.py similarity index 82% rename from src/trudex/infrastructure/scheduling/tasks.py rename to src/quizzi/infrastructure/scheduling/tasks.py index 85f91f7..da94a34 100644 --- a/src/trudex/infrastructure/scheduling/tasks.py +++ b/src/quizzi/infrastructure/scheduling/tasks.py @@ -2,8 +2,8 @@ import logging from dishka import AsyncContainer -from trudex.infrastructure.database.dao.test import TestDAO -from trudex.infrastructure.utils.timezone import now_msk_naive +from quizzi.infrastructure.database.dao.test import TestDAO +from quizzi.infrastructure.utils.timezone import now_msk_naive logger = logging.getLogger(__name__) diff --git a/src/trudex/infrastructure/utils/__init__.py b/src/quizzi/infrastructure/utils/__init__.py similarity index 100% rename from src/trudex/infrastructure/utils/__init__.py rename to src/quizzi/infrastructure/utils/__init__.py diff --git a/src/trudex/infrastructure/utils/bot_commands.py b/src/quizzi/infrastructure/utils/bot_commands.py similarity index 90% rename from src/trudex/infrastructure/utils/bot_commands.py rename to src/quizzi/infrastructure/utils/bot_commands.py index d017f64..7cbf22b 100644 --- a/src/trudex/infrastructure/utils/bot_commands.py +++ b/src/quizzi/infrastructure/utils/bot_commands.py @@ -1,8 +1,8 @@ from aiogram import Bot from aiogram.types import BotCommand, BotCommandScopeAllPrivateChats, BotCommandScopeChat -from trudex.infrastructure.database.repo.user import UserRepository -from trudex.infrastructure.utils.config import Config +from quizzi.infrastructure.database.repo.user import UserRepository +from quizzi.infrastructure.utils.config import Config async def setup_bot_commands(bot: Bot, config: Config, user_repo: UserRepository) -> None: diff --git a/src/trudex/infrastructure/utils/broadcast.py b/src/quizzi/infrastructure/utils/broadcast.py similarity index 97% rename from src/trudex/infrastructure/utils/broadcast.py rename to src/quizzi/infrastructure/utils/broadcast.py index 8e775d7..e94f3e2 100644 --- a/src/trudex/infrastructure/utils/broadcast.py +++ b/src/quizzi/infrastructure/utils/broadcast.py @@ -11,7 +11,7 @@ from aiogram.exceptions import ( TelegramRetryAfter, ) -from trudex.infrastructure.database.dao.user import UserDAO +from quizzi.infrastructure.database.dao.user import UserDAO logger = logging.getLogger(__name__) diff --git a/src/trudex/infrastructure/utils/config.py b/src/quizzi/infrastructure/utils/config.py similarity index 100% rename from src/trudex/infrastructure/utils/config.py rename to src/quizzi/infrastructure/utils/config.py diff --git a/src/trudex/infrastructure/utils/qr_generator.py b/src/quizzi/infrastructure/utils/qr_generator.py similarity index 100% rename from src/trudex/infrastructure/utils/qr_generator.py rename to src/quizzi/infrastructure/utils/qr_generator.py diff --git a/src/trudex/infrastructure/utils/rate_limiter.py b/src/quizzi/infrastructure/utils/rate_limiter.py similarity index 100% rename from src/trudex/infrastructure/utils/rate_limiter.py rename to src/quizzi/infrastructure/utils/rate_limiter.py diff --git a/src/trudex/infrastructure/utils/test_id_to_hash.py b/src/quizzi/infrastructure/utils/test_id_to_hash.py similarity index 100% rename from src/trudex/infrastructure/utils/test_id_to_hash.py rename to src/quizzi/infrastructure/utils/test_id_to_hash.py diff --git a/src/trudex/infrastructure/utils/timezone.py b/src/quizzi/infrastructure/utils/timezone.py similarity index 100% rename from src/trudex/infrastructure/utils/timezone.py rename to src/quizzi/infrastructure/utils/timezone.py diff --git a/src/trudex/infrastructure/database/repo/__init__.py b/src/trudex/infrastructure/database/repo/__init__.py deleted file mode 100644 index 3d25dad..0000000 --- a/src/trudex/infrastructure/database/repo/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from trudex.infrastructure.database.repo.test import TestRepository -from trudex.infrastructure.database.repo.test_attempt import TestAttemptRepository -from trudex.infrastructure.database.repo.user import UserRepository - -__all__ = ["TestRepository", "TestAttemptRepository", "UserRepository"] diff --git a/uv.lock b/uv.lock index 6ff0ab6..14ba0c3 100644 --- a/uv.lock +++ b/uv.lock @@ -717,6 +717,55 @@ pil = [ { name = "pillow" }, ] +[[package]] +name = "quizzi" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "aiogram" }, + { name = "aiogram-dialog" }, + { name = "alembic" }, + { name = "apscheduler" }, + { name = "asyncpg" }, + { name = "dishka" }, + { name = "httpx" }, + { name = "json5" }, + { name = "pycryptodome" }, + { name = "pydantic" }, + { name = "qrcode", extra = ["pil"] }, + { name = "sqlalchemy" }, +] + +[package.dev-dependencies] +dev = [ + { name = "isort" }, + { name = "ruff" }, + { name = "watchfiles" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiogram", specifier = ">=3.23.0" }, + { name = "aiogram-dialog", specifier = ">=2.4.0" }, + { name = "alembic", specifier = ">=1.17.2" }, + { name = "apscheduler", specifier = ">=3.10.4" }, + { name = "asyncpg", specifier = ">=0.31.0" }, + { name = "dishka", specifier = ">=1.7.2" }, + { name = "httpx", specifier = ">=0.28.1" }, + { name = "json5", specifier = ">=0.13.0" }, + { name = "pycryptodome", specifier = ">=3.23.0" }, + { name = "pydantic", specifier = ">=2.10.5" }, + { name = "qrcode", extras = ["pil"], specifier = ">=8.2" }, + { name = "sqlalchemy", specifier = ">=2.0.45" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "isort", specifier = ">=7.0.0" }, + { name = "ruff", specifier = ">=0.14.10" }, + { name = "watchfiles", specifier = ">=1.1.1" }, +] + [[package]] name = "ruff" version = "0.14.10" @@ -770,55 +819,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bf/e1/3ccb13c643399d22289c6a9786c1a91e3dcbb68bce4beb44926ac2c557bf/sqlalchemy-2.0.45-py3-none-any.whl", hash = "sha256:5225a288e4c8cc2308dbdd874edad6e7d0fd38eac1e9e5f23503425c8eee20d0", size = 1936672, upload-time = "2025-12-09T21:54:52.608Z" }, ] -[[package]] -name = "trudex" -version = "0.1.0" -source = { editable = "." } -dependencies = [ - { name = "aiogram" }, - { name = "aiogram-dialog" }, - { name = "alembic" }, - { name = "apscheduler" }, - { name = "asyncpg" }, - { name = "dishka" }, - { name = "httpx" }, - { name = "json5" }, - { name = "pycryptodome" }, - { name = "pydantic" }, - { name = "qrcode", extra = ["pil"] }, - { name = "sqlalchemy" }, -] - -[package.dev-dependencies] -dev = [ - { name = "isort" }, - { name = "ruff" }, - { name = "watchfiles" }, -] - -[package.metadata] -requires-dist = [ - { name = "aiogram", specifier = ">=3.23.0" }, - { name = "aiogram-dialog", specifier = ">=2.4.0" }, - { name = "alembic", specifier = ">=1.17.2" }, - { name = "apscheduler", specifier = ">=3.10.4" }, - { name = "asyncpg", specifier = ">=0.31.0" }, - { name = "dishka", specifier = ">=1.7.2" }, - { name = "httpx", specifier = ">=0.28.1" }, - { name = "json5", specifier = ">=0.13.0" }, - { name = "pycryptodome", specifier = ">=3.23.0" }, - { name = "pydantic", specifier = ">=2.10.5" }, - { name = "qrcode", extras = ["pil"], specifier = ">=8.2" }, - { name = "sqlalchemy", specifier = ">=2.0.45" }, -] - -[package.metadata.requires-dev] -dev = [ - { name = "isort", specifier = ">=7.0.0" }, - { name = "ruff", specifier = ">=0.14.10" }, - { name = "watchfiles", specifier = ">=1.1.1" }, -] - [[package]] name = "typing-extensions" version = "4.15.0"