diff --git a/app/api/routers/misc.py b/app/api/routers/misc.py index 5454ccf..d60f99a 100644 --- a/app/api/routers/misc.py +++ b/app/api/routers/misc.py @@ -107,16 +107,28 @@ def list_activity(entity_type: str = None, entity_id: int = None, user_id: int = @router.post("/milestones", response_model=schemas.MilestoneResponse, status_code=status.HTTP_201_CREATED, tags=["Milestones"]) def create_milestone(ms: schemas.MilestoneCreate, db: Session = Depends(get_db), current_user: models.User = Depends(get_current_user_or_apikey)): + import json # Generate milestone_code: projCode:{i:05x} project = db.query(models.Project).filter(models.Project.id == ms.project_id).first() - project_code = project.project_code if project else f"P{ms.project_id}" + project_code = project.project_code if project and project.project_code else f"P{ms.project_id}" # Get max milestone number for this project max_ms = db.query(MilestoneModel).filter(MilestoneModel.project_id == ms.project_id).order_by(MilestoneModel.id.desc()).first() next_num = (max_ms.id + 1) if max_ms else 1 milestone_code = f"{project_code}:{next_num:05x}" - db_ms = MilestoneModel(**ms.model_dump()) + data = ms.model_dump() + # Serialize list fields to JSON strings + if data.get("depend_on_milestones"): + data["depend_on_milestones"] = json.dumps(data["depend_on_milestones"]) + else: + data["depend_on_milestones"] = None + if data.get("depend_on_tasks"): + data["depend_on_tasks"] = json.dumps(data["depend_on_tasks"]) + else: + data["depend_on_tasks"] = None + + db_ms = MilestoneModel(**data) db_ms.milestone_code = milestone_code db.add(db_ms) db.commit()