feat: 每个model都可以按需控制自己是否需要级联查询出来关联信息
This commit is contained in:
@@ -34,7 +34,10 @@ class ApproveModel(PublicApproveModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def project(self) -> Optional[ProjectModel]:
|
def project(self) -> Optional[ProjectModel]:
|
||||||
|
try:
|
||||||
return self.proj_rel
|
return self.proj_rel
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@project.setter
|
@project.setter
|
||||||
def project(self, value: Optional[ProjectModel]) -> None:
|
def project(self, value: Optional[ProjectModel]) -> None:
|
||||||
@@ -45,7 +48,6 @@ ApproveService = create_model_service(
|
|||||||
Cls=ApproveModel,
|
Cls=ApproveModel,
|
||||||
custom_query=lambda: select(ApproveModel)
|
custom_query=lambda: select(ApproveModel)
|
||||||
.options(
|
.options(
|
||||||
selectinload(ApproveModel.proj_rel).
|
selectinload(ApproveModel.proj_rel)
|
||||||
selectinload(ProjectModel.leader)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -43,7 +43,10 @@ class OrgModel(BasicModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def parent_name(self) -> Optional[str]:
|
def parent_name(self) -> Optional[str]:
|
||||||
|
try:
|
||||||
return self.parent.name if self.parent else None
|
return self.parent.name if self.parent else None
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@parent_name.setter
|
@parent_name.setter
|
||||||
def parent_name(self, value: Optional[str]) -> None:
|
def parent_name(self, value: Optional[str]) -> None:
|
||||||
|
|||||||
@@ -39,7 +39,10 @@ class ProjectModel(BasicModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def leader_name(self) -> Optional[str]:
|
def leader_name(self) -> Optional[str]:
|
||||||
|
try:
|
||||||
return self.leader.full_name if self.leader else None
|
return self.leader.full_name if self.leader else None
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@leader_name.setter
|
@leader_name.setter
|
||||||
def leader_name(self, value: Optional[str]) -> None:
|
def leader_name(self, value: Optional[str]) -> None:
|
||||||
|
|||||||
@@ -40,7 +40,10 @@ class ReimburseModel(BasicModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def project(self) -> Optional[ProjectModel]:
|
def project(self) -> Optional[ProjectModel]:
|
||||||
|
try:
|
||||||
return self.proj_rel
|
return self.proj_rel
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@project.setter
|
@project.setter
|
||||||
def project(self, value: Optional[ProjectModel]) -> None:
|
def project(self, value: Optional[ProjectModel]) -> None:
|
||||||
@@ -59,7 +62,10 @@ class ReimburseModel(BasicModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def travel_list(self) -> Optional[List["ReimburseTravelModel"]]:
|
def travel_list(self) -> Optional[List["ReimburseTravelModel"]]:
|
||||||
|
try:
|
||||||
return self.travel_list_rel
|
return self.travel_list_rel
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@travel_list.setter
|
@travel_list.setter
|
||||||
def travel_list(self, value: Optional[List["ReimburseTravelModel"]]) -> None:
|
def travel_list(self, value: Optional[List["ReimburseTravelModel"]]) -> None:
|
||||||
@@ -77,7 +83,10 @@ class ReimburseModel(BasicModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def other_list(self) -> Optional[List["ReimburseOtherModel"]]:
|
def other_list(self) -> Optional[List["ReimburseOtherModel"]]:
|
||||||
|
try:
|
||||||
return self.other_list_rel
|
return self.other_list_rel
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@other_list.setter
|
@other_list.setter
|
||||||
def other_list(self, value: Optional[List["ReimburseOtherModel"]]) -> None:
|
def other_list(self, value: Optional[List["ReimburseOtherModel"]]) -> None:
|
||||||
@@ -119,7 +128,10 @@ class ReimburseModel(BasicModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def approve(self) -> Optional[ApproveModel]:
|
def approve(self) -> Optional[ApproveModel]:
|
||||||
|
try:
|
||||||
return self.approve_rel
|
return self.approve_rel
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@approve.setter
|
@approve.setter
|
||||||
def approve(self, value: Optional[ApproveModel]) -> None:
|
def approve(self, value: Optional[ApproveModel]) -> None:
|
||||||
@@ -130,14 +142,11 @@ ReimburseService = create_model_service(
|
|||||||
Cls=ReimburseModel,
|
Cls=ReimburseModel,
|
||||||
custom_query=lambda: select(ReimburseModel)
|
custom_query=lambda: select(ReimburseModel)
|
||||||
.options(
|
.options(
|
||||||
selectinload(ReimburseModel.proj_rel).
|
selectinload(ReimburseModel.proj_rel),
|
||||||
selectinload(ProjectModel.leader),
|
|
||||||
|
|
||||||
selectinload(ReimburseModel.travel_list_rel),
|
selectinload(ReimburseModel.travel_list_rel),
|
||||||
selectinload(ReimburseModel.other_list_rel),
|
selectinload(ReimburseModel.other_list_rel),
|
||||||
|
|
||||||
selectinload(ReimburseModel.approve_rel).
|
selectinload(ReimburseModel.approve_rel)
|
||||||
selectinload(ApproveModel.proj_rel).
|
|
||||||
selectinload(ProjectModel.leader),
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -34,7 +34,10 @@ class RelProjUserModel(BasicModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def user(self) -> Optional[UserServiceModel]:
|
def user(self) -> Optional[UserServiceModel]:
|
||||||
|
try:
|
||||||
return self.user_rel
|
return self.user_rel
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@user.setter
|
@user.setter
|
||||||
def user(self, value: Optional[UserServiceModel]) -> None:
|
def user(self, value: Optional[UserServiceModel]) -> None:
|
||||||
@@ -60,7 +63,10 @@ class RelProjUserModel(BasicModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def project(self) -> Optional[ProjectModel]:
|
def project(self) -> Optional[ProjectModel]:
|
||||||
|
try:
|
||||||
return self.proj_rel
|
return self.proj_rel
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@project.setter
|
@project.setter
|
||||||
def project(self, value: Optional[ProjectModel]) -> None:
|
def project(self, value: Optional[ProjectModel]) -> None:
|
||||||
@@ -72,8 +78,7 @@ RelProjUserService = create_model_service(
|
|||||||
custom_query=lambda: select(RelProjUserModel)
|
custom_query=lambda: select(RelProjUserModel)
|
||||||
.options(
|
.options(
|
||||||
selectinload(RelProjUserModel.user_rel).
|
selectinload(RelProjUserModel.user_rel).
|
||||||
selectinload(UserServiceModel.position).
|
selectinload(UserServiceModel.position)
|
||||||
selectinload(PosModel.organization)
|
|
||||||
)
|
)
|
||||||
.options(
|
.options(
|
||||||
selectinload(RelProjUserModel.proj_rel).
|
selectinload(RelProjUserModel.proj_rel).
|
||||||
|
|||||||
@@ -58,7 +58,10 @@ class UserServiceModel(PublicUser, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def pos(self) -> Optional[PosModel]:
|
def pos(self) -> Optional[PosModel]:
|
||||||
|
try:
|
||||||
return self.position
|
return self.position
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@pos.setter
|
@pos.setter
|
||||||
def pos(self, value: Optional[PosModel]) -> None:
|
def pos(self, value: Optional[PosModel]) -> None:
|
||||||
@@ -67,7 +70,10 @@ class UserServiceModel(PublicUser, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def pos_name(self) -> Optional[str]:
|
def pos_name(self) -> Optional[str]:
|
||||||
|
try:
|
||||||
return self.position.name if self.position else None
|
return self.position.name if self.position else None
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@pos_name.setter
|
@pos_name.setter
|
||||||
def pos_name(self, value: Optional[str]) -> None:
|
def pos_name(self, value: Optional[str]) -> None:
|
||||||
@@ -76,8 +82,11 @@ class UserServiceModel(PublicUser, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def org_name(self) -> Optional[str]:
|
def org_name(self) -> Optional[str]:
|
||||||
|
try:
|
||||||
organization = self.position.organization if self.position else None
|
organization = self.position.organization if self.position else None
|
||||||
return organization.name if organization else None
|
return organization.name if organization else None
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@org_name.setter
|
@org_name.setter
|
||||||
def org_name(self, value: Optional[str]) -> None:
|
def org_name(self, value: Optional[str]) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user