e8b26487db
GET /assets/{id} never returned task_details (the schema didn't even
declare the field), unlike GET /shots/{id} which already populated it
correctly. This silently broke the asset detail panel's task list -
surfaced while wiring real task data into it on the frontend.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional, List, Dict
|
|
from datetime import datetime
|
|
|
|
from models.asset import AssetCategory, AssetStatus
|
|
from models.task import TaskType, TaskStatus
|
|
|
|
|
|
class AssetBase(BaseModel):
|
|
name: str = Field(..., min_length=1, max_length=255)
|
|
description: Optional[str] = None
|
|
category: AssetCategory
|
|
status: AssetStatus = AssetStatus.NOT_STARTED
|
|
|
|
|
|
class AssetCreate(AssetBase):
|
|
create_default_tasks: bool = Field(default=True, description="Whether to create default tasks for this asset")
|
|
selected_task_types: Optional[List[str]] = Field(default=None, description="Specific task types to create (if None, uses category defaults)")
|
|
|
|
|
|
class AssetUpdate(BaseModel):
|
|
name: Optional[str] = Field(None, min_length=1, max_length=255)
|
|
description: Optional[str] = None
|
|
category: Optional[AssetCategory] = None
|
|
status: Optional[AssetStatus] = None
|
|
|
|
|
|
class TaskStatusInfo(BaseModel):
|
|
task_type: str # Changed from TaskType enum to str to support custom task types
|
|
status: str # Changed from TaskStatus enum to str to support custom statuses
|
|
task_id: Optional[int] = None
|
|
assigned_user_id: Optional[int] = None
|
|
|
|
|
|
class AssetResponse(AssetBase):
|
|
id: int
|
|
project_id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
# Summary information
|
|
task_count: int = 0
|
|
task_details: List[TaskStatusInfo] = Field(default_factory=list, description="Detailed task information")
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class AssetListResponse(BaseModel):
|
|
id: int
|
|
name: str
|
|
description: Optional[str] = None
|
|
category: AssetCategory
|
|
status: AssetStatus
|
|
project_id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
# Summary information
|
|
task_count: int = 0
|
|
|
|
# Task status information for table display
|
|
task_status: Dict[str, Optional[str]] = Field(default_factory=dict, description="Task status by task type")
|
|
task_details: List[TaskStatusInfo] = Field(default_factory=list, description="Detailed task information")
|
|
|
|
class Config:
|
|
from_attributes = True |