Showing
13 changed files
with
90 additions
and
61 deletions
| ... | @@ -13,7 +13,8 @@ from starlette_context.middleware import RawContextMiddleware | ... | @@ -13,7 +13,8 @@ from starlette_context.middleware import RawContextMiddleware |
| 13 | from aiocache import caches | 13 | from aiocache import caches |
| 14 | 14 | ||
| 15 | from presupuestov1.routers import ( | 15 | from presupuestov1.routers import ( |
| 16 | - project | 16 | + project, |
| 17 | + entity | ||
| 17 | ) | 18 | ) |
| 18 | 19 | ||
| 19 | 20 | ||
| ... | @@ -38,6 +39,7 @@ app = FastAPI( | ... | @@ -38,6 +39,7 @@ app = FastAPI( |
| 38 | root_path='/api' | 39 | root_path='/api' |
| 39 | ) | 40 | ) |
| 40 | app.include_router(project.router) | 41 | app.include_router(project.router) |
| 42 | +app.include_router(entity.router) | ||
| 41 | 43 | ||
| 42 | 44 | ||
| 43 | @app.on_event('startup') | 45 | @app.on_event('startup') | ... | ... |
| ... | @@ -18,6 +18,7 @@ class ActecoEstado(Base): | ... | @@ -18,6 +18,7 @@ class ActecoEstado(Base): |
| 18 | Index("idx_acteco_estado_gestion", "gestion"), | 18 | Index("idx_acteco_estado_gestion", "gestion"), |
| 19 | Index("idx_acteco_estado_acteco", "acteco"), | 19 | Index("idx_acteco_estado_acteco", "acteco"), |
| 20 | Index("idx_acteco_estado_acteco_gestion", "acteco", "gestion"), | 20 | Index("idx_acteco_estado_acteco_gestion", "acteco", "gestion"), |
| 21 | + {"schema": "web"}, | ||
| 21 | ) | 22 | ) |
| 22 | 23 | ||
| 23 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) | 24 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) |
| ... | @@ -56,6 +57,7 @@ class ActecoEntidad(Base): | ... | @@ -56,6 +57,7 @@ class ActecoEntidad(Base): |
| 56 | Index("idx_acteco_entidad_gestion", "gestion"), | 57 | Index("idx_acteco_entidad_gestion", "gestion"), |
| 57 | Index("idx_acteco_entidad_acteco", "acteco"), | 58 | Index("idx_acteco_entidad_acteco", "acteco"), |
| 58 | Index("idx_acteco_entidad_acteco_entidad", "acteco", "entidad"), | 59 | Index("idx_acteco_entidad_acteco_entidad", "acteco", "entidad"), |
| 60 | + {"schema": "web"}, | ||
| 59 | ) | 61 | ) |
| 60 | 62 | ||
| 61 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) | 63 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) | ... | ... |
| ... | @@ -18,6 +18,7 @@ class ClasInstitucional(Base): | ... | @@ -18,6 +18,7 @@ class ClasInstitucional(Base): |
| 18 | __tablename__ = "clas_institucional" | 18 | __tablename__ = "clas_institucional" |
| 19 | __table_args__ = ( | 19 | __table_args__ = ( |
| 20 | Index("idx_clas_institucional_entidad", "entidad"), | 20 | Index("idx_clas_institucional_entidad", "entidad"), |
| 21 | + {"schema": "web"}, | ||
| 21 | ) | 22 | ) |
| 22 | 23 | ||
| 23 | entidad: Mapped[int] = mapped_column(Integer, primary_key=True) | 24 | entidad: Mapped[int] = mapped_column(Integer, primary_key=True) |
| ... | @@ -48,6 +49,7 @@ class ClasObjetos(Base): | ... | @@ -48,6 +49,7 @@ class ClasObjetos(Base): |
| 48 | __tablename__ = "clas_objetos" | 49 | __tablename__ = "clas_objetos" |
| 49 | __table_args__ = ( | 50 | __table_args__ = ( |
| 50 | Index("idx_clas_objetos_entidad", "objeto"), | 51 | Index("idx_clas_objetos_entidad", "objeto"), |
| 52 | + {"schema": "web"}, | ||
| 51 | ) | 53 | ) |
| 52 | 54 | ||
| 53 | nivel: Mapped[str | None] = mapped_column(Text) | 55 | nivel: Mapped[str | None] = mapped_column(Text) |
| ... | @@ -65,6 +67,7 @@ class ClasRubros(Base): | ... | @@ -65,6 +67,7 @@ class ClasRubros(Base): |
| 65 | __tablename__ = "clas_rubros" | 67 | __tablename__ = "clas_rubros" |
| 66 | __table_args__ = ( | 68 | __table_args__ = ( |
| 67 | Index("idx_clas_rubros_entidad", "rubro"), | 69 | Index("idx_clas_rubros_entidad", "rubro"), |
| 70 | + {"schema": "web"}, | ||
| 68 | ) | 71 | ) |
| 69 | 72 | ||
| 70 | nivel: Mapped[str | None] = mapped_column(Text) | 73 | nivel: Mapped[str | None] = mapped_column(Text) |
| ... | @@ -82,6 +85,7 @@ class ClasFinfun(Base): | ... | @@ -82,6 +85,7 @@ class ClasFinfun(Base): |
| 82 | __tablename__ = "clas_finfun" | 85 | __tablename__ = "clas_finfun" |
| 83 | __table_args__ = ( | 86 | __table_args__ = ( |
| 84 | Index("idx_clas_finfun_entidad", "finfun"), | 87 | Index("idx_clas_finfun_entidad", "finfun"), |
| 88 | + {"schema": "web"}, | ||
| 85 | ) | 89 | ) |
| 86 | 90 | ||
| 87 | nivel: Mapped[str | None] = mapped_column(Text) | 91 | nivel: Mapped[str | None] = mapped_column(Text) |
| ... | @@ -99,6 +103,7 @@ class ClasActeco(Base): | ... | @@ -99,6 +103,7 @@ class ClasActeco(Base): |
| 99 | __tablename__ = "clas_acteco" | 103 | __tablename__ = "clas_acteco" |
| 100 | __table_args__ = ( | 104 | __table_args__ = ( |
| 101 | Index("idx_clas_acteco_entidad", "acteco"), | 105 | Index("idx_clas_acteco_entidad", "acteco"), |
| 106 | + {"schema": "web"}, | ||
| 102 | ) | 107 | ) |
| 103 | 108 | ||
| 104 | nivel: Mapped[str | None] = mapped_column(Text) | 109 | nivel: Mapped[str | None] = mapped_column(Text) | ... | ... |
| ... | @@ -16,6 +16,7 @@ class EntidadesPorFinfun(Base): | ... | @@ -16,6 +16,7 @@ class EntidadesPorFinfun(Base): |
| 16 | __table_args__ = ( | 16 | __table_args__ = ( |
| 17 | Index("idx_entidades_por_finfun_finfun", "finfun"), | 17 | Index("idx_entidades_por_finfun_finfun", "finfun"), |
| 18 | Index("idx_entidades_por_finfun_finfun_nivel", "finfun", "nivel"), | 18 | Index("idx_entidades_por_finfun_finfun_nivel", "finfun", "nivel"), |
| 19 | + {"schema": "web"}, | ||
| 19 | ) | 20 | ) |
| 20 | 21 | ||
| 21 | finfun: Mapped[str] = mapped_column(Text, primary_key=True) | 22 | finfun: Mapped[str] = mapped_column(Text, primary_key=True) |
| ... | @@ -31,6 +32,7 @@ class FinfunEstado(Base): | ... | @@ -31,6 +32,7 @@ class FinfunEstado(Base): |
| 31 | Index("idx_finfun_estado_gestion", "gestion"), | 32 | Index("idx_finfun_estado_gestion", "gestion"), |
| 32 | Index("idx_finfun_estado_finfun", "finfun"), | 33 | Index("idx_finfun_estado_finfun", "finfun"), |
| 33 | Index("idx_finfun_estado_finfun_gestion", "finfun", "gestion"), | 34 | Index("idx_finfun_estado_finfun_gestion", "finfun", "gestion"), |
| 35 | + {"schema": "web"}, | ||
| 34 | ) | 36 | ) |
| 35 | 37 | ||
| 36 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) | 38 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) |
| ... | @@ -69,6 +71,7 @@ class FinfunEntidad(Base): | ... | @@ -69,6 +71,7 @@ class FinfunEntidad(Base): |
| 69 | Index("idx_finfun_entidad_gestion", "gestion"), | 71 | Index("idx_finfun_entidad_gestion", "gestion"), |
| 70 | Index("idx_finfun_entidad_finfun", "finfun"), | 72 | Index("idx_finfun_entidad_finfun", "finfun"), |
| 71 | Index("idx_finfun_entidad_finfun_entidad", "finfun", "entidad"), | 73 | Index("idx_finfun_entidad_finfun_entidad", "finfun", "entidad"), |
| 74 | + {"schema": "web"}, | ||
| 72 | ) | 75 | ) |
| 73 | 76 | ||
| 74 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) | 77 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) | ... | ... |
| ... | @@ -16,6 +16,7 @@ class EntidadesPorObjeto(Base): | ... | @@ -16,6 +16,7 @@ class EntidadesPorObjeto(Base): |
| 16 | __table_args__ = ( | 16 | __table_args__ = ( |
| 17 | Index("idx_entidades_por_objeto_objeto", "objeto"), | 17 | Index("idx_entidades_por_objeto_objeto", "objeto"), |
| 18 | Index("idx_entidades_por_objeto_objeto_nivel", "objeto", "nivel"), | 18 | Index("idx_entidades_por_objeto_objeto_nivel", "objeto", "nivel"), |
| 19 | + {"schema": "web"}, | ||
| 19 | ) | 20 | ) |
| 20 | 21 | ||
| 21 | entidad: Mapped[int] = mapped_column(Integer, primary_key=True) | 22 | entidad: Mapped[int] = mapped_column(Integer, primary_key=True) |
| ... | @@ -31,6 +32,7 @@ class ObjetoEstado(Base): | ... | @@ -31,6 +32,7 @@ class ObjetoEstado(Base): |
| 31 | Index("idx_objeto_estado_gestion", "gestion"), | 32 | Index("idx_objeto_estado_gestion", "gestion"), |
| 32 | Index("idx_objeto_estado_objeto", "objeto"), | 33 | Index("idx_objeto_estado_objeto", "objeto"), |
| 33 | Index("idx_objeto_estado_objeto_gestion", "objeto", "gestion"), | 34 | Index("idx_objeto_estado_objeto_gestion", "objeto", "gestion"), |
| 35 | + {"schema": "web"}, | ||
| 34 | ) | 36 | ) |
| 35 | 37 | ||
| 36 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) | 38 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) |
| ... | @@ -70,6 +72,7 @@ class ObjetoEntidad(Base): | ... | @@ -70,6 +72,7 @@ class ObjetoEntidad(Base): |
| 70 | Index("idx_objeto_entidad_gestion", "gestion"), | 72 | Index("idx_objeto_entidad_gestion", "gestion"), |
| 71 | Index("idx_objeto_entidad_objeto", "objeto"), | 73 | Index("idx_objeto_entidad_objeto", "objeto"), |
| 72 | Index("idx_objeto_entidad_objeto_entidad", "objeto", "entidad"), | 74 | Index("idx_objeto_entidad_objeto_entidad", "objeto", "entidad"), |
| 75 | + {"schema": "web"}, | ||
| 73 | ) | 76 | ) |
| 74 | 77 | ||
| 75 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) | 78 | id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) | ... | ... |
| ... | @@ -16,6 +16,7 @@ class TreemapObjeto(Base): | ... | @@ -16,6 +16,7 @@ class TreemapObjeto(Base): |
| 16 | __table_args__ = ( | 16 | __table_args__ = ( |
| 17 | Index("idx_treemap_objeto_gestion_entidad", "gestion", "entidad"), | 17 | Index("idx_treemap_objeto_gestion_entidad", "gestion", "entidad"), |
| 18 | Index("idx_treemap_objeto_nivel", "nivel"), | 18 | Index("idx_treemap_objeto_nivel", "nivel"), |
| 19 | + {"schema": "web"}, | ||
| 19 | ) | 20 | ) |
| 20 | 21 | ||
| 21 | # PK compuesta inferida para uso ORM | 22 | # PK compuesta inferida para uso ORM |
| ... | @@ -36,6 +37,7 @@ class TreemapFinFun(Base): | ... | @@ -36,6 +37,7 @@ class TreemapFinFun(Base): |
| 36 | __table_args__ = ( | 37 | __table_args__ = ( |
| 37 | Index("idx_treemap_finfun_gestion_entidad", "gestion", "entidad"), | 38 | Index("idx_treemap_finfun_gestion_entidad", "gestion", "entidad"), |
| 38 | Index("idx_treemap_finfun_nivel", "nivel"), | 39 | Index("idx_treemap_finfun_nivel", "nivel"), |
| 40 | + {"schema": "web"}, | ||
| 39 | ) | 41 | ) |
| 40 | 42 | ||
| 41 | # PK compuesta inferida para uso ORM | 43 | # PK compuesta inferida para uso ORM |
| ... | @@ -56,6 +58,7 @@ class TreemapActeco(Base): | ... | @@ -56,6 +58,7 @@ class TreemapActeco(Base): |
| 56 | __table_args__ = ( | 58 | __table_args__ = ( |
| 57 | Index("idx_treemap_acteco_gestion_entidad", "gestion", "entidad"), | 59 | Index("idx_treemap_acteco_gestion_entidad", "gestion", "entidad"), |
| 58 | Index("idx_treemap_acteco_nivel", "nivel"), | 60 | Index("idx_treemap_acteco_nivel", "nivel"), |
| 61 | + {"schema": "web"}, | ||
| 59 | ) | 62 | ) |
| 60 | 63 | ||
| 61 | # PK compuesta inferida para uso ORM | 64 | # PK compuesta inferida para uso ORM | ... | ... |
| ... | @@ -12,8 +12,8 @@ from aiocache import cached | ... | @@ -12,8 +12,8 @@ from aiocache import cached |
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | router = APIRouter( | 14 | router = APIRouter( |
| 15 | - prefix='/entidad', | 15 | + prefix='/entidad', |
| 16 | - tags=['entidad'], | 16 | + tags=['entidad'], |
| 17 | ) | 17 | ) |
| 18 | 18 | ||
| 19 | 19 | ||
| ... | @@ -21,49 +21,49 @@ router = APIRouter( | ... | @@ -21,49 +21,49 @@ router = APIRouter( |
| 21 | # GET | 21 | # GET |
| 22 | ############################################################################### | 22 | ############################################################################### |
| 23 | 23 | ||
| 24 | -@router.get('/{entity_id}', response_model=schemas.classifier.ClasInstitucional) | 24 | +@router.get('/{entity_id:int}', response_model=schemas.classifier.ClasInstitucional) |
| 25 | def fetch_entity( | 25 | def fetch_entity( |
| 26 | - entity_id: int, | 26 | + entity_id: int, |
| 27 | - db: Session = Depends(model.get_db), | 27 | + db: Session = Depends(model.get_db), |
| 28 | ): | 28 | ): |
| 29 | ClasInstitucional = models.classifier.ClasInstitucional | 29 | ClasInstitucional = models.classifier.ClasInstitucional |
| 30 | - return db.query(ClasInstitucional).filter( | 30 | + return db.query(ClasInstitucional).filter( |
| 31 | - ClasInstitucional.entidad == entity_id | 31 | + ClasInstitucional.entidad == entity_id |
| 32 | - ).one() | 32 | + ).one() |
| 33 | 33 | ||
| 34 | 34 | ||
| 35 | @router.get('/clasificador', response_model=List[schemas.classifier.ClasInstitucional]) | 35 | @router.get('/clasificador', response_model=List[schemas.classifier.ClasInstitucional]) |
| 36 | def fetch_classifier( | 36 | def fetch_classifier( |
| 37 | - db: Session = Depends(model.get_db), | 37 | + db: Session = Depends(model.get_db), |
| 38 | ): | 38 | ): |
| 39 | return db.query(models.classifier.ClasInstitucional).all() | 39 | return db.query(models.classifier.ClasInstitucional).all() |
| 40 | 40 | ||
| 41 | 41 | ||
| 42 | -@router.get('/{entity_id}/objetos', response_model=List[schemas.treemap.TreemapObjeto]) | 42 | +@router.get('/{entity_id:int}/objetos', response_model=List[schemas.treemap.TreemapObjeto]) |
| 43 | -def fetch_entity( | 43 | +def fetch_entity_objetos( |
| 44 | - entity_id: int, | 44 | + entity_id: int, |
| 45 | - db: Session = Depends(model.get_db), | 45 | + db: Session = Depends(model.get_db), |
| 46 | - query: schema.QueryParams = Depends(), | 46 | + query: schema.QueryParams = Depends(), |
| 47 | ): | 47 | ): |
| 48 | TreemapObjeto = models.treemap.TreemapObjeto | 48 | TreemapObjeto = models.treemap.TreemapObjeto |
| 49 | return get_entity_connections(entity_id, db, query, TreemapObjeto, 'objeto') | 49 | return get_entity_connections(entity_id, db, query, TreemapObjeto, 'objeto') |
| 50 | 50 | ||
| 51 | 51 | ||
| 52 | -router.get('/{entity_id}/finfuns', response_model=List[schemas.treemap.TreemapFinfun]) | 52 | +router.get('/{entity_id:int}/finfuns', response_model=List[schemas.treemap.TreemapFinFun]) |
| 53 | -def fetch_entity( | 53 | +def fetch_entity_finfuns( |
| 54 | - entity_id: int, | 54 | + entity_id: int, |
| 55 | - db: Session = Depends(model.get_db), | 55 | + db: Session = Depends(model.get_db), |
| 56 | - query: schema.QueryParams = Depends(), | 56 | + query: schema.QueryParams = Depends(), |
| 57 | ): | 57 | ): |
| 58 | TreemapFinFun = models.treemap.TreemapFinFun | 58 | TreemapFinFun = models.treemap.TreemapFinFun |
| 59 | return get_entity_connections(entity_id, db, query, TreemapFinFun, 'finfun') | 59 | return get_entity_connections(entity_id, db, query, TreemapFinFun, 'finfun') |
| 60 | 60 | ||
| 61 | 61 | ||
| 62 | -@router.get('/{entity_id}/actecos', response_model=List[schemas.treemap.TreemapActeco]) | 62 | +@router.get('/{entity_id:int}/actecos', response_model=List[schemas.treemap.TreemapActeco]) |
| 63 | -def fetch_entity( | 63 | +def fetch_entity_actecos( |
| 64 | - entity_id: int, | 64 | + entity_id: int, |
| 65 | - db: Session = Depends(model.get_db), | 65 | + db: Session = Depends(model.get_db), |
| 66 | - query: schema.QueryParams = Depends(), | 66 | + query: schema.QueryParams = Depends(), |
| 67 | ): | 67 | ): |
| 68 | TreemapActeco = models.treemap.TreemapActeco | 68 | TreemapActeco = models.treemap.TreemapActeco |
| 69 | return get_entity_connections(entity_id, db, query, TreemapActeco, 'acteco') | 69 | return get_entity_connections(entity_id, db, query, TreemapActeco, 'acteco') |
| ... | @@ -82,6 +82,8 @@ def get_entity_connections(entity_id, db, query, ClassObject, object_id): | ... | @@ -82,6 +82,8 @@ def get_entity_connections(entity_id, db, query, ClassObject, object_id): |
| 82 | ClassObject.gestion == query.gestion, | 82 | ClassObject.gestion == query.gestion, |
| 83 | ] | 83 | ] |
| 84 | 84 | ||
| 85 | + print(query.id is not None) | ||
| 86 | + | ||
| 85 | if query.id is not None: | 87 | if query.id is not None: |
| 86 | ids = query.id.split(',') | 88 | ids = query.id.split(',') |
| 87 | ids = [int(_.strip()) for _ in ids] | 89 | ids = [int(_.strip()) for _ in ids] | ... | ... |
| ... | @@ -33,10 +33,10 @@ router = APIRouter( | ... | @@ -33,10 +33,10 @@ router = APIRouter( |
| 33 | def fetch_search( | 33 | def fetch_search( |
| 34 | query: schema.SearchQueryParams = Depends(), | 34 | query: schema.SearchQueryParams = Depends(), |
| 35 | ): | 35 | ): |
| 36 | - if query.q is None or len(query.q) < 3: | 36 | + if query.q is None or len(query.q.strip()) < 3: |
| 37 | return [] | 37 | return [] |
| 38 | 38 | ||
| 39 | - return do_search(query.q, query.page) | 39 | + return do_search(query.q, query.page, query.is_class) |
| 40 | 40 | ||
| 41 | 41 | ||
| 42 | ############################################################################### | 42 | ############################################################################### |
| ... | @@ -44,5 +44,5 @@ def fetch_search( | ... | @@ -44,5 +44,5 @@ def fetch_search( |
| 44 | ############################################################################### | 44 | ############################################################################### |
| 45 | 45 | ||
| 46 | # @cached(ttl=10) | 46 | # @cached(ttl=10) |
| 47 | -def do_search(query, page): | ||
| 48 | - return search.do_search(query, page) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 47 | +def do_search(query, page, is_class): | ||
| 48 | + return search.do_search(query, page, is_class) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -12,6 +12,7 @@ class OrmBaseModel(BaseModel): | ... | @@ -12,6 +12,7 @@ class OrmBaseModel(BaseModel): |
| 12 | class SearchQueryParams(BaseModel): | 12 | class SearchQueryParams(BaseModel): |
| 13 | page: Optional[int] = Query(default=1) | 13 | page: Optional[int] = Query(default=1) |
| 14 | q: Optional[str] = Query(default=None) | 14 | q: Optional[str] = Query(default=None) |
| 15 | + is_class: Optional[bool] = Query(default=None) | ||
| 15 | 16 | ||
| 16 | class QueryParams(BaseModel): | 17 | class QueryParams(BaseModel): |
| 17 | id: Optional[str] = Query(default=None) | 18 | id: Optional[str] = Query(default=None) | ... | ... |
| ... | @@ -7,18 +7,23 @@ class ClasInstitucional(OrmBaseModel): | ... | @@ -7,18 +7,23 @@ class ClasInstitucional(OrmBaseModel): |
| 7 | entidad: int | 7 | entidad: int |
| 8 | desc_entidad: str | None | 8 | desc_entidad: str | None |
| 9 | sigla_entidad: str | None | 9 | sigla_entidad: str | None |
| 10 | + | ||
| 10 | sector: str | None | 11 | sector: str | None |
| 11 | desc_sector: str | None | 12 | desc_sector: str | None |
| 12 | sigla_sector: str | None | 13 | sigla_sector: str | None |
| 14 | + | ||
| 13 | subsector: str | None | 15 | subsector: str | None |
| 14 | desc_subsector: str | None | 16 | desc_subsector: str | None |
| 15 | sigla_subsector: str | None | 17 | sigla_subsector: str | None |
| 18 | + | ||
| 16 | area: str | None | 19 | area: str | None |
| 17 | desc_area: str | None | 20 | desc_area: str | None |
| 18 | sigla_area: str | None | 21 | sigla_area: str | None |
| 22 | + | ||
| 19 | subarea: str | None | 23 | subarea: str | None |
| 20 | desc_subarea: str | None | 24 | desc_subarea: str | None |
| 21 | sigla_subarea: str | None | 25 | sigla_subarea: str | None |
| 26 | + | ||
| 22 | gestiones: str | None | 27 | gestiones: str | None |
| 23 | n_gestiones: int | None | 28 | n_gestiones: int | None |
| 24 | 29 | ... | ... |
| ... | @@ -5,13 +5,10 @@ from presupuestov1.schema import BaseModel | ... | @@ -5,13 +5,10 @@ from presupuestov1.schema import BaseModel |
| 5 | 5 | ||
| 6 | class ProjectSearch(BaseModel): | 6 | class ProjectSearch(BaseModel): |
| 7 | gestion: int | 7 | gestion: int |
| 8 | - entidad: int | ||
| 9 | - programa: int | ||
| 10 | - proyecto: str | ||
| 11 | - actividad: int | ||
| 12 | - desc_programa: str | ||
| 13 | - desc_actividad_proyecto: str | ||
| 14 | devengado: float | 8 | devengado: float |
| 9 | + is_class: bool | ||
| 10 | + texto: str | ||
| 11 | + metadatos: str | ||
| 15 | 12 | ||
| 16 | 13 | ||
| 17 | class SearchHitHighlight(BaseModel): | 14 | class SearchHitHighlight(BaseModel): | ... | ... |
| ... | @@ -4,8 +4,8 @@ from presupuestov1.schema import OrmBaseModel | ... | @@ -4,8 +4,8 @@ from presupuestov1.schema import OrmBaseModel |
| 4 | class TreemapObjeto(OrmBaseModel): | 4 | class TreemapObjeto(OrmBaseModel): |
| 5 | gestion: int | 5 | gestion: int |
| 6 | entidad: int | 6 | entidad: int |
| 7 | - nivel: str | ||
| 8 | objeto: int | 7 | objeto: int |
| 8 | + nivel: str | None | ||
| 9 | desc_objeto: str | None | 9 | desc_objeto: str | None |
| 10 | parent: int | None | 10 | parent: int | None |
| 11 | devengado: float | None | 11 | devengado: float | None |
| ... | @@ -14,8 +14,8 @@ class TreemapObjeto(OrmBaseModel): | ... | @@ -14,8 +14,8 @@ class TreemapObjeto(OrmBaseModel): |
| 14 | class TreemapFinFun(OrmBaseModel): | 14 | class TreemapFinFun(OrmBaseModel): |
| 15 | gestion: int | 15 | gestion: int |
| 16 | entidad: int | 16 | entidad: int |
| 17 | - nivel: str | ||
| 18 | finfun: int | 17 | finfun: int |
| 18 | + nivel: str | None | ||
| 19 | desc_finfun: str | None | 19 | desc_finfun: str | None |
| 20 | parent: int | None | 20 | parent: int | None |
| 21 | devengado: float | None | 21 | devengado: float | None |
| ... | @@ -24,8 +24,8 @@ class TreemapFinFun(OrmBaseModel): | ... | @@ -24,8 +24,8 @@ class TreemapFinFun(OrmBaseModel): |
| 24 | class TreemapActeco(OrmBaseModel): | 24 | class TreemapActeco(OrmBaseModel): |
| 25 | gestion: int | 25 | gestion: int |
| 26 | entidad: int | 26 | entidad: int |
| 27 | - nivel: str | ||
| 28 | acteco: int | 27 | acteco: int |
| 28 | + nivel: str | None | ||
| 29 | desc_actividad: str | None | 29 | desc_actividad: str | None |
| 30 | parent: int | None | 30 | parent: int | None |
| 31 | devengado: float | None | 31 | devengado: float | None | ... | ... |
| ... | @@ -2,45 +2,51 @@ import typesense | ... | @@ -2,45 +2,51 @@ import typesense |
| 2 | 2 | ||
| 3 | TYPESENSE_API = open('./docs/typesense').read().strip() | 3 | TYPESENSE_API = open('./docs/typesense').read().strip() |
| 4 | client = typesense.Client({ | 4 | client = typesense.Client({ |
| 5 | - 'api_key': TYPESENSE_API, | 5 | + 'api_key': TYPESENSE_API, |
| 6 | - 'nodes': [{ | 6 | + 'nodes': [{ |
| 7 | - 'host': 'localhost', | 7 | + 'host': 'localhost', |
| 8 | - 'port': '8108', | 8 | + 'port': '8108', |
| 9 | - 'protocol': 'http' | 9 | + 'protocol': 'http' |
| 10 | - }], | 10 | + }], |
| 11 | - 'connection_timeout_seconds': 2 | 11 | + 'connection_timeout_seconds': 2 |
| 12 | }) | 12 | }) |
| 13 | 13 | ||
| 14 | COLLECTION = 'presup_actpro_fts' | 14 | COLLECTION = 'presup_actpro_fts' |
| 15 | schema = { | 15 | schema = { |
| 16 | - 'name': COLLECTION, | 16 | + 'name': COLLECTION, |
| 17 | - 'fields': [ | 17 | + 'fields': [ |
| 18 | - {'name': 'index', 'type': 'int32'}, | ||
| 19 | {'name': 'gestion', 'type': 'int32', 'facet': True}, | 18 | {'name': 'gestion', 'type': 'int32', 'facet': True}, |
| 20 | - {'name': 'entidad', 'type': 'int32',}, | ||
| 21 | - {'name': 'programa', 'type': 'int32',}, | ||
| 22 | - {'name': 'proyecto', 'type': 'string',}, | ||
| 23 | - {'name': 'actividad', 'type': 'int32',}, | ||
| 24 | - {'name': 'desc_actividad_proyecto', 'type': 'string'}, | ||
| 25 | {'name': 'devengado', 'type': 'float'}, | 19 | {'name': 'devengado', 'type': 'float'}, |
| 26 | - ], | 20 | + {'name': 'is_class', 'type': 'bool'}, |
| 27 | - 'default_sorting_field': 'devengado', | 21 | + {'name': 'texto', 'type': 'string'}, |
| 22 | + {'name': 'metadatos', 'type': 'string'}, | ||
| 23 | + ], | ||
| 24 | + 'default_sorting_field': 'devengado', | ||
| 28 | } | 25 | } |
| 29 | 26 | ||
| 30 | search_parameters = { | 27 | search_parameters = { |
| 31 | - "q": "cuba", | 28 | + "q": "cuba", |
| 32 | - "query_by": "desc_actividad_proyecto,desc_programa", | 29 | + "query_by": "texto", |
| 33 | - "facet_by": "gestion", | 30 | + # "facet_by": "gestion", |
| 34 | - "sort_by": "devengado:desc", | 31 | + "sort_by": "devengado:desc", |
| 35 | - "per_page": 20, | 32 | + "per_page": 20, |
| 36 | } | 33 | } |
| 37 | 34 | ||
| 38 | 35 | ||
| 39 | 36 | ||
| 40 | -def do_search(query, page): | 37 | +def do_search(query, page, is_class): |
| 41 | search_parameters_ = search_parameters.copy() | 38 | search_parameters_ = search_parameters.copy() |
| 42 | search_parameters_['q'] = query | 39 | search_parameters_['q'] = query |
| 43 | 40 | ||
| 41 | + if is_class is not None: | ||
| 42 | + filter_c = '' | ||
| 43 | + if is_class: | ||
| 44 | + filter_c = 'is_class:true' | ||
| 45 | + else: | ||
| 46 | + filter_c = 'is_class:false' | ||
| 47 | + | ||
| 48 | + search_parameters_['filter_by'] = filter_c | ||
| 49 | + | ||
| 44 | if (page is not None) and (page > 0): | 50 | if (page is not None) and (page > 0): |
| 45 | search_parameters_['page'] = page | 51 | search_parameters_['page'] = page |
| 46 | 52 | ... | ... |
-
Please register or login to post a comment