class GitConfig: url_repo: str usuario: str contrasenia: str ruta_clonado: str = get(Var.CARPETA_TMP) @staticmethod def from_dict(d: dict) -> 'GitConfig': url_repo = d['url_repo'] usuario = d['usuario'] contrasenia = d['contrasenia'] ruta_clonado = d.get('ruta_clonado', get(Var.CARPETA_TMP)) return GitConfig(url_repo, usuario, contrasenia, ruta_clonado) def to_dict(self): return self.__dict__()
import apps.configs.lector_variables as var import apps.utils.email_util as email_util import apps.utils.git_util as git_util import apps.utils.scheduler_util as scheduler_util from apps.configs.loggers import get_logger from apps.configs.variables import Var from apps.models.emails import EmailModelo from apps.models.errores import AppException from apps.models.taiga import EmailTaiga, ReportesConfig from apps.services.taiga.taiga_reportes_config_service import \ obtener_json_config from apps.services.taiga.taiga_service import generar_reporte_json _sched = scheduler_util.crear_scheduler() _EMAIL_ENVIADOR = var.get(Var.EMAIL_ENVIADOR) _EMAIL_PASS = var.get(Var.EMAIL_PASS) _GENERADOR_PDF_HOST = var.get(Var.GENERADOR_PDF_HOST) class Errores(Enum): SERVICIO_GENERAR_REPORTE = 'SERVICIO_GENERAR_REPORTE' def _funcion(): print('funcion vacia') def generar_todos_los_reportes_manualmente(): configs = obtener_json_config()
def from_dict(d: dict) -> 'GitConfig': url_repo = d['url_repo'] usuario = d['usuario'] contrasenia = d['contrasenia'] ruta_clonado = d.get('ruta_clonado', get(Var.CARPETA_TMP)) return GitConfig(url_repo, usuario, contrasenia, ruta_clonado)
import logging import os import apps.configs.lector_variables as var from apps.configs.variables import Var DIRECTORIO_LOGS = var.get(Var.DIRECTORIO_LOGS) NOMBRE_LOG_PREDEFINIDO = var.get(Var.NOMBRE_LOG_PREDEFINIDO) NIVEL_LOGS = var.get(Var.NIVEL_LOGS) _loggers = {} def get_logger(nombre=NOMBRE_LOG_PREDEFINIDO) -> logging.Logger: ''' Devuelve un objeto logger por un nombre, en caso de que no exista lo crea ''' if nombre in _loggers.keys(): return _loggers[nombre] if not os.path.exists(DIRECTORIO_LOGS): os.makedirs(DIRECTORIO_LOGS, exist_ok=True) logger = logging.getLogger(nombre) logger.setLevel(NIVEL_LOGS) formatter = logging.Formatter( '%(asctime)s - %(name)s (%(process)d) - %(levelname)s - %(message)s') sh = logging.StreamHandler() sh.setLevel(NIVEL_LOGS)
def variables(): respuesta = {} for clave in _predefinidas.keys(): respuesta[clave] = var.get(Var(clave)) return jsonify(respuesta)
from datetime import date from enum import Enum from uuid import UUID import pip._vendor.requests as requests import apps.configs.lector_variables as var from apps.configs.variables import Var import apps.utils.tareas_util as tareas_util from apps.configs.loggers import get_logger from apps.models.errores import AppException from apps.models.taiga import Filtros, ReportesConfig from apps.utils.csv_util import csv_a_diccionario _TAIGA_HOST = var.get(Var.TAIGA_HOST) _API_TAIGA_TAREAS = var.get(Var.API_TAIGA_TAREAS) _API_TAIGA_SUB_TAREAS = var.get(Var.API_TAIGA_SUBTAREAS) class Errores(Enum): ERROR_API_TAIGA = 'ERROR_API_TAIGA' def _descargar_csv(url_completa: str) -> bytes: ''' Descargar el csv de la pagina de taiga mediante un GET pasandole la URL ''' get_logger().info(f'Descargando CSV con url -> {url_completa}') respuesta = requests.get(url_completa)
import json import os import shutil from typing import Dict, List from uuid import uuid4 import apps.configs.lector_variables as var from apps.configs.variables import Var from apps.configs.loggers import get_logger from apps.models.taiga import ReportesConfig _NOMBRE_ARCHIVO_CONFIG = var.get(Var.NOMBRE_ARCHIVO_CONFIG) _DIRECTORIO_ARCHIVO_CONFIG = var.get(Var.DIRECTORIO_ARCHIVO_CONFIG) def guardar_json_config(lista_configs: List[ReportesConfig]): ''' Obtine el json guardado con la configuracion autormatica de los reportes ''' contenido = json.dump(lista_configs) if not os.path.exists(_DIRECTORIO_ARCHIVO_CONFIG): os.makedirs(_DIRECTORIO_ARCHIVO_CONFIG, exist_ok=True) ruta_completa = _DIRECTORIO_ARCHIVO_CONFIG + _NOMBRE_ARCHIVO_CONFIG with open(ruta_completa, 'w+') as archivo_python: archivo_python.write(contenido) def obtener_json_config() -> List[ReportesConfig]: '''
import json import os from flask import Flask, jsonify import apps.configs.lector_variables as var from apps.configs.loggers import get_logger import apps.services.taiga.taiga_scheduler_service as taiga_scheduler_service from apps.configs.error_handlers import error_handler_bp from apps.configs.variables import Var from apps.services.taiga.taiga_reportes_config_service import \ guardar_json_config from apps.utils.carga_dinamica_blue_prints import registrar_blue_prints _PYTHON_HOST = var.get(Var.PYTHON_HOST) _PYTHON_PORT = int(var.get(Var.PYTHON_PORT)) _CRON_REPORTES_AUTOMATICOS_ACTIVADO = bool( var.get(Var.CRON_REPORTES_AUTOMATICOS_ACTIVADO)) app = Flask(__name__) app.register_blueprint(error_handler_bp) registrar_blue_prints(app, 'apps/routes') if _CRON_REPORTES_AUTOMATICOS_ACTIVADO: get_logger().info('Scheduler de reportes automaticos ACTIVADO') taiga_scheduler_service.iniciar_proceso_automatico() if __name__ == "__main__": app.run(host=_PYTHON_HOST, port=_PYTHON_PORT, debug=True)