From 5e000d6f3dc66ec21ba7e252b2cbde1b4613b793 Mon Sep 17 00:00:00 2001 From: martsforever Date: Sun, 24 Aug 2025 11:15:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=AF=8F=E4=B8=AAmodel=E9=83=BD?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E6=8C=89=E9=9C=80=E6=8E=A7=E5=88=B6=E8=87=AA?= =?UTF-8?q?=E5=B7=B1=E6=98=AF=E5=90=A6=E9=9C=80=E8=A6=81=E7=BA=A7=E8=81=94?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=87=BA=E6=9D=A5=E5=85=B3=E8=81=94=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/model/ApproveModel.py | 8 +++++--- app/model/OrgModel.py | 5 ++++- app/model/ProjectModel.py | 5 ++++- app/model/ReimburseModel.py | 27 ++++++++++++++++++--------- app/model/RelProjUserModel.py | 13 +++++++++---- app/model/UserModel.py | 17 +++++++++++++---- 6 files changed, 53 insertions(+), 22 deletions(-) diff --git a/app/model/ApproveModel.py b/app/model/ApproveModel.py index bdc1ba0..22d7f33 100644 --- a/app/model/ApproveModel.py +++ b/app/model/ApproveModel.py @@ -34,7 +34,10 @@ class ApproveModel(PublicApproveModel, table=True): @computed_field @property def project(self) -> Optional[ProjectModel]: - return self.proj_rel + try: + return self.proj_rel + except: + return None @project.setter def project(self, value: Optional[ProjectModel]) -> None: @@ -45,7 +48,6 @@ ApproveService = create_model_service( Cls=ApproveModel, custom_query=lambda: select(ApproveModel) .options( - selectinload(ApproveModel.proj_rel). - selectinload(ProjectModel.leader) + selectinload(ApproveModel.proj_rel) ) ) diff --git a/app/model/OrgModel.py b/app/model/OrgModel.py index e67b933..c73b66b 100644 --- a/app/model/OrgModel.py +++ b/app/model/OrgModel.py @@ -43,7 +43,10 @@ class OrgModel(BasicModel, table=True): @computed_field @property def parent_name(self) -> Optional[str]: - return self.parent.name if self.parent else None + try: + return self.parent.name if self.parent else None + except: + return None @parent_name.setter def parent_name(self, value: Optional[str]) -> None: diff --git a/app/model/ProjectModel.py b/app/model/ProjectModel.py index 62de726..bd840f4 100644 --- a/app/model/ProjectModel.py +++ b/app/model/ProjectModel.py @@ -39,7 +39,10 @@ class ProjectModel(BasicModel, table=True): @computed_field @property def leader_name(self) -> Optional[str]: - return self.leader.full_name if self.leader else None + try: + return self.leader.full_name if self.leader else None + except: + return None @leader_name.setter def leader_name(self, value: Optional[str]) -> None: diff --git a/app/model/ReimburseModel.py b/app/model/ReimburseModel.py index b85f213..505e796 100644 --- a/app/model/ReimburseModel.py +++ b/app/model/ReimburseModel.py @@ -40,7 +40,10 @@ class ReimburseModel(BasicModel, table=True): @computed_field @property def project(self) -> Optional[ProjectModel]: - return self.proj_rel + try: + return self.proj_rel + except: + return None @project.setter def project(self, value: Optional[ProjectModel]) -> None: @@ -59,7 +62,10 @@ class ReimburseModel(BasicModel, table=True): @computed_field @property def travel_list(self) -> Optional[List["ReimburseTravelModel"]]: - return self.travel_list_rel + try: + return self.travel_list_rel + except: + return None @travel_list.setter def travel_list(self, value: Optional[List["ReimburseTravelModel"]]) -> None: @@ -77,7 +83,10 @@ class ReimburseModel(BasicModel, table=True): @computed_field @property def other_list(self) -> Optional[List["ReimburseOtherModel"]]: - return self.other_list_rel + try: + return self.other_list_rel + except: + return None @other_list.setter def other_list(self, value: Optional[List["ReimburseOtherModel"]]) -> None: @@ -119,7 +128,10 @@ class ReimburseModel(BasicModel, table=True): @computed_field @property def approve(self) -> Optional[ApproveModel]: - return self.approve_rel + try: + return self.approve_rel + except: + return None @approve.setter def approve(self, value: Optional[ApproveModel]) -> None: @@ -130,14 +142,11 @@ ReimburseService = create_model_service( Cls=ReimburseModel, custom_query=lambda: select(ReimburseModel) .options( - selectinload(ReimburseModel.proj_rel). - selectinload(ProjectModel.leader), + selectinload(ReimburseModel.proj_rel), selectinload(ReimburseModel.travel_list_rel), selectinload(ReimburseModel.other_list_rel), - selectinload(ReimburseModel.approve_rel). - selectinload(ApproveModel.proj_rel). - selectinload(ProjectModel.leader), + selectinload(ReimburseModel.approve_rel) ) ) diff --git a/app/model/RelProjUserModel.py b/app/model/RelProjUserModel.py index 45132df..369507d 100644 --- a/app/model/RelProjUserModel.py +++ b/app/model/RelProjUserModel.py @@ -34,7 +34,10 @@ class RelProjUserModel(BasicModel, table=True): @computed_field @property def user(self) -> Optional[UserServiceModel]: - return self.user_rel + try: + return self.user_rel + except: + return None @user.setter def user(self, value: Optional[UserServiceModel]) -> None: @@ -60,7 +63,10 @@ class RelProjUserModel(BasicModel, table=True): @computed_field @property def project(self) -> Optional[ProjectModel]: - return self.proj_rel + try: + return self.proj_rel + except: + return None @project.setter def project(self, value: Optional[ProjectModel]) -> None: @@ -72,8 +78,7 @@ RelProjUserService = create_model_service( custom_query=lambda: select(RelProjUserModel) .options( selectinload(RelProjUserModel.user_rel). - selectinload(UserServiceModel.position). - selectinload(PosModel.organization) + selectinload(UserServiceModel.position) ) .options( selectinload(RelProjUserModel.proj_rel). diff --git a/app/model/UserModel.py b/app/model/UserModel.py index bf53559..811fafb 100644 --- a/app/model/UserModel.py +++ b/app/model/UserModel.py @@ -58,7 +58,10 @@ class UserServiceModel(PublicUser, table=True): @computed_field @property def pos(self) -> Optional[PosModel]: - return self.position + try: + return self.position + except: + return None @pos.setter def pos(self, value: Optional[PosModel]) -> None: @@ -67,7 +70,10 @@ class UserServiceModel(PublicUser, table=True): @computed_field @property def pos_name(self) -> Optional[str]: - return self.position.name if self.position else None + try: + return self.position.name if self.position else None + except: + return None @pos_name.setter def pos_name(self, value: Optional[str]) -> None: @@ -76,8 +82,11 @@ class UserServiceModel(PublicUser, table=True): @computed_field @property def org_name(self) -> Optional[str]: - organization = self.position.organization if self.position else None - return organization.name if organization else None + try: + organization = self.position.organization if self.position else None + return organization.name if organization else None + except: + return None @org_name.setter def org_name(self, value: Optional[str]) -> None: