classifier.py 1.67 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 ClasObjetos(OrmBaseModel):
    nivel: str | None
    objeto: str
    desc_objeto: str | None
    gestiones: str | None
    n_gestiones: int | None
    n_variaciones: int | None
    descripciones: list[get_clasdesc('objeto')] | None


class ClasRubros(OrmBaseModel):
    nivel: str | None
    rubro: str
    desc_rubro: str | None
    gestiones: str | None
    n_gestiones: int | None
    n_variaciones: int | None
    descripciones: list[get_clasdesc('rubro')] | None


class ClasFinfun(OrmBaseModel):
    nivel: str | None
    finfun: str
    desc_finfun: str | None
    gestiones: str | None
    n_gestiones: int | None
    n_variaciones: int | None
    descripciones: list[get_clasdesc('finfun')] | None


class ClasActeco(OrmBaseModel):
    nivel: str | None
    acteco: str
    desc_acteco: str | None
    gestiones: str | None
    n_gestiones: int | None
    n_variaciones: int | None
    descripciones: list[get_clasdesc('acteco')] | None