From 12769b69f85313cdee123c26c065cdb642f5a682 Mon Sep 17 00:00:00 2001 From: rifcrat Date: Sun, 3 May 2026 22:12:31 +0300 Subject: [PATCH 1/2] added update group handler --- modal_backend/routes/groups.py | 15 +++++++++++++++ modal_backend/utils/services.py | 8 +++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/modal_backend/routes/groups.py b/modal_backend/routes/groups.py index 6cededa..2edfb33 100644 --- a/modal_backend/routes/groups.py +++ b/modal_backend/routes/groups.py @@ -45,3 +45,18 @@ async def delete_group(id: int, user=Depends(UnionAuth(scopes=["modal.group.dele Исключение **ObjectNotFound**, если `id` не найден """ return await GroupService.delete_group(db, id) + + +@group.patch("/{id}", response_model=GroupGet) +async def update_group(id: int, group_info: GroupPost, user=Depends(UnionAuth())) -> GroupGet: + """ + Обновляет данные о группе + + Scopes: `["modal.group.update"]` + + Исключение **ObjectNotFound**, если `id` не найден + + Исключение **AlreadyExists**, если изменений нет + """ + group = await GroupService.update_group(db, id, group_info) + return GroupGet.model_validate(group) diff --git a/modal_backend/utils/services.py b/modal_backend/utils/services.py index 6e02860..f0468d7 100644 --- a/modal_backend/utils/services.py +++ b/modal_backend/utils/services.py @@ -3,7 +3,7 @@ from modal_backend.exceptions import AlreadyExists, ObjectNotFound from modal_backend.models.db import Group, ModalStatus, Note, NoteType, Service from modal_backend.schemas.base import StatusResponseModel -from modal_backend.schemas.models import NoteTypePost, NotificationPost +from modal_backend.schemas.models import GroupPost, NoteTypePost, NotificationPost class NoteService: @@ -99,3 +99,9 @@ async def delete_group(cls, db: Session, id: int): return StatusResponseModel( status="Success", message="Group has been successfully deleted", ru="Группа успешно удалена" ) + + @classmethod + async def update_group(cls, db: Session, id: int, group_info: GroupPost): + group = Group.get(session=db.session, id=id) + updated_group = Group.update(group.id, session=db.session, **group_info.model_dump()) + return updated_group From b58a65f37ff5903633c04e63438fcc090078bd60 Mon Sep 17 00:00:00 2001 From: rifcrat Date: Sun, 3 May 2026 23:10:03 +0300 Subject: [PATCH 2/2] fixes --- modal_backend/routes/groups.py | 8 +++++--- modal_backend/utils/services.py | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/modal_backend/routes/groups.py b/modal_backend/routes/groups.py index 2edfb33..48896a5 100644 --- a/modal_backend/routes/groups.py +++ b/modal_backend/routes/groups.py @@ -48,7 +48,9 @@ async def delete_group(id: int, user=Depends(UnionAuth(scopes=["modal.group.dele @group.patch("/{id}", response_model=GroupGet) -async def update_group(id: int, group_info: GroupPost, user=Depends(UnionAuth())) -> GroupGet: +async def update_group( + id: int, group_info: GroupPost, user=Depends(UnionAuth(scopes=["modal.group.update"])) +) -> GroupGet: """ Обновляет данные о группе @@ -58,5 +60,5 @@ async def update_group(id: int, group_info: GroupPost, user=Depends(UnionAuth()) Исключение **AlreadyExists**, если изменений нет """ - group = await GroupService.update_group(db, id, group_info) - return GroupGet.model_validate(group) + updated_group = await GroupService.update_group(db, id, group_info) + return GroupGet.model_validate(updated_group) diff --git a/modal_backend/utils/services.py b/modal_backend/utils/services.py index f0468d7..f14a8ea 100644 --- a/modal_backend/utils/services.py +++ b/modal_backend/utils/services.py @@ -102,6 +102,6 @@ async def delete_group(cls, db: Session, id: int): @classmethod async def update_group(cls, db: Session, id: int, group_info: GroupPost): - group = Group.get(session=db.session, id=id) - updated_group = Group.update(group.id, session=db.session, **group_info.model_dump()) + Group.get(session=db.session, id=id) + updated_group = Group.update(id, session=db.session, **group_info.model_dump()) return updated_group