Prefer complete demo workflow state
This commit is contained in:
@@ -51,12 +51,42 @@ class DemoWorkflowService:
|
||||
|
||||
@staticmethod
|
||||
def _find_existing_project(db: Session) -> Project | None:
|
||||
return (
|
||||
projects = (
|
||||
db.query(Project)
|
||||
.filter(Project.name == DemoWorkflowService.PROJECT_NAME)
|
||||
.filter(Project.status != "deleted")
|
||||
.order_by(Project.created_at.asc())
|
||||
.all()
|
||||
)
|
||||
for project in projects:
|
||||
if DemoWorkflowService._has_complete_demo_state(db, project.id):
|
||||
return project
|
||||
return projects[0] if projects else None
|
||||
|
||||
@staticmethod
|
||||
def _has_complete_demo_state(db: Session, project_id: UUID) -> bool:
|
||||
area = db.query(Area).filter(Area.project_id == project_id).first()
|
||||
reference = (
|
||||
db.query(Dataset)
|
||||
.filter(Dataset.project_id == project_id)
|
||||
.filter(Dataset.dataset_role == "reference")
|
||||
.filter(Dataset.source_name == "fixture")
|
||||
.first()
|
||||
)
|
||||
candidate = (
|
||||
db.query(Dataset)
|
||||
.filter(Dataset.project_id == project_id)
|
||||
.filter(Dataset.dataset_role == "source")
|
||||
.filter(Dataset.source_name == "fixture")
|
||||
.first()
|
||||
)
|
||||
quality_check = (
|
||||
db.query(QualityCheck)
|
||||
.filter(QualityCheck.project_id == project_id)
|
||||
.filter(QualityCheck.check_type == "demo_candidate_vs_reference")
|
||||
.first()
|
||||
)
|
||||
return bool(area and reference and candidate and quality_check)
|
||||
|
||||
@staticmethod
|
||||
def _create_area(db: Session, project_id: UUID) -> Area:
|
||||
|
||||
Reference in New Issue
Block a user