Saltar a contenido

types

app.common.types

Algunos tipos comunes.

Se crean tipos especiales de variables que se extienden de pydantic, sirven como ejemplo para construir tipos de datos personalizados y ofrecer un validador alterno.

Tipos de datos nuevos en este módulo:

  • Latitude
  • Longitude
  • Coordinates
  • Email
  • Phone
  • DefaultFieldList
  • DefaultSearchDto
  • DefaultDeleteDto
  • DefaultMetaDto

Para más información, te recomendamos leer la documentación del Proyecto.

ExtrictBaseModel

Bases: BaseModel

Esta clase se extiende de BaseModel(pydantic) y permite definir validaciones extras y restricciones que serán heredadas a las clases, en las cuales se utilice.

Notes

cada clase que se extienda de ExtrictBaseModel:

  • no permite campos extras.
  • permite asignar valores por los alias.
  • valida la asignación de valores según el tipo de dato.
  • es mutable y admite la asignación de elementos.
  • el valor de la propiedad de los enums, es asignado a las propiedades, esto puede ser útil si se quiere serializar, utilizando model.dict() más tarde.
  • se eliminan los espacios en blanco iniciales y finales de los strings y bytes.

Examples:

from typing import Optional
from pydantic import Field, StrictStr
from app.common.enums import DefaultStatus
from app.common.types import ExtrictBaseModel

...
class LocaleModel(ExtrictBaseModel):
    name: StrictStr = Field(min_length=3, max_length=32)
    code: StrictStr = Field(min_length=2, max_length=5)
    status: Optional[DefaultStatus]

Latitude

Bases: ConstrainedFloat

Define un nuevo tipo de dato: latitude.

Examples:

lat: Latitude

Longitude

Bases: ConstrainedFloat

Define un nuevo tipo de dato: Longitude.

Examples:

long: Longitude

Coordinates

Bases: ExtrictBaseModel

Define un nuevo tipo de dato: Coordinates.

Examples:

my_coord: Coordinates

Email

Bases: ConstrainedStr

Define un nuevo tipo de dato: Email.

Examples:

email: Email

Phone

Bases: ConstrainedStr

Define un nuevo tipo de dato: Phone.

Examples:

phone_number: Phone

DefaultFieldList

Bases: BaseModel

Define una lista de elementos, pero no valida el contenido interno de los mismos.

Notes

para la lista de elmentos:

1
2
3
- cada elemento debe ser unico
- minimo 1 elementos
- maximo 25 elementos

cada elemento de la lista debe tener:

1
2
3
- minimo 3 caracteres
- maximo 25 caracteres
- solo cadenas de caracteres

DefaultSearchDto

Bases: ExtrictBaseModel

Una clase para validar ciertos datos de entrada (request body)

Warning

No realiza ninguna validación de los valores ó tipos de datos, dentro del campo filters_, así como de la cantidad de elementos enviados.

Notes
  • fields: espera el string all ó una lista de elementos (vease DefaultFieldList)
  • limit: un valor entero entre 1 y 500
  • filters: un objeto (diccionario) con restricciones en los nombres de las llaves:
    • minimo 2 caracteres
    • maximo 25 caracteres
    • solo cadenas de caracteres

DefaultDeleteDto

Bases: ExtrictBaseModel

Valida el id interno de cada objeto de la base datos.

Notes

Las clases en python establecen los guiones bajos como atributos privados, asi que se usa un alias.

https://docs.pydantic.dev/1.10/usage/models/#private-model-attributes

DefaultMetaDto

Bases: ExtrictBaseModel

Valida los parametros de la metadata.