classifier.py 2.16 KB
from typing import Any

from presupuestov1.schema import OrmBaseModel
from pydantic import create_model


class ClasInstitucional(OrmBaseModel):
    entidad: int
    desc_entidad: str | None
    sigla_entidad: str | None

    sector: str | None
    desc_sector: str | None
    sigla_sector: str | None

    subsector: str | None
    desc_subsector: str | None
    sigla_subsector: str | None

    area: str | None
    desc_area: str | None
    sigla_area: str | None

    subarea: str | None
    desc_subarea: str | None
    sigla_subarea: str | None

    gestiones: str | None
    n_gestiones: int | None


# def get_clasdesc(name):
#     return create_model(
#         '_ClasDesc{}'.format(name),
#         **{'gestion': str, 'desc_{}'.format(name): str},
#     )


class _ClasDesc(OrmBaseModel):
    gestion: str
    descripcion: str | None

class ClasBase(OrmBaseModel):
    nivel: str | None
    gestiones: str | None
    n_gestiones: int | None
    n_variaciones: int | None


class ClasObjetos(ClasBase):
    objeto: str
    desc_objeto: str | None
    descripciones: list[_ClasDesc] | None


class ClasFinfun(ClasBase):
    finfun: str
    desc_finfun: str | None
    descripciones: list[_ClasDesc] | None


class ClasActeco(ClasBase):
    acteco: str
    desc_acteco: str | None
    descripciones: list[_ClasDesc] | None


class ClasGeografico(ClasBase):
    ubigeo: str
    desc_ubigeo: str | None
    desc_departamento: str | None
    municipio_ubigeo: int | None
    descripciones: list[_ClasDesc] | None


# Ingresos

class ClasOrganismos(OrmBaseModel):
    organismo: int
    desc_organismo: str | None
    sigla_organismo: str | None

    organismo_grupo: int | None
    desc_organismo_grupo: str | None
    sigla_organismo_grupo: str | None

    organismo_subgrupo: int | None
    desc_organismo_subgrupo: str | None
    sigla_organismo_subgrupo: str | None

    gestiones: str | None
    n_gestiones: int | None


class ClasRubros(ClasBase):
    rubro: str
    desc_rubro: str | None
    descripciones: list[_ClasDesc] | None


class ClasFuentes(ClasBase):
    fuente: str
    desc_fuente: str | None
    grupo_fuente: str
    desc_grupo_fuente: str | None
    descripciones: list[_ClasDesc] | None