Fascicoli+Tassonomia+permessi
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
"""
|
||||
Schemi Pydantic per Fascicolo (fascicolazione pratiche).
|
||||
"""
|
||||
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
# ─── Schemi base ──────────────────────────────────────────────────────────────
|
||||
|
||||
class FascicoloCreate(BaseModel):
|
||||
titolo: str = Field(..., min_length=1, max_length=255)
|
||||
numero_pratica: Optional[str] = Field(None, max_length=100)
|
||||
stato: Optional[str] = Field("aperto", pattern=r"^(aperto|chiuso|archiviato)$")
|
||||
categoria: Optional[str] = Field(None, max_length=100)
|
||||
responsabile_id: Optional[uuid.UUID] = None
|
||||
scadenza: Optional[datetime] = None
|
||||
note: Optional[str] = None
|
||||
|
||||
|
||||
class FascicoloUpdate(BaseModel):
|
||||
titolo: Optional[str] = Field(None, min_length=1, max_length=255)
|
||||
numero_pratica: Optional[str] = Field(None, max_length=100)
|
||||
stato: Optional[str] = Field(None, pattern=r"^(aperto|chiuso|archiviato)$")
|
||||
categoria: Optional[str] = Field(None, max_length=100)
|
||||
responsabile_id: Optional[uuid.UUID] = None
|
||||
scadenza: Optional[datetime] = None
|
||||
note: Optional[str] = None
|
||||
|
||||
|
||||
class FascicoloResponse(BaseModel):
|
||||
id: uuid.UUID
|
||||
tenant_id: uuid.UUID
|
||||
titolo: str
|
||||
numero_pratica: Optional[str] = None
|
||||
stato: str
|
||||
categoria: Optional[str] = None
|
||||
responsabile_id: Optional[uuid.UUID] = None
|
||||
scadenza: Optional[datetime] = None
|
||||
note: Optional[str] = None
|
||||
created_by: Optional[uuid.UUID] = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
message_count: int = 0
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
# ─── Messaggi nel fascicolo ───────────────────────────────────────────────────
|
||||
|
||||
class FascicoloMessageItem(BaseModel):
|
||||
"""Riepilogo di un messaggio nel fascicolo."""
|
||||
id: uuid.UUID
|
||||
subject: Optional[str] = None
|
||||
from_address: Optional[str] = None
|
||||
to_addresses: Optional[list[str]] = None
|
||||
direction: str
|
||||
pec_type: str
|
||||
state: str
|
||||
mailbox_id: uuid.UUID
|
||||
received_at: Optional[datetime] = None
|
||||
sent_at: Optional[datetime] = None
|
||||
created_at: datetime
|
||||
added_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
# ─── Operazioni sui messaggi del fascicolo ────────────────────────────────────
|
||||
|
||||
class FascicoloAddMessagesRequest(BaseModel):
|
||||
message_ids: list[uuid.UUID] = Field(..., min_length=1)
|
||||
|
||||
|
||||
class FascicoloRemoveMessagesRequest(BaseModel):
|
||||
message_ids: list[uuid.UUID] = Field(..., min_length=1)
|
||||
|
||||
|
||||
# ─── Lista fascicoli di un messaggio ─────────────────────────────────────────
|
||||
|
||||
class MessageFascicoloSummary(BaseModel):
|
||||
"""Fascicolo sintetico per la vista nel dettaglio messaggio."""
|
||||
id: uuid.UUID
|
||||
titolo: str
|
||||
numero_pratica: Optional[str] = None
|
||||
stato: str
|
||||
categoria: Optional[str] = None
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
Reference in New Issue
Block a user