48 lines
No EOL
2.1 KiB
Python
48 lines
No EOL
2.1 KiB
Python
from pydantic import BaseModel, field_validator, model_validator
|
|
from fastapi import HTTPException, status
|
|
from typing import Optional, ClassVar, Dict
|
|
from decimal import Decimal
|
|
|
|
# Assumindo que a classe Text está disponível no caminho 'actions.validations.text'
|
|
from actions.validations.text import Text
|
|
|
|
|
|
# ----------------------------------------------------
|
|
# Schema base
|
|
# ----------------------------------------------------
|
|
class GEmolumentoSchema(BaseModel):
|
|
emolumento_id: Optional[int] = None # NUMERIC(10,2) PK
|
|
descricao: Optional[str] = None # VARCHAR(260)
|
|
tipo: Optional[str] = None # VARCHAR(1)
|
|
sistema_id: Optional[int] = None # NUMERIC(10,2)
|
|
selo_grupo_id: Optional[int] = None # NUMERIC(10,2)
|
|
reg_averb: Optional[str] = None # VARCHAR(1)
|
|
pre_definido: Optional[str] = None # VARCHAR(1)
|
|
situacao: Optional[str] = None # VARCHAR(1)
|
|
situacao_ri: Optional[str] = None # VARCHAR(1)
|
|
com_reducao: Optional[str] = None # VARCHAR(1)
|
|
motivo_reducao: Optional[str] = None # VARCHAR(120)
|
|
valor_maximo_certidao: Optional[Decimal] = None # NUMERIC(14,3)
|
|
tipo_objetivo: Optional[str] = None # VARCHAR(3)
|
|
modelo_tag: Optional[str] = None # VARCHAR(3)
|
|
codigo_nota_id: Optional[int] = None # NUMERIC(10,2)
|
|
convenio_codhab: Optional[str] = None # VARCHAR(1)
|
|
item_df: Optional[str] = None # VARCHAR(10)
|
|
|
|
# Sanitiza campos de texto
|
|
@field_validator(
|
|
'descricao', 'tipo', 'reg_averb', 'pre_definido', 'situacao',
|
|
'situacao_ri', 'com_reducao', 'motivo_reducao', 'tipo_objetivo',
|
|
'modelo_tag', 'convenio_codhab', 'item_df'
|
|
)
|
|
def sanitize_fields(cls, v):
|
|
if isinstance(v, str) and v:
|
|
return Text.sanitize_input(v)
|
|
return v
|
|
|
|
|
|
# ----------------------------------------------------
|
|
# Schema para localizar um registro pelo ID (GET)
|
|
# ----------------------------------------------------
|
|
class GEmolumentoSistemaIdSchema(BaseModel):
|
|
sistema_id: int |