Skip to content

Commit d08c06a

Browse files
Локализация (#24)
1 parent 11a7cad commit d08c06a

11 files changed

Lines changed: 59 additions & 27 deletions

File tree

migrations/versions/f8c57101c0f6_init.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
Create Date: 2023-05-09 12:48:25.550608
66
77
"""
8+
89
import sqlalchemy as sa
910
from alembic import op
1011

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
alembic
22
auth-lib-profcomff[fastapi]
3-
fastapi
3+
fastapi==0.108.0
44
fastapi-sqlalchemy
55
gunicorn
66
logging-profcomff

tests/test_routes/test_user_post_then_get.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def test_create_new(dbsession, client, param, source, admin_source):
2525
dbsession.expire_all()
2626
assert response_upd.status_code == 200
2727
response_get = client.get("/user/0")
28-
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded'}
28+
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded', 'ru': 'Изменение успешно'}
2929
assert {"category": param.category.name, "param": param.name, "value": "admin_info"} in list(
3030
response_get.json()["items"]
3131
)
@@ -63,7 +63,7 @@ def test_delete(dbsession, client, param, admin_source):
6363
dbsession.expire_all()
6464
response_get = client.get("/user/0")
6565
assert response_upd.status_code == 200
66-
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded'}
66+
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded', 'ru': 'Изменение успешно'}
6767
assert response_get.status_code == 404
6868
dbsession.delete(info1)
6969
dbsession.commit()
@@ -94,7 +94,7 @@ def test_update(dbsession, client, param, admin_source):
9494
response_get = client.get("/user/0")
9595
assert response_upd.status_code == 200
9696
assert response_get.status_code == 200
97-
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded'}
97+
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded', 'ru': 'Изменение успешно'}
9898
assert {"category": param.category.name, "param": param.name, "value": "new"} in list(response_get.json()["items"])
9999
assert len(response_get.json()["items"]) == 1
100100
dbsession.delete(info1)
@@ -156,7 +156,7 @@ def test_update_not_changeable_with_scopes(dbsession, client, param, admin_sourc
156156
response_get = client.get("/user/0")
157157
assert response_get.status_code == 200
158158
assert response_upd.status_code == 200
159-
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded'}
159+
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded', 'ru': 'Изменение успешно'}
160160
assert {"category": param.category.name, "param": param.name, "value": "new"} in list(response_get.json()["items"])
161161
assert len(response_get.json()["items"]) == 1
162162
dbsession.delete(info1)
@@ -180,7 +180,7 @@ def test_create_new_no_category(dbsession, client, param, admin_source):
180180
response_get = client.get("/user/0")
181181
assert response_get.status_code == 200
182182
assert response_upd.status_code == 200
183-
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded'}
183+
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded', 'ru': 'Изменение успешно'}
184184
assert {"category": param.category.name, "param": param.name, "value": "new"} in list(response_get.json()["items"])
185185
assert len(response_get.json()["items"]) == 1
186186
info_new = (
@@ -211,7 +211,7 @@ def test_update_no_read_scope(dbsession, client, param, admin_source):
211211
response_get = client.get("/user/0")
212212
assert response_upd.status_code == 200
213213
assert response_get.status_code == 200
214-
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded'}
214+
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded', 'ru': 'Изменение успешно'}
215215
assert response_get.json() == {"items": []}
216216
assert info1.value == "new"
217217
dbsession.delete(info1)
@@ -244,7 +244,7 @@ def test_update_from_user_source(dbsession, client, param, source):
244244
dbsession.expire_all()
245245
response_get = client.get("/user/0")
246246
assert response_upd.status_code == 200
247-
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded'}
247+
assert response_upd.json() == {'status': 'Success', 'message': 'User patch succeeded', 'ru': 'Изменение успешно'}
248248
assert response_get.status_code == 200
249249
assert {"category": param.category.name, "param": param.name, "value": "new_user_info"} in list(
250250
response_get.json()["items"]

userdata_api/exceptions.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
1-
class ObjectNotFound(Exception):
1+
class UserDataApiError(Exception):
2+
def __init__(self, error_en: str, error_ru: str) -> None:
3+
self.en = error_en
4+
self.ru = error_ru
5+
super().__init__(error_en)
6+
7+
8+
class ObjectNotFound(UserDataApiError):
29
def __init__(self, obj: type, obj_id_or_name: int | str):
3-
super().__init__(f"Object {obj.__name__} {obj_id_or_name=} not found")
10+
super().__init__(
11+
f"Object {obj.__name__} {obj_id_or_name=} not found",
12+
f"Объект {obj.__name__} с идиентификатором {obj_id_or_name=} не найден",
13+
)
414

515

6-
class AlreadyExists(Exception):
16+
class AlreadyExists(UserDataApiError):
717
def __init__(self, obj: type, obj_id_or_name: int | str):
8-
super().__init__(f"Object {obj.__name__} {obj_id_or_name=} already exists")
18+
super().__init__(
19+
f"Object {obj.__name__} {obj_id_or_name=} already exists",
20+
f"Объект {obj.__name__} с идиентификатором {obj_id_or_name=} уже существует",
21+
)
922

1023

11-
class Forbidden(Exception):
12-
def __init__(self, msg: str):
13-
super().__init__(msg)
24+
class Forbidden(UserDataApiError):
25+
pass

userdata_api/routes/category.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,4 @@ async def delete_category(
111111
"""
112112
_: Category = Category.get(id, session=db.session)
113113
Category.delete(id, session=db.session)
114-
return StatusResponseModel(status="Success", message="Category deleted")
114+
return StatusResponseModel(status="Success", message="Category deleted", ru="Категория удалена")

userdata_api/routes/exc_handlers.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,20 @@
88

99
@app.exception_handler(ObjectNotFound)
1010
async def not_found_handler(req: starlette.requests.Request, exc: ObjectNotFound):
11-
return JSONResponse(content=StatusResponseModel(status="Error", message=f"{exc}").dict(), status_code=404)
11+
return JSONResponse(
12+
content=StatusResponseModel(status="Error", message=exc.en, ru=exc.ru).model_dump(), status_code=404
13+
)
1214

1315

1416
@app.exception_handler(Forbidden)
1517
async def forbidden_handler(req: starlette.requests.Request, exc: Forbidden):
16-
return JSONResponse(content=StatusResponseModel(status="Forbidden", message=f"{exc}").dict(), status_code=403)
18+
return JSONResponse(
19+
content=StatusResponseModel(status="Forbidden", message=exc.en, ru=exc.ru).model_dump(), status_code=403
20+
)
1721

1822

1923
@app.exception_handler(AlreadyExists)
2024
async def already_exists_handler(req: starlette.requests.Request, exc: AlreadyExists):
21-
return JSONResponse(content=StatusResponseModel(status="Already exists", message=f"{exc}").dict(), status_code=409)
25+
return JSONResponse(
26+
content=StatusResponseModel(status="Already exists", message=exc.en, ru=exc.ru).model_dump(), status_code=409
27+
)

userdata_api/routes/param.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,4 @@ async def delete_param(
111111
raise ObjectNotFound(Param, id)
112112
res.is_deleted = True
113113
db.session.commit()
114-
return StatusResponseModel(status="Success", message="Param deleted")
114+
return StatusResponseModel(status="Success", message="Param deleted", ru="Параметр удален")

userdata_api/routes/source.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,4 @@ async def delete_source(
9090
:return: None
9191
"""
9292
Source.delete(id, session=db.session)
93-
return StatusResponseModel(status="Success", message="Source deleted")
93+
return StatusResponseModel(status="Success", message="Source deleted", ru="Источник удален")

userdata_api/routes/user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,4 @@ async def update_user(
6363
:return:
6464
"""
6565
await patch(new_info, id, user)
66-
return StatusResponseModel(status='Success', message='User patch succeeded')
66+
return StatusResponseModel(status='Success', message='User patch succeeded', ru="Изменение успешно")

userdata_api/schemas/response_model.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
class StatusResponseModel(Base):
55
status: str
66
message: str
7+
ru: str

0 commit comments

Comments
 (0)