From 9b5a2ce2299c7bac5df6a0ccdd15deac3b7e29e3 Mon Sep 17 00:00:00 2001 From: petrCher <88943157+petrCher@users.noreply.github.com> Date: Tue, 18 Aug 2026 20:16:40 +0300 Subject: [PATCH] added validation when create --- modal_backend/routes/notes.py | 20 ++++++++++---------- modal_backend/utils/services.py | 27 ++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/modal_backend/routes/notes.py b/modal_backend/routes/notes.py index 7b32245..e5c7fe7 100644 --- a/modal_backend/routes/notes.py +++ b/modal_backend/routes/notes.py @@ -20,7 +20,6 @@ NoteStatus, NoteTextGet, NoteTextPost, - NotificationGet, ) from modal_backend.settings import Settings, get_settings from modal_backend.utils.services import NoteService @@ -95,9 +94,7 @@ async def get_note( @note.post("/info", response_model=NoteInfoGet) -async def create_note_info( - note: NoteInfoPost, user=Depends(UnionAuth(scopes=["modal.note.create"])) -) -> NotificationGet: +async def create_note_info(note: NoteInfoPost, user=Depends(UnionAuth(scopes=["modal.note.create"]))) -> NoteInfoGet: """ Создает новую модалку. @@ -107,6 +104,7 @@ async def create_note_info( Права: `["modal.note.create"]` """ + await NoteService.validate_note(db, note=note) new_note = Note.create( session=db.session, type_id=NoteTypeEnum.INFO, @@ -120,7 +118,7 @@ async def create_note_info( @note.post("/rating", response_model=NoteRatingGet) async def create_note_rating( note: NoteRatingPost, user=Depends(UnionAuth(scopes=["modal.note.create"])) -) -> NotificationGet: +) -> NoteRatingGet: """ Создает новую модалку. @@ -130,6 +128,7 @@ async def create_note_rating( Права: `["modal.note.create"]` """ + await NoteService.validate_note(db, note=note) new_note = Note.create( session=db.session, type_id=NoteTypeEnum.RATING, @@ -141,9 +140,7 @@ async def create_note_rating( @note.post("/text", response_model=NoteTextGet) -async def create_note_text( - note: NoteTextPost, user=Depends(UnionAuth(scopes=["modal.note.create"])) -) -> NotificationGet: +async def create_note_text(note: NoteTextPost, user=Depends(UnionAuth(scopes=["modal.note.create"]))) -> NoteTextGet: """ Создает новую модалку. @@ -153,6 +150,7 @@ async def create_note_text( Права: `["modal.note.create"]` """ + await NoteService.validate_note(db, note=note) new_note = Note.create( session=db.session, type_id=NoteTypeEnum.TEXT, @@ -166,7 +164,7 @@ async def create_note_text( @note.post("/choice", response_model=NoteChoiceGet) async def create_note_choice( note: NoteChoicePost, user=Depends(UnionAuth(scopes=["modal.note.create"])) -) -> NotificationGet: +) -> NoteChoiceGet: """ Создает новую модалку. @@ -176,6 +174,7 @@ async def create_note_choice( Права: `["modal.note.create"]` """ + await NoteService.validate_note(db, note=note) new_note = Note.create( session=db.session, type_id=NoteTypeEnum.CHOICE, @@ -189,7 +188,7 @@ async def create_note_choice( @note.post("/image", response_model=NoteImageGet) async def create_note_images( note: NoteImagePost, user=Depends(UnionAuth(scopes=["modal.note.create"])) -) -> NotificationGet: +) -> NoteImageGet: """ Создает новую модалку. @@ -199,6 +198,7 @@ async def create_note_images( Права: `["modal.note.create"]` """ + await NoteService.validate_note(db, note=note) new_note = Note.create( session=db.session, type_id=NoteTypeEnum.IMAGE, diff --git a/modal_backend/utils/services.py b/modal_backend/utils/services.py index f77c8b0..a65285d 100644 --- a/modal_backend/utils/services.py +++ b/modal_backend/utils/services.py @@ -1,11 +1,20 @@ from datetime import datetime, timezone +from typing import Union from requests import Session from modal_backend.exceptions import AlreadyExists, ForbiddenAction, ObjectNotFound from modal_backend.models.db import Group, ModalStatus, Note, Service from modal_backend.schemas.base import StatusResponseModel -from modal_backend.schemas.models import GroupPost, ServicePost +from modal_backend.schemas.models import ( + GroupPost, + NoteChoicePost, + NoteImagePost, + NoteInfoPost, + NoteRatingPost, + NoteTextPost, + ServicePost, +) class NoteService: @@ -13,6 +22,22 @@ class NoteService: Сервис для работы с логикой Notifications и базой данных """ + @classmethod + async def validate_note( + cls, db: Session, note: Union[NoteInfoPost, NoteRatingPost, NoteTextPost, NoteChoicePost, NoteImagePost] + ): + """Валидация полей при создании note""" + if isinstance(note, NoteInfoPost): + pass + elif isinstance(note, NoteRatingPost): + pass + elif isinstance(note, NoteTextPost): + pass + elif isinstance(note, NoteChoicePost): + pass + else: # NoteImagePost there + pass + @classmethod async def get_notes_by_filters( cls,