Код: Выделить всё
class ProjectDTO(DB):
__tablename__ = 'projects'
__table_args__ = {'schema': 'postgres'}
id = Column(Integer, primary_key=True)
serial = Column(UUID(as_uuid=True), unique=True, nullable=False, server_default=text('(uuid_generate_v4())'))
team_engineer_serial = Column(UUID(as_uuid=True), ForeignKey('postgres.team.serial'))
team_tester_serial = Column(UUID(as_uuid=True), ForeignKey('postgres.team.serial'))
statuses = relationship('ProjectStatusDTO', back_populates='project', foreign_keys='[ProjectStatusDTO.project_serial]')
team_engineer = relationship('TeamDTO', backref='project_as_engineer', foreign_keys=[team_engineer_serial])
team_tester = relationship('TeamDTO', backref='project_as_tester', foreign_keys=[team_tester_serial])
class ProjectStatusDTO(DB):
__tablename__ = 'project_statuses'
__table_args__ = {'schema': 'postgres'}
id = Column(Integer, primary_key=True)
serial = Column(UUID(as_uuid=True), unique=True, nullable=False, server_default=text('(uuid_generate_v4())'))
project_serial = Column(UUID(as_uuid=True), ForeignKey('postgres.projects.serial'))
name = Column(String(255), nullable=False)
is_initial = Column(Boolean)
project = relationship('ProjectDTO', back_populates='statuses', foreign_keys=[project_serial])
Код: Выделить всё
def _get_project(self, ctx: Context, project_code: str = None, team_engineer_serial: str = None, with_initial_status: bool = False):
if not project_code and not team_engineer_serial:
raise BadRequestError("one of 'project_code' or 'team_engineer_serial' must be provided")
query = ctx.get_db_catalog().query(ProjectDTO)
if project_code:
query = query.filter(ProjectDTO.code == project_code)
else:
query = query.filter(ProjectDTO.team_engineer_serial == team_engineer_serial)
if with_initial_status:
query = query.join(ProjectDTO.statuses).filter(ProjectStatusDTO.is_initial == True)
query = query.options(
joinedload(ProjectDTO.statuses),
joinedload(ProjectDTO.team_engineer)
)
result = query.first()
if not result:
return None
return ProjectEntity().from_dto(result)
Что не так с моей функцией?
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/788 ... ange-event