예제 #1
0
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()
예제 #3
0
 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)
예제 #5
0
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]:
    '''
예제 #8
0
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)