Co-authored-by: MENDOZA BALLARDO GAEL RICARDO <gael-meb123@users.noreply.github.com> Co-authored-by: Azareth-Tr <Azareth-Tr@users.noreply.github.com> modificacion de vistas panel admin, login, animaciones y implementacion de mascota
92 lines
3.0 KiB
Python
92 lines
3.0 KiB
Python
from typing import Optional, Literal
|
|
from pydantic import BaseModel, EmailStr
|
|
|
|
|
|
# ── Users ─────────────────────────────────────────────────────────────────────
|
|
class AdminUser(BaseModel):
|
|
id: str
|
|
name: Optional[str] = None
|
|
email: Optional[str] = None
|
|
phone: Optional[str] = None
|
|
role: str = "citizen"
|
|
|
|
|
|
class AdminUserCreate(BaseModel):
|
|
name: str
|
|
password: str
|
|
email: Optional[EmailStr] = None
|
|
phone: Optional[str] = None
|
|
role: Literal["citizen", "driver", "admin"] = "citizen"
|
|
|
|
|
|
class AdminUserUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
email: Optional[EmailStr] = None
|
|
role: Optional[Literal["citizen", "driver", "admin"]] = None
|
|
|
|
|
|
# ── Routes ────────────────────────────────────────────────────────────────────
|
|
class AdminRoute(BaseModel):
|
|
id: str
|
|
name: Optional[str] = None
|
|
truck_id: Optional[int] = None
|
|
turno: Optional[str] = None
|
|
status: str = "pendiente"
|
|
current_position_id: int = 1
|
|
|
|
|
|
class AdminRouteCreate(BaseModel):
|
|
id: str
|
|
name: Optional[str] = None
|
|
truck_id: Optional[int] = None
|
|
turno: Optional[Literal["matutino", "vespertino", "Matutino", "Vespertino"]] = None
|
|
status: Optional[
|
|
Literal["pendiente", "en_ruta", "completada", "diferida", "reasignada"]
|
|
] = "pendiente"
|
|
|
|
|
|
class AdminRouteUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
truck_id: Optional[int] = None
|
|
turno: Optional[Literal["matutino", "vespertino", "Matutino", "Vespertino"]] = None
|
|
status: Optional[
|
|
Literal["pendiente", "en_ruta", "completada", "diferida", "reasignada"]
|
|
] = None
|
|
|
|
|
|
# ── Units (camiones) ──────────────────────────────────────────────────────────
|
|
class AdminUnit(BaseModel):
|
|
id: int
|
|
plate: Optional[str] = None
|
|
status: str = "active"
|
|
|
|
|
|
class AdminUnitCreate(BaseModel):
|
|
id: int
|
|
plate: Optional[str] = None
|
|
status: Literal["active", "inactive", "maintenance"] = "active"
|
|
|
|
|
|
class AdminUnitUpdate(BaseModel):
|
|
plate: Optional[str] = None
|
|
status: Optional[Literal["active", "inactive", "maintenance"]] = None
|
|
|
|
|
|
# ── Drivers ───────────────────────────────────────────────────────────────────
|
|
class AdminDriver(BaseModel):
|
|
id: str
|
|
user_id: str
|
|
user_name: Optional[str] = None
|
|
user_email: Optional[str] = None
|
|
unit_id: Optional[int] = None
|
|
plate: Optional[str] = None
|
|
|
|
|
|
class AdminDriverCreate(BaseModel):
|
|
user_id: str
|
|
unit_id: Optional[int] = None
|
|
|
|
|
|
class AdminDriverUpdate(BaseModel):
|
|
unit_id: Optional[int] = None
|