fix: add POST endpoints for tasks/supports/meatings
This commit is contained in:
@@ -214,6 +214,89 @@ def milestone_items(milestone_id: int, db: Session = Depends(get_db)):
|
||||
return {"tasks": tasks, "supports": supports, "meetings": meetings}
|
||||
|
||||
|
||||
@router.post("/milestones/{milestone_id}/tasks", status_code=status.HTTP_201_CREATED, tags=["Milestones"])
|
||||
def create_milestone_task(milestone_id: int, issue_data: dict, db: Session = Depends(get_db), current_user: models.User = Depends(get_current_user_or_apikey)):
|
||||
ms = db.query(MilestoneModel).filter(MilestoneModel.id == milestone_id).first()
|
||||
if not ms:
|
||||
raise HTTPException(status_code=404, detail="Milestone not found")
|
||||
|
||||
# Check if milestone is progressing
|
||||
if ms.status and hasattr(ms.status, 'value') and ms.status.value == "progressing":
|
||||
raise HTTPException(status_code=400, detail="Cannot add items to a milestone that is in_progress")
|
||||
|
||||
# Get project_id from milestone
|
||||
project_id = ms.project_id
|
||||
|
||||
issue = models.Issue(
|
||||
title=issue_data.get("title"),
|
||||
description=issue_data.get("description"),
|
||||
issue_type="task",
|
||||
status=models.IssueStatus.OPEN,
|
||||
priority=models.IssuePriority.MEDIUM,
|
||||
project_id=project_id,
|
||||
milestone_id=milestone_id,
|
||||
reporter_id=current_user.id,
|
||||
)
|
||||
db.add(issue)
|
||||
db.commit()
|
||||
db.refresh(issue)
|
||||
return issue
|
||||
|
||||
|
||||
@router.post("/milestones/{milestone_id}/supports", status_code=status.HTTP_201_CREATED, tags=["Milestones"])
|
||||
def create_milestone_support(milestone_id: int, issue_data: dict, db: Session = Depends(get_db), current_user: models.User = Depends(get_current_user_or_apikey)):
|
||||
ms = db.query(MilestoneModel).filter(MilestoneModel.id == milestone_id).first()
|
||||
if not ms:
|
||||
raise HTTPException(status_code=404, detail="Milestone not found")
|
||||
|
||||
if ms.status and hasattr(ms.status, 'value') and ms.status.value == "progressing":
|
||||
raise HTTPException(status_code=400, detail="Cannot add items to a milestone that is in_progress")
|
||||
|
||||
project_id = ms.project_id
|
||||
|
||||
issue = models.Issue(
|
||||
title=issue_data.get("title"),
|
||||
description=issue_data.get("description"),
|
||||
issue_type="support",
|
||||
status=models.IssueStatus.OPEN,
|
||||
priority=models.IssuePriority.MEDIUM,
|
||||
project_id=project_id,
|
||||
milestone_id=milestone_id,
|
||||
reporter_id=current_user.id,
|
||||
)
|
||||
db.add(issue)
|
||||
db.commit()
|
||||
db.refresh(issue)
|
||||
return issue
|
||||
|
||||
|
||||
@router.post("/milestones/{milestone_id}/meetings", status_code=status.HTTP_201_CREATED, tags=["Milestones"])
|
||||
def create_milestone_meeting(milestone_id: int, issue_data: dict, db: Session = Depends(get_db), current_user: models.User = Depends(get_current_user_or_apikey)):
|
||||
ms = db.query(MilestoneModel).filter(MilestoneModel.id == milestone_id).first()
|
||||
if not ms:
|
||||
raise HTTPException(status_code=404, detail="Milestone not found")
|
||||
|
||||
if ms.status and hasattr(ms.status, 'value') and ms.status.value == "progressing":
|
||||
raise HTTPException(status_code=400, detail="Cannot add items to a milestone that is in_progress")
|
||||
|
||||
project_id = ms.project_id
|
||||
|
||||
issue = models.Issue(
|
||||
title=issue_data.get("title"),
|
||||
description=issue_data.get("description"),
|
||||
issue_type="meeting",
|
||||
status=models.IssueStatus.OPEN,
|
||||
priority=models.IssuePriority.MEDIUM,
|
||||
project_id=project_id,
|
||||
milestone_id=milestone_id,
|
||||
reporter_id=current_user.id,
|
||||
)
|
||||
db.add(issue)
|
||||
db.commit()
|
||||
db.refresh(issue)
|
||||
return issue
|
||||
|
||||
|
||||
# ============ Notifications ============
|
||||
|
||||
class NotificationResponse(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user