47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
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
|