From b6ffdd9553d8bd0952fb680e4abdd24f4b9eb451 Mon Sep 17 00:00:00 2001 From: dev1lfreak Date: Thu, 28 May 2026 13:41:39 +0300 Subject: [PATCH 1/3] refactor: delete me_user --- src/presentation/routing/account.py | 7 +++++-- src/presentation/routing/account_settings.py | 5 ++--- src/presentation/serializers/__init__.py | 1 - src/presentation/serializers/me_user.py | 13 ------------- 4 files changed, 7 insertions(+), 19 deletions(-) delete mode 100644 src/presentation/serializers/me_user.py diff --git a/src/presentation/routing/account.py b/src/presentation/routing/account.py index 65fd7d2..ec7ddf1 100644 --- a/src/presentation/routing/account.py +++ b/src/presentation/routing/account.py @@ -10,7 +10,6 @@ from src.presentation.dependencies.logger import get_logger from src.presentation.decorators import csrf_protect from src.presentation.schemas.api_errors import ApiErrorPayload, ApiValidationErrorsPayload from src.presentation.schemas.me_public import MeUserPublicResponse -from src.presentation.serializers import me_user_public account_router = APIRouter() @@ -37,6 +36,10 @@ account_router = APIRouter() 'description': 'Ошибка проверки CSRF (нет пары cookie/заголовка, несовпадение или просрочен токен).', 'model': ApiErrorPayload, }, + status.HTTP_404_NOT_FOUND: { + 'description': 'Учётная запись не найдена.', + 'model': ApiErrorPayload, + }, status.HTTP_422_UNPROCESSABLE_ENTITY: { 'description': 'Ошибка валидации входных данных (например, заголовков).', 'model': ApiValidationErrorsPayload, @@ -52,4 +55,4 @@ async def me( ) -> MeUserPublicResponse: user = await command(user_id=auth.user_id) logger.info(f'Get user: {user.id}') - return me_user_public(user) + return MeUserPublicResponse.from_user(user) diff --git a/src/presentation/routing/account_settings.py b/src/presentation/routing/account_settings.py index 30abd28..0fd16dc 100644 --- a/src/presentation/routing/account_settings.py +++ b/src/presentation/routing/account_settings.py @@ -30,7 +30,6 @@ from src.presentation.schemas import ( ) from src.presentation.schemas.api_errors import ApiErrorPayload, ApiValidationErrorsPayload from src.presentation.schemas.me_public import MeUserPublicResponse, SetAvatarPublicResponse -from src.presentation.serializers import me_user_public account_settings_router = APIRouter(prefix='/settings') @@ -175,7 +174,7 @@ async def set_avatar( command: SetAvatarCommand = Depends(get_set_avatar_command), ) -> SetAvatarPublicResponse: user, webp_size = await command(user_id=auth.user_id, image_bytes=body.decoded_bytes) - pub = me_user_public(user) + pub = MeUserPublicResponse.from_user(user) return SetAvatarPublicResponse(**pub.model_dump(), webp_size_bytes=webp_size) @@ -197,7 +196,7 @@ async def delete_avatar( command: DeleteAvatarCommand = Depends(get_delete_avatar_command), ) -> MeUserPublicResponse: user = await command(user_id=auth.user_id) - return me_user_public(user) + return MeUserPublicResponse.from_user(user) @account_settings_router.post( diff --git a/src/presentation/serializers/__init__.py b/src/presentation/serializers/__init__.py index a92cc01..e69de29 100644 --- a/src/presentation/serializers/__init__.py +++ b/src/presentation/serializers/__init__.py @@ -1 +0,0 @@ -from src.presentation.serializers.me_user import me_user_payload, me_user_public diff --git a/src/presentation/serializers/me_user.py b/src/presentation/serializers/me_user.py deleted file mode 100644 index 169ce69..0000000 --- a/src/presentation/serializers/me_user.py +++ /dev/null @@ -1,13 +0,0 @@ -from __future__ import annotations - -from src.application.domain.entities import UserEntity - -from src.presentation.schemas.me_public import MeUserPublicResponse - - -def me_user_public(user: UserEntity) -> MeUserPublicResponse: - return MeUserPublicResponse.from_user(user) - - -def me_user_payload(user: UserEntity) -> dict: - return me_user_public(user).model_dump(mode='json') -- 2.49.1 From d2e8eb9e4d5a8ee815c6f4767d31aa593e33dbf5 Mon Sep 17 00:00:00 2001 From: dev1lfreak Date: Thu, 28 May 2026 20:52:06 +0300 Subject: [PATCH 2/3] refactor: delete serializers --- src/presentation/serializers/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/presentation/serializers/__init__.py diff --git a/src/presentation/serializers/__init__.py b/src/presentation/serializers/__init__.py deleted file mode 100644 index e69de29..0000000 -- 2.49.1 From d794d3f9c66b5d2d2e12ccb31e8ffae9e4907a00 Mon Sep 17 00:00:00 2001 From: dev1lfreak Date: Fri, 29 May 2026 13:34:40 +0300 Subject: [PATCH 3/3] refactor: add clear cast --- src/presentation/routing/account.py | 20 +++++++++- src/presentation/routing/account_settings.py | 40 +++++++++++++++++++- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/src/presentation/routing/account.py b/src/presentation/routing/account.py index ec7ddf1..e65d967 100644 --- a/src/presentation/routing/account.py +++ b/src/presentation/routing/account.py @@ -55,4 +55,22 @@ async def me( ) -> MeUserPublicResponse: user = await command(user_id=auth.user_id) logger.info(f'Get user: {user.id}') - return MeUserPublicResponse.from_user(user) + return MeUserPublicResponse( + id=user.id, + email=user.email, + first_name=user.first_name, + middle_name=user.middle_name, + last_name=user.last_name, + birth_date=user.birth_date, + encrypted_mnemonic=user.encrypted_mnemonic, + phone=user.phone, + passport_data=user.passport_data, + inn=user.inn, + erc20=user.erc20, + avatar_link=user.avatar_link, + kyc_verified=user.kyc_verified, + is_deleted=user.is_deleted, + created_at=user.created_at, + updated_at=user.updated_at, + kyc_verified_at=user.kyc_verified_at + ) diff --git a/src/presentation/routing/account_settings.py b/src/presentation/routing/account_settings.py index 0fd16dc..88427b0 100644 --- a/src/presentation/routing/account_settings.py +++ b/src/presentation/routing/account_settings.py @@ -174,7 +174,25 @@ async def set_avatar( command: SetAvatarCommand = Depends(get_set_avatar_command), ) -> SetAvatarPublicResponse: user, webp_size = await command(user_id=auth.user_id, image_bytes=body.decoded_bytes) - pub = MeUserPublicResponse.from_user(user) + pub = MeUserPublicResponse( + id=user.id, + email=user.email, + first_name=user.first_name, + middle_name=user.middle_name, + last_name=user.last_name, + birth_date=user.birth_date, + encrypted_mnemonic=user.encrypted_mnemonic, + phone=user.phone, + passport_data=user.passport_data, + inn=user.inn, + erc20=user.erc20, + avatar_link=user.avatar_link, + kyc_verified=user.kyc_verified, + is_deleted=user.is_deleted, + created_at=user.created_at, + updated_at=user.updated_at, + kyc_verified_at=user.kyc_verified_at + ) return SetAvatarPublicResponse(**pub.model_dump(), webp_size_bytes=webp_size) @@ -196,7 +214,25 @@ async def delete_avatar( command: DeleteAvatarCommand = Depends(get_delete_avatar_command), ) -> MeUserPublicResponse: user = await command(user_id=auth.user_id) - return MeUserPublicResponse.from_user(user) + return MeUserPublicResponse( + id=user.id, + email=user.email, + first_name=user.first_name, + middle_name=user.middle_name, + last_name=user.last_name, + birth_date=user.birth_date, + encrypted_mnemonic=user.encrypted_mnemonic, + phone=user.phone, + passport_data=user.passport_data, + inn=user.inn, + erc20=user.erc20, + avatar_link=user.avatar_link, + kyc_verified=user.kyc_verified, + is_deleted=user.is_deleted, + created_at=user.created_at, + updated_at=user.updated_at, + kyc_verified_at=user.kyc_verified_at + ) @account_settings_router.post( -- 2.49.1