'fecha_vencimiento_interna_cytg': 'Fecha de vencimiento interna CyTG', 'num_oficio_resp_dependencia': 'Num. de Oficio de respuesta de dependencia', 'fecha_acuse_resp_dependencia': 'Fecha de acuse de respuesta de dependencia', 'resp_dependencia': 'Respuesta de dependencia (acciones a realizar)', 'num_oficio_enviar_resp_asenl': 'Num. de Oficio para enviar respuesta a la ASENL', 'fecha_oficio_enviar_resp_asenl': 'Fecha del Oficio para enviar respuesta a la ASENL', 'unidad_investigadora': 'Unidad investigadora', 'num_vai': 'Num. VAI', 'direccion_id': 'Id de la dirección (según obs preliminar)', 'auditoria_id': 'Id de la auditoría (según obs preliminar)', 'tipificacion_id': 'Id de la tipificación', 'dependencia_id': 'Id de la Dependencia, indicada por la Auditoría', 'anio_cuenta_pub': 'Año de la cuenta pública, indicada por la Auditoría', } ns = api.namespace("obs_ires_asenl", description="Servicios disponibles para Observaciones de la ASENL (Informe de Resultados)") obs_ires_asenl = api.model('Observación de la ASENL (Informe de Resultados)', { 'id': fields.Integer(description=obs_ires_asenl_ns_captions['id']), 'observacion_pre_id': fields.Integer(description=obs_ires_asenl_ns_captions['observacion_pre_id']), 'num_oficio_of': fields.String(description=obs_ires_asenl_ns_captions['num_oficio_of']), 'fecha_publicacion': fields.Date(description=obs_ires_asenl_ns_captions['fecha_publicacion']), 'tipo_observacion_id': fields.Integer(description=obs_ires_asenl_ns_captions['tipo_observacion_id']), 'num_observacion': fields.String(description=obs_ires_asenl_ns_captions['num_observacion']), 'observacion_final': fields.String(description=obs_ires_asenl_ns_captions['observacion_final']), 'observacion_reincidente': fields.Boolean(description=obs_ires_asenl_ns_captions['observacion_reincidente']), 'anios_reincidencia': fields.String(description=obs_ires_asenl_ns_captions['anios_reincidencia']), 'monto_observado': fields.Float(description=obs_ires_asenl_ns_captions['monto_observado']), 'compartida_observacion': fields.String(description=obs_ires_asenl_ns_captions['compartida_observacion']), 'compartida_tipo_observacion_id': fields.Integer(description=obs_ires_asenl_ns_captions['compartida_tipo_observacion_id']), 'compartida_monto': fields.Float(description=obs_ires_asenl_ns_captions['compartida_monto']),
'dependencia': 'Secretaría / Entidad / Municipio', 'tipo_obs': 'Tipo de Observacion', 'cant_obs_solv': 'Cantidad observada (solventados)', 'monto_solv': 'Monto (solventados)', 'cant_obs_no_solv': 'Cant. Obs. (no solventados)', 'monto_no_solv': 'Monto (no solventados)', 'cant_obs_en_analisis': 'Cant. Obs. (en analisis)', 'monto_en_analisis': 'Monto (en analisis)', 'ejercicio_ini': 'Ejercicio (desde)', 'ejercicio_fin': 'Ejercicio (hasta)', 'fiscal': 'Ente Fiscalizador (asenl, asf, cytg o "")', 'division_id': 'Id de la direccion del usuario', } ns = api.namespace( "reporte_54", description= "Observaciones por Estatus de la Observación del Informe Preliminar") data_row = api.model( 'Data row (Reporte 54)', { 'dep': fields.String(description=reporte_54_ns_captions['dependencia']), 'tipo_obs': fields.String(description=reporte_54_ns_captions['tipo_obs']), 'c_sol': fields.Integer(description=reporte_54_ns_captions['cant_obs_solv']), 'm_sol': fields.Float(description=reporte_54_ns_captions['monto_solv']), 'c_no_sol': fields.Integer(description=reporte_54_ns_captions['cant_obs_no_solv']), 'm_no_sol':
from flask_restplus import Resource, fields from flask import request from genl.restplus import api from dal import acciones from misc.helper import get_search_params, verify_token from misc.helperpg import EmptySetError ns = api.namespace( "acciones", description= "Servicios disponibles para el catálogo de acciones (ASF y ASENL)") accion = api.model( 'Acción (ASENL)', { 'org_fiscal_id': fields.Integer(description='Id del órgano fiscalizador'), 'id': fields.Integer(description='Id de la acción'), 'title': fields.String(description='Siglas de la acción'), 'description': fields.String(description='Nombre de la acción'), }) pair = api.model( 'Id-Title pair', { 'id': fields.Integer(description='An integer as entry identifier'), 'title': fields.String(description='Entry title'), }) catalog = api.model( 'Leyendas relacionadas al catálogo de Acciones (ASF y ASENL)', { 'fiscals': fields.List(fields.Nested(pair)),
'clasif_name': 'Clasificacion', 'c_obs': 'Cant. Obs.', 'monto': 'Monto ', 'ejercicio_ini': 'Ejercicio (desde)', 'ejercicio_fin': 'Ejercicio (hasta)', 'fiscal': 'Ente Fiscalizador (ASENL/ASF/SFP/CYTG)', 'reporte_num': 'Numero de reporte (reporte56 o reporte58)', 'division_id': 'Id de la direccion del usuario', 'is_clasif': 'True si obtendra la clasificacion', 'm_obs': 'Monto observado', 'm_sol': 'Monto solventado', } ns = api.namespace( "reporte_56", description= "(Reporte 56 y 58) Observaciones Pendientes de Solventar por Ente Fiscalizador" ) data_row = api.model( 'Data row (Reporte 56)', { 'dep': fields.String(description=reporte_56_ns_captions['dependencia']), 'ej': fields.Integer(description=reporte_56_ns_captions['ej']), 'tipo': fields.String(description=reporte_56_ns_captions['tipo']), 'clasif_name': fields.String(description=reporte_56_ns_captions['clasif_name']), 'c_obs': fields.Integer(description=reporte_56_ns_captions['c_obs']),
'dependencia': 'Secretaría / Entidad / Municipio', 'ejercicio': 'Ejercicio', 'cant_obs_asf': 'Cant. Obs. (ASF)', 'monto_asf': 'Monto (ASF)', 'cant_obs_sfp': 'Cant. Obs. (SFP)', 'monto_sfp': 'Monto (SFP)', 'cant_obs_asenl': 'Cant. Obs. (ASENL)', 'monto_asenl': 'Monto (ASENL)', 'cant_obs_cytg': 'Cant. Obs. (CyTG)', 'monto_cytg': 'Monto (CyTG)', 'ejercicio_ini': 'Ejercicio (desde)', 'ejercicio_fin': 'Ejercicio (hasta)', 'division_id': 'Id de la direccion del usuario', } ns = api.namespace("reporte_53", description="Servicios para los reportes 52 y 53") data_row = api.model( 'Data row (Reporte 53)', { 'dep': fields.String(description=reporte_53_ns_captions['dependencia']), 'ej': fields.Integer(description=reporte_53_ns_captions['ejercicio']), 'c_asf': fields.Integer(description=reporte_53_ns_captions['cant_obs_asf']), 'm_asf': fields.Float(description=reporte_53_ns_captions['monto_asf']), 'c_sfp': fields.Integer(description=reporte_53_ns_captions['cant_obs_sfp']), 'm_sfp': fields.Float(description=reporte_53_ns_captions['monto_sfp']),
'fecha_oficio_resp_dependencia': 'Fecha de Oficio de respuesta de la Dependencia', 'resp_dependencia': 'Respuesta de la Dependencia', 'comentarios': 'Comentarios', 'estatus_seguimiento_id': 'Id del estatus del seguimiento', 'monto_solventado': 'Monto solventado', 'monto_pendiente_solventar': 'Monto pendiente de solventar', 'seguimientos': 'Seguimientos (lista de cédulas)', 'direccion_id': 'Id de la dirección (según obs preliminar)', 'auditoria_id': 'Id de la auditoría (según obs preliminar)', 'programa_social_id': 'Id del programa social (según obs preliminar)', } ns = api.namespace( "obs_ires_cytg", description= "Servicios disponibles para Observaciones de la CyTG (Informe de Resultados)" ) seguimiento = api.model( 'Seguimiento de una Observación CyTG (resultados)', { 'observacion_id': fields.Integer( description=obs_ires_cytg_ns_captions['observacion_id']), 'seguimiento_id': fields.Integer( description=obs_ires_cytg_ns_captions['seguimiento_id']), 'num_oficio_ires': fields.String( description=obs_ires_cytg_ns_captions['num_oficio_ires']), 'fecha_notif_ires':
'num_oficio_pras_of': 'Num. de Oficio de PRAS del OF', 'fecha_oficio_pras_of': 'Fecha de Oficio de PRAS del OF', 'num_oficio_pras_cytg_dependencia': 'Num. de Oficio PRAS de la CyTG para la Dependencia', 'num_oficio_resp_dependencia': 'Num. de Oficio de respuesta de la Dependencia', 'fecha_oficio_resp_dependencia': 'Fecha de Oficio de respuesta de la Dependencia', 'seguimientos': 'Seguimientos (lista de cédulas)', 'dependencia_id': 'Id de la Dependencia, indicada por la Auditoría', 'anio_cuenta_pub': 'Año de la cuenta pública, indicada por la Auditoría', } ns = api.namespace( "obs_sfp", description= "Servicios disponibles para Observaciones de la SFP (Informe de Resultados)" ) seguimiento = api.model( 'Seguimiento de una Observación SFP', { 'observacion_id': fields.Integer( description='Observacion a la que pertenece el seguimiento'), 'seguimiento_id': fields.Integer(description='Id del seguimiento'), 'num_oficio_cytg_oic': fields.String(description='Num. de Oficio CyTG u OIC'), 'fecha_oficio_cytg_oic': fields.Date(description='Fecha de Oficio CyTG u OIC'), 'fecha_recibido_dependencia':
from flask_restplus import Resource, fields from flask import request from genl.restplus import api from dal import estatus from misc.helper import get_search_params, verify_token from misc.helperpg import EmptySetError estatus_captions = { 'org_fiscal_id': 'Id del órgano fiscalizador', 'pre_ires': 'Preliminar o Informe de Resultados {pre | ires}', 'id': 'Id del estatus', 'title': 'Título del estatus', } ns = api.namespace( "estatus", description="Servicios disponibles para el catálogo de estatus") estatus_model = api.model( 'Estatus', { 'org_fiscal_id': fields.Integer(description=estatus_captions['org_fiscal_id']), 'pre_ires': fields.String(description=estatus_captions['pre_ires']), 'id': fields.Integer(description=estatus_captions['id']), 'title': fields.String(description=estatus_captions['title']), }) pair = api.model( 'Id-Title pair', {
import psycopg2 from genl.restplus import api from dal import clasifs_internas_cytg from misc.helper import get_search_params, verify_token from misc.helperpg import get_msg_pgerror, EmptySetError clasif_interna_ns_captions = { 'org_fiscal_id': 'Id del órgano fiscalizador para la Clasificación interna', 'direccion_id': 'Id de la dirección para la Clasificación interna', 'sorting_val': 'Id de la Clasificación interna', 'title': 'Título o siglas de la Clasificación interna', } ns = api.namespace("clasifs_internas", description="Servicios disponibles para las clasificaciones internas de CyTG") clasif_interna = api.model('Clasificaciones internas de CyTG', { 'org_fiscal_id': fields.Integer(description=clasif_interna_ns_captions['org_fiscal_id']), 'direccion_id': fields.Integer(description=clasif_interna_ns_captions['direccion_id']), 'sorting_val': fields.Integer(description=clasif_interna_ns_captions['sorting_val']), 'title': fields.String(description=clasif_interna_ns_captions['title']), }) pair = api.model('Id-Title pair', { 'id': fields.Integer(description='An integer as entry identifier'), 'title': fields.String(description='Entry title'), }) catalog = api.model('Leyendas relacionadas con las Clasificaciones internas de CyTG', { 'fiscals': fields.List(fields.Nested(pair)),
from flask_restplus import Resource, fields from flask import request import psycopg2 from genl.restplus import api from dal import audits from misc.helper import get_search_params, verify_token from misc.helperpg import get_msg_pgerror, EmptySetError ns = api.namespace("audits", description="Available services for an audit") audit = api.model( 'Auditoría', { 'id': fields.Integer(description='Id de la auditoría'), 'title': fields.String(description='Título de la auditoría'), 'org_fiscal_id': fields.Integer(description='Id del Órgano Fiscalizador'), 'direccion_id': fields.Integer(description='Id de la Dirección'), 'dependency_ids': fields.List(fields.Integer(), description='List of dependency ids'), 'years': fields.List(fields.Integer(), description='List of years (public account)'), }) dependency = api.model( 'Dependencia', { 'id':
'fecha_oficio_solic_prorroga': 'Fecha de Oficio de Solicitud de prórroga', 'num_oficio_contest_prorroga_cytg': 'Num. de Oficio de Contestación de prórroga', 'fecha_oficio_contest_cytg': 'Fecha de Contestación CyTG', 'fecha_vencimiento_pre_nueva': 'Fecha de nuevo vencimiento (informe preliminar)', 'clasif_pre_cytg': 'Clasificación (preliminar) CyTG', 'num_oficio_resp_dependencia': 'Num. de Oficio de respuesta de la dependencia', 'fecha_oficio_resp': 'Fecha de Oficio de respuesta (acuse)', 'resp_dependencia': 'Respuesta de la dependencia', 'comentarios': 'Comentarios', 'observacion_ires_id': 'Id de la observación de informe de resultados correspondiente', 'estatus_id': 'Id del estatus de la observación', 'dependencia_id': 'Id de la Dependencia, indicada por la Auditoría', 'anio_cuenta_pub': 'Año de la cuenta pública, indicada por la Auditoría', } ns = api.namespace("obs_pre_cytg", description="Servicios disponibles para Observaciones de la CyTG (Preliminares)") obs_pre_cytg = api.model('Observación de la CyTG (Preliminar)', { 'id': fields.Integer(description=obs_pre_cytg_ns_captions['id']), 'periodo_revision_de': fields.Date(description=obs_pre_cytg_ns_captions['periodo_revision_de']), 'periodo_revision_a': fields.Date(description=obs_pre_cytg_ns_captions['periodo_revision_a']), 'direccion_id': fields.Integer(description=obs_pre_cytg_ns_captions['direccion_id']), 'fecha_captura': fields.Date(description=obs_pre_cytg_ns_captions['fecha_captura']), 'programa_social_id': fields.Integer(description=obs_pre_cytg_ns_captions['programa_social_id']), 'auditoria_id': fields.Integer(description=obs_pre_cytg_ns_captions['auditoria_id']), 'tipo_auditoria_id': fields.Integer(description=obs_pre_cytg_ns_captions['tipo_auditoria_id']), 'num_oficio_inicio': fields.String(description=obs_pre_cytg_ns_captions['num_oficio_inicio']), 'fecha_notificacion_inicio': fields.Date(description=obs_pre_cytg_ns_captions['fecha_notificacion_inicio']), 'fecha_vencimiento_nombra_enlace': fields.Date(description=obs_pre_cytg_ns_captions['fecha_vencimiento_nombra_enlace']), 'num_oficio_requerimiento': fields.String(description=obs_pre_cytg_ns_captions['num_oficio_requerimiento']), 'fecha_notificacion_requerimiento': fields.Date(description=obs_pre_cytg_ns_captions['fecha_notificacion_requerimiento']),
from flask_restplus import Resource, fields from flask import request from dal.helper import exec_steady, update_steady from genl.restplus import api from misc.helperpg import EmptySetError ns = api.namespace("observations", description="Observations data") observation = ns.model( 'Observation', { 'id': fields.Integer(required=True, description='Observation identifier'), 'observation_type_id': fields.Integer(required=True, description='Observation type identifier'), }) # TODO: esta var global solo fue para pruebas de los endpoints, sera eliminada. Se inicializa al hacer # un GET observations/ obs_last_id = 0 @ns.route('/') @ns.response(404, 'Observation not found') class Observations(Resource): @ns.marshal_list_with(observation) def get(self): global obs_last_id sql = """ SELECT id, observation_type_id
from dal import users from misc.helper import get_search_params, verify_token from misc.helperpg import get_msg_pgerror, EmptySetError user_ns_captions = { 'id': 'User identifier', 'username': '******', 'passwd': 'Password for the username', 'orgchart_role_id': 'Role id from organization chart', 'division_id': 'Controller\'s office (Direccion de contraloria)', 'disabled': 'Flag to put the user in state \'disabled\'', 'first_name': 'User\'s first name', 'last_name': 'User\'s last name', } ns = api.namespace("users", description="Available services for a user") usr_fields = { 'id': fields.Integer(description=user_ns_captions['id']), 'username': fields.String(description=user_ns_captions['username']), 'passwd': fields.String(description=user_ns_captions['passwd']), 'orgchart_role_id': fields.Integer(description=user_ns_captions['orgchart_role_id']), 'division_id': fields.Integer(description=user_ns_captions['division_id']), 'disabled': fields.Boolean(description=user_ns_captions['disabled']), 'first_name':
from flask_restplus import Resource, fields from flask import request, make_response import psycopg2 from genl.restplus import api from dal import observations from misc.helper import get_search_params from misc.helperpg import get_msg_pgerror, EmptySetError ns = api.namespace("observations", description="Available services for an observation") obs_fields = { 'id': fields.Integer(description='Observation identifier'), 'observation_type_id': fields.Integer(description='Observation type identifier'), 'social_program_id': fields.Integer(description='Social program identifier'), 'audit_id': fields.Integer(description='Audit identifier'), 'fiscal_id': fields.Integer(description='Fiscal entity that audits'), 'title': fields.String(description='Desc of observation'), 'amount_observed': fields.Float(description='Observed amount'), 'observation_code_id': fields.Integer(description='Observation code identifier'), 'observation_bis_code_id': fields.Integer(description='Observation bis code identifier (CyTG->Clasif)'), 'reception_date': fields.String(description='Reception date (CyTG)'), 'expiration_date': fields.String(description='Expiration date (CyTG)'), 'doc_a_date': fields.String(description='Oficio date (CyTG)'), 'doc_b_date': fields.String(description='Oficio date (Dependencia)'), 'doc_c_date': fields.String(description='Oficio date (Organo Fiscalizador)'), 'doc_a': fields.String(description='Oficio No. (CyTG)'), 'doc_b': fields.String(description='Oficio No. (Dependencia)'), 'doc_c': fields.String(description='Oficio No. (Organo Fiscalizador)'), 'dep_response': fields.String(description='Dependency response (Dependencia)'),
reporte_55_ns_captions = { 'dependencia': 'Secretaría / Entidad / Municipio', 'cant_obs': 'Tipo de Observacion', 'monto_aten': 'Monto (solventados)', 'cant_obs_aten': 'Cantidad observada (solventados)', 'monto_aten': 'Monto (solventados)', 'cant_obs_no_aten': 'Cantidad observada (solventados)', 'monto_no_aten': 'Monto (solventados)', 'ejercicio_ini': 'Ejercicio (desde)', 'ejercicio_fin': 'Ejercicio (hasta)', 'division_id': 'Id de la direccion del usuario', } ns = api.namespace( "reporte_55", description="Observaciones por Ente Fiscalizador Atendidas y por Atender") data_row = api.model( 'Data row (Reporte 55)', { 'dep': fields.String(description=reporte_55_ns_captions['dependencia']), 'c_asf': fields.Integer(description=reporte_55_ns_captions['cant_obs']), 'm_asf': fields.Float(description=reporte_55_ns_captions['monto_aten']), 'c_na_asf': fields.Integer(description=reporte_55_ns_captions['cant_obs_no_aten']), 'm_na_asf': fields.Float(description=reporte_55_ns_captions['monto_no_aten']), 'c_a_asf':
from dal import programas_sociales from misc.helper import get_search_params, verify_token from misc.helperpg import get_msg_pgerror, EmptySetError programa_soc_ns_captions = { 'id': 'Id del programa social', 'title': 'Siglas del programa social', 'description': 'Nombre del programa social', 'central': 'Flag que indica vinculación con Central (true | false)', 'paraestatal': 'Flag que indica vinculación con Paraestatal (true | false)', 'obra_pub': 'Flag que indica vinculación con Obra Pública (true | false)', } ns = api.namespace( "programas_soc", description="Servicios disponibles para los programas sociales") programa_soc = api.model( 'Programa social', { 'id': fields.Integer(description=programa_soc_ns_captions['id']), 'title': fields.String(description=programa_soc_ns_captions['title']), 'description': fields.String(description=programa_soc_ns_captions['description']), 'central': fields.Boolean(description=programa_soc_ns_captions['central']), 'paraestatal': fields.Boolean(description=programa_soc_ns_captions['paraestatal']), 'obra_pub':
'dependencia': 'Secretaría / Entidad / Municipio', 'ej': 'Ejercicio-Anio', 'tipo': 'Tipo de Obs', 'clasif_name': 'Clasificacion', 'c_obs': 'Cant. Obs.', 'monto': 'Monto ', 'ejercicio_ini': 'Ejercicio (desde)', 'ejercicio_fin': 'Ejercicio (hasta)', 'fiscal': 'Ente Fiscalizador (ASENL/ASF/SFP/CYTG)', 'only_obras': 'String aleatorio para filtrar por direccion=Obras/Campo vacio no filtra (devolvera todas las direcciones)', 'division_id': 'Id de la direccion del usuario', } ns = api.namespace( "reporte_57", description="(Reporte 57 y 59) Observaciones por Tipo de Observacion") data_row = api.model( 'Data row (Reporte 57)', { 'dep': fields.String(description=reporte_57_ns_captions['dependencia']), 'tipo': fields.String(description=reporte_57_ns_captions['tipo']), 'c_obs': fields.Integer(description=reporte_57_ns_captions['c_obs']), 'monto': fields.Float(description=reporte_57_ns_captions['monto']), }) report = api.model( 'Reporte 57', { 'data_rows': fields.List(fields.Nested(data_row)), 'ignored_audit_ids': fields.List(fields.Integer()),
CYTG, PRE, IRES, ) from dal import file_services from misc.helperpg import ServerError file_services_ns_captions = { 'obs_id': 'ID de la observación: integer >= 1', 'pre_ires': 'Preliminar o Inf. Resultados: ({}|{})'.format(PRE, IRES), 'org_fisc': 'Organismo fiscalizador: ({}|{}|{}|{})'.format(SFP, ASF, ASENL, CYTG), 'filename': 'Exclusivamente el filename con extension .pdf', } ns = api.namespace("files", description="Servicios de Uploading/Downloading de archivos (.pdf)") filenames = api.model('Lista con nombres de archivo', { 'fnames': fields.List(fields.String()), }) @ns.route('/') @ns.response(400, 'Client error') @ns.response(500, 'Server error') class FileList(Resource): @ns.marshal_with(filenames) @ns.param('obs_id', file_services_ns_captions['obs_id'], required=True) @ns.param('pre_ires', file_services_ns_captions['pre_ires'], required=True) @ns.param('org_fisc', file_services_ns_captions['org_fisc'], required=True) def post(self):
'c_obs': 'Cant. Obs.', 'monto': 'Monto ', 'ejercicio_ini': 'Ejercicio (desde)', 'ejercicio_fin': 'Ejercicio (hasta)', 'fiscal': 'Ente Fiscalizador (ASENL/ASF/SFP/CYTG)', 'obs_c': 'pre/ires', 'n_obs': 'Num. observacion', 'obs': 'Observacion', 'estatus': 'Estatus de la observacion', 'division_id': 'Id de la direccion del usuario', 'm_sol': 'Monto solventado', } ns = api.namespace( "reporte_61", description= "(Reporte 61 y 63) Reporte de Detalle de la Observación, Estatus, Entidad, Tipo de Observación y Ente Fiscalizador" ) data_row = api.model( 'Data row (Reporte 61)', { 'dep': fields.String(description=reporte_61_ns_captions['dependencia']), 'n_obs': fields.String(description=reporte_61_ns_captions['n_obs']), 'obs': fields.String(description=reporte_61_ns_captions['obs']), 'tipo': fields.String(description=reporte_61_ns_captions['tipo']), 'estatus': fields.String(description=reporte_61_ns_captions['estatus']), 'c_obs': fields.Integer(description=reporte_61_ns_captions['c_obs']), 'monto': fields.Float(description=reporte_61_ns_captions['monto']), 'm_sol': fields.Float(description=reporte_61_ns_captions['m_sol']),