classifier.py
3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import time
from typing import List, Any, Optional, Union
from fastapi import APIRouter, Depends, Request, HTTPException, Body
from sqlalchemy.orm import Session
from sqlalchemy import and_, or_
from presupuestov1 import model, schema, constant, schemas, models, search
from aiocache import cached
router_objeto = APIRouter(
prefix='/objeto',
tags=['objeto'],
)
router_acteco = APIRouter(
prefix='/acteco',
tags=['acteco'],
)
router_finfun = APIRouter(
prefix='/finfun',
tags=['finfun'],
)
###############################################################################
# GET
###############################################################################
@router_objeto.get('/clasificador', response_model=List[schemas.classifier.ClasObjetos])
def fetch_object_classifier(db: Session = Depends(model.get_db)):
return _fetch_classifier('objeto', db)
@router_acteco.get('/clasificador', response_model=List[schemas.classifier.ClasActeco])
def fetch_object_classifier(db: Session = Depends(model.get_db)):
return _fetch_classifier('acteco', db)
@router_finfun.get('/clasificador', response_model=List[schemas.classifier.ClasFinfun])
def fetch_object_classifier(db: Session = Depends(model.get_db)):
return _fetch_classifier('finfun', db)
@router_objeto.get('/{object_id}', response_model=schemas.classifier.ClasObjetos)
def fetch_clas(
object_id: str,
db: Session = Depends(model.get_db),
):
ClasObjetos = models.classifier.ClasObjetos
return db.query(ClasObjetos).filter(
ClasObjetos.objeto == '{}.0'.format(object_id)
).one()
@router_objeto.get('/{object_id}/entidades', response_model=List[schemas.treemap.TreemapObjeto])
def fetch_clas(
object_id: str,
db: Session = Depends(model.get_db),
):
Treemap = models.treemap.TreemapObjeto
return models.treemap.get_clas_entities(
[
Treemap.objeto == object_id
], db, query, Treemap, 'entidad'
)
@router_acteco.get('/{acteco_id}', response_model=schemas.classifier.ClasActeco)
def fetch_clas(
acteco_id: str,
db: Session = Depends(model.get_db),
):
ClasActeco = models.classifier.ClasActeco
return db.query(ClasActeco).filter(
ClasActeco.acteco == acteco_id
).one()
@router_acteco.get('/{acteco_id}/entidades', response_model=List[schemas.treemap.TreemapActeco])
def fetch_clas(
acteco_id: str,
db: Session = Depends(model.get_db),
):
Treemap = models.treemap.TreemapActeco
return models.treemap.get_clas_entities(
[
Treemap.acteco == acteco_id
], db, query, Treemap, 'entidad'
)
@router_finfun.get('/{finfun_id}', response_model=schemas.classifier.ClasFinfun)
def fetch_clas(
finfun_id: str,
db: Session = Depends(model.get_db),
):
ClasFinfun = models.classifier.ClasFinfun
return db.query(ClasFinfun).filter(
ClasFinfun.finfun == finfun_id
).one()
@router_finfun.get('/{finfun_id}/entidades', response_model=List[schemas.treemap.TreemapFinFun])
def fetch_clas(
finfun_id: str,
db: Session = Depends(model.get_db),
):
Treemap = models.treemap.TreemapFinFun
return models.treemap.get_clas_entities(
[
Treemap.finfun == finfun_id
], db, query, Treemap, 'entidad'
)
###############################################################################
# priv
###############################################################################
def _fetch_classifier(clas, db):
ClassObject = {
'objeto': models.classifier.ClasObjetos,
'acteco': models.classifier.ClasActeco,
'finfun': models.classifier.ClasFinfun,
}[clas]
return db.query(ClassObject).all()