From 6079d975d38ad3d7ffd7b4aa20ed8a3043b35fb4 Mon Sep 17 00:00:00 2001 From: Andrei Duvakin Date: Sun, 9 Feb 2025 14:22:21 +0500 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=B1?= =?UTF-8?q?=D0=B0=D0=B7=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=94=D0=A2=D0=9E=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=B0=D0=B6=D0=B4=D0=BE=D0=B9=20?= =?UTF-8?q?=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API/app/application/users_repository.py | 11 ++++++++++ .../domain/entities/answer_files_entitity.py | 14 ++++++++++++ .../domain/entities/answer_options_entity.py | 14 ++++++++++++ API/app/domain/entities/appeals_entity.py | 17 ++++++++++++++ .../domain/entities/appeals_topics_entity.py | 11 ++++++++++ API/app/domain/entities/categories_entity.py | 12 ++++++++++ .../domain/entities/course_students_entity.py | 16 ++++++++++++++ API/app/domain/entities/courses_entity.py | 15 +++++++++++++ API/app/domain/entities/lecture_entity.py | 15 +++++++++++++ API/app/domain/entities/lessons_entity.py | 14 ++++++++++++ .../domain/entities/notification_entity.py | 18 +++++++++++++++ .../entities/notification_types_entity.py | 12 ++++++++++ API/app/domain/entities/roles_entity.py | 11 ++++++++++ API/app/domain/entities/step_tasks_entity.py | 14 ++++++++++++ API/app/domain/entities/step_types_entity.py | 12 ++++++++++ API/app/domain/entities/steps_entity.py | 14 ++++++++++++ .../domain/entities/task_answers_entity.py | 18 +++++++++++++++ API/app/domain/entities/task_files_entity.py | 14 ++++++++++++ API/app/domain/entities/task_types_entity.py | 12 ++++++++++ .../domain/entities/test_answers_entity.py | 15 +++++++++++++ API/app/domain/entities/users_entity.py | 22 +++++++++++++++++++ 21 files changed, 301 insertions(+) create mode 100644 API/app/domain/entities/answer_files_entitity.py create mode 100644 API/app/domain/entities/answer_options_entity.py create mode 100644 API/app/domain/entities/appeals_entity.py create mode 100644 API/app/domain/entities/appeals_topics_entity.py create mode 100644 API/app/domain/entities/categories_entity.py create mode 100644 API/app/domain/entities/course_students_entity.py create mode 100644 API/app/domain/entities/courses_entity.py create mode 100644 API/app/domain/entities/lecture_entity.py create mode 100644 API/app/domain/entities/lessons_entity.py create mode 100644 API/app/domain/entities/notification_entity.py create mode 100644 API/app/domain/entities/notification_types_entity.py create mode 100644 API/app/domain/entities/roles_entity.py create mode 100644 API/app/domain/entities/step_tasks_entity.py create mode 100644 API/app/domain/entities/step_types_entity.py create mode 100644 API/app/domain/entities/steps_entity.py create mode 100644 API/app/domain/entities/task_answers_entity.py create mode 100644 API/app/domain/entities/task_files_entity.py create mode 100644 API/app/domain/entities/task_types_entity.py create mode 100644 API/app/domain/entities/test_answers_entity.py create mode 100644 API/app/domain/entities/users_entity.py diff --git a/API/app/application/users_repository.py b/API/app/application/users_repository.py index 4f08e5a..7d211fd 100644 --- a/API/app/application/users_repository.py +++ b/API/app/application/users_repository.py @@ -16,6 +16,17 @@ class UsersRepository: def get_by_login(self, login: str): return self.db.query(User).filter(User.login == login).first() + def change_password(self, user_id: int, old_password: str, new_password: str): + user = self.db.query(User).filter(User.id == user_id).first() + if user.check_password(old_password): + user.set_password(new_password) + self.db.merge(user) + self.db.commit() + self.db.refresh(user) + return user + + return None + def create(self, user: User): self.db.add(user) self.db.commit() diff --git a/API/app/domain/entities/answer_files_entitity.py b/API/app/domain/entities/answer_files_entitity.py new file mode 100644 index 0000000..06bdc5e --- /dev/null +++ b/API/app/domain/entities/answer_files_entitity.py @@ -0,0 +1,14 @@ +from typing import Optional + +from pydantic import BaseModel + + +class AnswerFileEntity(BaseModel): + id: Optional[int] = None + file_path: str + file_title: str + + answer_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/answer_options_entity.py b/API/app/domain/entities/answer_options_entity.py new file mode 100644 index 0000000..9dfd1c3 --- /dev/null +++ b/API/app/domain/entities/answer_options_entity.py @@ -0,0 +1,14 @@ +from typing import Optional + +from pydantic import BaseModel + + +class AnswerOptionEntity(BaseModel): + id: Optional[int] = None + text: str + is_correct: bool + + task_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/appeals_entity.py b/API/app/domain/entities/appeals_entity.py new file mode 100644 index 0000000..852716d --- /dev/null +++ b/API/app/domain/entities/appeals_entity.py @@ -0,0 +1,17 @@ +import datetime +from typing import Optional + +from pydantic import BaseModel + + +class AppealEntity(BaseModel): + id: Optional[int] = None + message: str + created_date: datetime.datetime + status: str + + topic_id: int + user_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/appeals_topics_entity.py b/API/app/domain/entities/appeals_topics_entity.py new file mode 100644 index 0000000..77ce19f --- /dev/null +++ b/API/app/domain/entities/appeals_topics_entity.py @@ -0,0 +1,11 @@ +from typing import Optional + +from pydantic import BaseModel + + +class AppealTopicEntity(BaseModel): + id: Optional[int] = None + title: str + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/categories_entity.py b/API/app/domain/entities/categories_entity.py new file mode 100644 index 0000000..5fb5442 --- /dev/null +++ b/API/app/domain/entities/categories_entity.py @@ -0,0 +1,12 @@ +from typing import Optional + +from pydantic import BaseModel + + +class CategoryEntity(BaseModel): + id: Optional[int] = None + title: str + description: str + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/course_students_entity.py b/API/app/domain/entities/course_students_entity.py new file mode 100644 index 0000000..f5397af --- /dev/null +++ b/API/app/domain/entities/course_students_entity.py @@ -0,0 +1,16 @@ +import datetime +from typing import Optional + +from pydantic import BaseModel + + +class CourseStudentEntity(BaseModel): + id: Optional[int] = None + enrollment_date: datetime.date + is_finished: bool + + course_id: int + user_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/courses_entity.py b/API/app/domain/entities/courses_entity.py new file mode 100644 index 0000000..1f4c11e --- /dev/null +++ b/API/app/domain/entities/courses_entity.py @@ -0,0 +1,15 @@ +from typing import Optional + +from pydantic import BaseModel + + +class CourseEntity(BaseModel): + id: Optional[int] = None + title: str + description: str + + category_id: int + owner_user_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/lecture_entity.py b/API/app/domain/entities/lecture_entity.py new file mode 100644 index 0000000..a5fc34f --- /dev/null +++ b/API/app/domain/entities/lecture_entity.py @@ -0,0 +1,15 @@ +from typing import Optional + +from pydantic import BaseModel + + +class LectureEntity(BaseModel): + id: Optional[int] = None + text: str + image: Optional[str] + number: int + + step_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/lessons_entity.py b/API/app/domain/entities/lessons_entity.py new file mode 100644 index 0000000..67daea9 --- /dev/null +++ b/API/app/domain/entities/lessons_entity.py @@ -0,0 +1,14 @@ +from typing import Optional + +from pydantic import BaseModel + + +class LessonEntity(BaseModel): + id: Optional[int] = None + title: str + description: str + + course_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/notification_entity.py b/API/app/domain/entities/notification_entity.py new file mode 100644 index 0000000..ab5971a --- /dev/null +++ b/API/app/domain/entities/notification_entity.py @@ -0,0 +1,18 @@ +import datetime +from typing import Optional + +from pydantic import BaseModel + + +class NotificationEntity(BaseModel): + id: Optional[int] = None + text: str + datetime_notification: datetime.datetime + is_read: bool + + user_id: int + type_id: int + course_id: Optional[int] + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/notification_types_entity.py b/API/app/domain/entities/notification_types_entity.py new file mode 100644 index 0000000..907ee95 --- /dev/null +++ b/API/app/domain/entities/notification_types_entity.py @@ -0,0 +1,12 @@ +from typing import Optional + +from pydantic import BaseModel + + +class NotificationTypeEntity(BaseModel): + id: Optional[int] = None + title: str + description: str + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/roles_entity.py b/API/app/domain/entities/roles_entity.py new file mode 100644 index 0000000..84b1ea6 --- /dev/null +++ b/API/app/domain/entities/roles_entity.py @@ -0,0 +1,11 @@ +from typing import Optional + +from pydantic import BaseModel + + +class RoleEntity(BaseModel): + id: Optional[int] = None + title: str + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/step_tasks_entity.py b/API/app/domain/entities/step_tasks_entity.py new file mode 100644 index 0000000..5cce7bb --- /dev/null +++ b/API/app/domain/entities/step_tasks_entity.py @@ -0,0 +1,14 @@ +from typing import Optional + +from pydantic import BaseModel + + +class StepTaskEntity(BaseModel): + id: Optional[int] = None + text: str + + step_id: int + type_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/step_types_entity.py b/API/app/domain/entities/step_types_entity.py new file mode 100644 index 0000000..9b36543 --- /dev/null +++ b/API/app/domain/entities/step_types_entity.py @@ -0,0 +1,12 @@ +from typing import Optional + +from pydantic import BaseModel + + +class StepTypeEntity(BaseModel): + id: Optional[int] = None + title: str + description: str + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/steps_entity.py b/API/app/domain/entities/steps_entity.py new file mode 100644 index 0000000..f9de3dd --- /dev/null +++ b/API/app/domain/entities/steps_entity.py @@ -0,0 +1,14 @@ +from typing import Optional + +from pydantic import BaseModel + + +class StepEntity(BaseModel): + id: Optional[int] = None + title: str + + lesson_id: int + type_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/task_answers_entity.py b/API/app/domain/entities/task_answers_entity.py new file mode 100644 index 0000000..645dfa1 --- /dev/null +++ b/API/app/domain/entities/task_answers_entity.py @@ -0,0 +1,18 @@ +import datetime +from typing import Optional + +from pydantic import BaseModel + + +class TaskAnswerEntity(BaseModel): + id: Optional[int] = None + answer_date: datetime.datetime + text: str + is_current: Optional[bool] + comment: Optional[str] + + user_id: int + task_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/task_files_entity.py b/API/app/domain/entities/task_files_entity.py new file mode 100644 index 0000000..2f0f88c --- /dev/null +++ b/API/app/domain/entities/task_files_entity.py @@ -0,0 +1,14 @@ +from typing import Optional + +from pydantic import BaseModel + + +class TaskFileEntity(BaseModel): + id: Optional[int] = None + file_path: str + file_title: str + + task_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/task_types_entity.py b/API/app/domain/entities/task_types_entity.py new file mode 100644 index 0000000..ba45302 --- /dev/null +++ b/API/app/domain/entities/task_types_entity.py @@ -0,0 +1,12 @@ +from typing import Optional + +from pydantic import BaseModel + + +class TaskTypeEntity(BaseModel): + id: Optional[int] = None + title: str + description: str + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/test_answers_entity.py b/API/app/domain/entities/test_answers_entity.py new file mode 100644 index 0000000..3a75f90 --- /dev/null +++ b/API/app/domain/entities/test_answers_entity.py @@ -0,0 +1,15 @@ +from datetime import datetime +from typing import Optional + +from pydantic import BaseModel + + +class TestAnswerEntity(BaseModel): + id: Optional[int] = None + answer_date: datetime.datetime + + user_id: int + answer_id: int + + class Config: + from_attributes = True diff --git a/API/app/domain/entities/users_entity.py b/API/app/domain/entities/users_entity.py new file mode 100644 index 0000000..f6401e2 --- /dev/null +++ b/API/app/domain/entities/users_entity.py @@ -0,0 +1,22 @@ +import datetime +from typing import Optional + +from pydantic import BaseModel + + +class UserEntity(BaseModel): + id: Optional[int] + first_name: str + last_name: str + patronymic: Optional[str] + gender: str + birthday: datetime.date + registration_date: datetime.datetime + login: str + password: str + email: str + + role_id: int + + class Config: + from_attributes = True