Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- from pydantic import BaseModel, EmailStr, HttpUrl, field_validator
- class Empleado(BaseModel):
- dni: str
- nombre: str
- correo: EmailStr
- carnet: str
- url_foto: HttpUrl
- @field_validator("dni")
- @classmethod
- def validar_dni(cls, valor: str) -> str:
- if not re.fullmatch(r"[A-Za-z0-9]+", valor):
- raise ValueError("El DNI solo puede contener letras y números")
- return valor
- @field_validator("nombre")
- @classmethod
- def validar_nombre(cls, valor: str) -> str:
- # Permite letras, espacios, tildes, ü/Ü y ñ/Ñ.
- if not re.fullmatch(
- r"[A-Za-zÁÉÍÓÚáéíóúÜüÑñ]+(?: [A-Za-zÁÉÍÓÚáéíóúÜüÑñ]+)*",
- valor,
- ):
- raise ValueError(
- "El nombre solo puede contener letras, espacios, tildes y eñes"
- )
- return valor
- @field_validator("carnet")
- @classmethod
- def validar_carnet(cls, valor: str) -> str:
- # Ejemplo válido: AB12345#-
- if not re.fullmatch(r"[A-Za-z]{2}\d{5}#-", valor):
- raise ValueError(
- "El carnet debe contener 2 letras, 5 dígitos y terminar en #-"
- )
- return valor
- @field_validator("url_foto")
- @classmethod
- def validar_url_foto(cls, valor: HttpUrl) -> HttpUrl:
- if valor.scheme != "https":
- raise ValueError("La URL de la foto debe utilizar HTTPS")
- return valor
Advertisement