Added status to the requirements
This commit is contained in:
@@ -14,7 +14,8 @@ from src.models import (
|
||||
RelationshipTypeResponse, RelationshipTypeCreateRequest, RelationshipTypeUpdateRequest,
|
||||
RequirementLinkResponse, RequirementLinkCreateRequest, RequirementSearchResult,
|
||||
RoleResponse, ProjectMemberResponse, UserRoleUpdateRequest, ROLE_DISPLAY_NAMES,
|
||||
CommentResponse, CommentReplyResponse, CommentCreateRequest, ReplyCreateRequest
|
||||
CommentResponse, CommentReplyResponse, CommentCreateRequest, ReplyCreateRequest,
|
||||
RequirementStatusResponse
|
||||
)
|
||||
from src.controller import AuthController
|
||||
from src.config import get_openid, get_settings
|
||||
@@ -22,7 +23,8 @@ from src.database import init_db, close_db, get_db
|
||||
from src.repositories import (
|
||||
RoleRepository, GroupRepository, TagRepository, RequirementRepository,
|
||||
PriorityRepository, ProjectRepository, ValidationStatusRepository, ValidationRepository,
|
||||
RelationshipTypeRepository, RequirementLinkRepository, CommentRepository, ReplyRepository
|
||||
RelationshipTypeRepository, RequirementLinkRepository, CommentRepository, ReplyRepository,
|
||||
RequirementStatusRepository
|
||||
)
|
||||
import logging
|
||||
|
||||
@@ -54,6 +56,13 @@ async def lifespan(app: FastAPI):
|
||||
await session.commit()
|
||||
logger.info("Default roles ensured")
|
||||
|
||||
# Ensure default requirement statuses exist
|
||||
async with AsyncSessionLocal() as session:
|
||||
req_status_repo = RequirementStatusRepository(session)
|
||||
await req_status_repo.ensure_default_statuses_exist()
|
||||
await session.commit()
|
||||
logger.info("Default requirement statuses ensured")
|
||||
|
||||
# Ensure default validation statuses exist
|
||||
async with AsyncSessionLocal() as session:
|
||||
await session.execute(
|
||||
@@ -277,6 +286,23 @@ async def get_priorities(db: AsyncSession = Depends(get_db)):
|
||||
return [PriorityResponse.model_validate(p) for p in priorities]
|
||||
|
||||
|
||||
# ===========================================
|
||||
# Requirement Statuses Endpoints
|
||||
# ===========================================
|
||||
|
||||
@app.get("/api/requirement-statuses", response_model=List[RequirementStatusResponse])
|
||||
async def get_requirement_statuses(db: AsyncSession = Depends(get_db)):
|
||||
"""
|
||||
Get all requirement lifecycle statuses (Draft, Regular, etc.).
|
||||
|
||||
Returns:
|
||||
List of all requirement statuses.
|
||||
"""
|
||||
status_repo = RequirementStatusRepository(db)
|
||||
statuses = await status_repo.get_all()
|
||||
return [RequirementStatusResponse.model_validate(s) for s in statuses]
|
||||
|
||||
|
||||
# ===========================================
|
||||
# Projects Endpoints
|
||||
# ===========================================
|
||||
@@ -803,6 +829,11 @@ def _build_requirement_response(req) -> RequirementResponse:
|
||||
if req.last_editor:
|
||||
last_editor_username = _get_display_name(req.last_editor)
|
||||
|
||||
# Get requirement lifecycle status
|
||||
status_response = None
|
||||
if req.status:
|
||||
status_response = RequirementStatusResponse.model_validate(req.status)
|
||||
|
||||
return RequirementResponse(
|
||||
id=req.id,
|
||||
project_id=req.project_id,
|
||||
@@ -814,6 +845,7 @@ def _build_requirement_response(req) -> RequirementResponse:
|
||||
tag=TagResponse.model_validate(req.tag),
|
||||
priority=req.priority if req.priority else None,
|
||||
groups=[GroupResponse.model_validate(g) for g in req.groups],
|
||||
status=status_response,
|
||||
validation_status=validation_status,
|
||||
validated_by=validated_by,
|
||||
validated_at=validated_at,
|
||||
@@ -966,6 +998,7 @@ async def create_requirement(
|
||||
req_desc=req_data.req_desc,
|
||||
priority_id=req_data.priority_id,
|
||||
group_ids=req_data.group_ids,
|
||||
status_id=req_data.status_id,
|
||||
)
|
||||
|
||||
await db.commit()
|
||||
@@ -1017,6 +1050,7 @@ async def update_requirement(
|
||||
tag_id=req_data.tag_id,
|
||||
priority_id=req_data.priority_id,
|
||||
group_ids=req_data.group_ids,
|
||||
status_id=req_data.status_id,
|
||||
)
|
||||
|
||||
await db.commit()
|
||||
|
||||
Reference in New Issue
Block a user