from pydantic import BaseModel from typing import Optional, List from datetime import datetime from app.models.models import NCLevel, NCType from .evidence import Evidence class NonConformityBase(BaseModel): level: NCLevel = NCLevel.MINOR description: str status: str = "open" due_date: Optional[datetime] = None responsible_person: Optional[str] = None responsible_email: Optional[str] = None contractor_id: Optional[int] = None access_hash: Optional[str] = None action_checklist: Optional[List[dict]] = None nc_type: Optional[NCType] = None impact_description: Optional[str] = None closure_description: Optional[str] = None guest_actions: Optional[str] = None parent_id: Optional[int] = None class NonConformityCreate(NonConformityBase): activity_id: int class NonConformityUpdate(BaseModel): due_date: Optional[datetime] = None responsible_person: Optional[str] = None responsible_email: Optional[str] = None contractor_id: Optional[int] = None access_hash: Optional[str] = None action_checklist: Optional[List[dict]] = None nc_type: Optional[NCType] = None impact_description: Optional[str] = None closure_description: Optional[str] = None status: Optional[str] = None guest_actions: Optional[str] = None class NonConformity(NonConformityBase): id: int activity_id: int evidences: List[Evidence] = [] child_ncs: List['NonConformity'] = [] class Config: from_attributes = True