From 4ec6e9652537576a147fec4cecfa48ebc1115815 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 28 Nov 2025 22:56:51 +0500 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D1=81?= =?UTF-8?q?=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D0=BC=D0=BE=D1=82=D1=80=20=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/domain/entities/lessons.py | 6 +- api/app/domain/models/lessons.py | 2 +- api/app/infrastructure/dependencies.py | 1 - .../CreateLessonModalForm.jsx | 81 ++++++------ .../useCreateLessonModalForm.js | 43 ++++++- .../ViewLessonModalForm/ViewLessonModal.jsx | 85 +++++++++++++ .../ViewLessonModalForm/useViewLessonModal.js | 25 ++++ .../CourseDetailPage/CourseDetailPage.jsx | 119 +++++++++++++++++- .../CourseDetailPage/useCourseDetailPage.js | 39 +++++- web/src/Redux/Slices/lessonsSlice.js | 10 +- 10 files changed, 352 insertions(+), 59 deletions(-) create mode 100644 web/src/Components/Pages/CourseDetailPage/Components/ViewLessonModalForm/ViewLessonModal.jsx create mode 100644 web/src/Components/Pages/CourseDetailPage/Components/ViewLessonModalForm/useViewLessonModal.js diff --git a/api/app/domain/entities/lessons.py b/api/app/domain/entities/lessons.py index df77e43..fe5de9f 100644 --- a/api/app/domain/entities/lessons.py +++ b/api/app/domain/entities/lessons.py @@ -1,6 +1,8 @@ from typing import Optional from pydantic import BaseModel, Field +from app.domain.entities.users import UserRead + class LessonBase(BaseModel): title: str = Field(..., max_length=250) @@ -10,7 +12,7 @@ class LessonBase(BaseModel): class LessonCreate(LessonBase): - course_id: int + pass class LessonUpdate(BaseModel): @@ -25,5 +27,7 @@ class LessonRead(LessonBase): course_id: int creator_id: int + creator: UserRead + class Config: from_attributes = True diff --git a/api/app/domain/models/lessons.py b/api/app/domain/models/lessons.py index 2393bb1..d11ac9d 100644 --- a/api/app/domain/models/lessons.py +++ b/api/app/domain/models/lessons.py @@ -18,6 +18,6 @@ class Lesson(RootTable): creator_id: Mapped[int] = mapped_column(ForeignKey('users.id'), nullable=False) course: Mapped['Course'] = relationship('Course', back_populates='lessons') - creator: Mapped['User'] = relationship('User', back_populates='created_lessons') + creator: Mapped['User'] = relationship('User', back_populates='created_lessons', lazy='joined') files: Mapped[List['LessonFile']] = relationship('LessonFile', back_populates='lesson') diff --git a/api/app/infrastructure/dependencies.py b/api/app/infrastructure/dependencies.py index 601f9fe..9d02695 100644 --- a/api/app/infrastructure/dependencies.py +++ b/api/app/infrastructure/dependencies.py @@ -48,7 +48,6 @@ def require_admin(user: User = Depends(require_auth_user)): def require_teacher(user: User = Depends(require_auth_user)): - print(user.role.title, user.role.title not in [UserRoles.TEACHER, Settings().root_role_name], [UserRoles.TEACHER, Settings().root_role_name]) if user.role.title not in [UserRoles.TEACHER, Settings().root_role_name]: raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail='Ошибка доступа') diff --git a/web/src/Components/Pages/CourseDetailPage/Components/CreateLessonModalForm/CreateLessonModalForm.jsx b/web/src/Components/Pages/CourseDetailPage/Components/CreateLessonModalForm/CreateLessonModalForm.jsx index d844707..d67f996 100644 --- a/web/src/Components/Pages/CourseDetailPage/Components/CreateLessonModalForm/CreateLessonModalForm.jsx +++ b/web/src/Components/Pages/CourseDetailPage/Components/CreateLessonModalForm/CreateLessonModalForm.jsx @@ -1,77 +1,68 @@ import useCreateLessonModalForm from "./useCreateLessonModalForm.js"; import {Button, Form, Input, InputNumber, Modal, Upload} from "antd"; import JoditEditor from "jodit-react"; -import {UploadOutlined} from "@ant-design/icons"; +const {TextArea} = Input; -const CreateLessonModalForm = () => { +const CreateLessonModalForm = ({courseId}) => { const { isModalOpen, handleCancel, + handleOk, form, joditConfig, editorRef, - } = useCreateLessonModalForm(); + isLoading, + } = useCreateLessonModalForm({courseId}); return ( + Отмена + , + , + ]} + destroyOnHidden > -
+ - + - - + + +