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}
|
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 ============
|
# ============ Notifications ============
|
||||||
|
|
||||||
class NotificationResponse(BaseModel):
|
class NotificationResponse(BaseModel):
|
||||||
|
|||||||
Reference in New Issue
Block a user