/
urusai
/
code_sample
Обзор
Документация
Войти
/
urusai
/
code_sample
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/i18n/exceptions.py
43 строки
1 KB
nick
init
30 сен 2024, 16:12
30 сен 2024, 16:12
c68451c
Код
Авторство
О чём код?
from pydantic import ValidationError from starlette import status from fastapi.encoders import jsonable_encoder from fastapi.exceptions import RequestValidationError from starlette.requests import Request from starlette.responses import JSONResponse from i18n.tr import translate_pydantic from i18n.mapper_columns import keys_map from dto.errors.validation import ErrorDictRequired from settings.api.settings import SettingsApplication async def validation_exception_handler( request: Request, exc: ValidationError | RequestValidationError ): current_locale = request.query_params.get( "locale", SettingsApplication().DEFAULT_LOCALE ) errors = translate_pydantic.translate(exc.errors(), current_locale) reformat_errors: list[ErrorDictRequired] = [] for error in errors: title = [keys_map.get(code) or code for code in error.get("loc")] reformat_errors.append( ErrorDictRequired( loc=error.get("loc"), title=title, msg=error.get("msg"), type=error.get("type"), ) ) return JSONResponse( status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=jsonable_encoder( { "detail": reformat_errors, } ), )