Example #1
0
def __main__():
    op = opciones.diagnose_opciones()
    if not op:
        print echo('No se encuentran las opciones de conexión. No se puede conectar a la base de datos de Diagnose.')
        exit(1)

    print echo('Escriba las fechas en formato AAAA/MM/DD para filtrar la búsqueda.\nDeje vacía la pregunta si no desea filtrar por fecha.')
    dt0 = get_dt('Fecha desde')
    dt1 = get_dt('Fecha hasta')

    print 'Conectando a la base de datos...'
    host = pymy.get_host()
    conn, cur = pymy.get_conn_cursor(host)

    print 'Servicios disponibles:'
    data = find_servs(cur)
    serv = get_serv(data)
    servname = serv and [i['detalle'] for i in data if i['id'] == serv][0] or None

    sql = makesearch(dt0, dt1, serv)
    print 'Consultando...'
    cur.execute(sql)
    print 'Recuperando datos...'
    data = cur.fetchall()
    print 'Listo.'

    print2screen(data)
    html = makehtml(op, dt0, dt1, servname)
    print2html(html, data)
Example #2
0
def __main__():
    op = opciones.diagnose_opciones()
    if not op:
        print echo(
            'No se encuentran las opciones de conexión. No se puede conectar a la base de datos de Diagnose.'
        )
        exit(1)

    print echo(
        'Escriba las fechas en formato AAAA/MM/DD para filtrar la búsqueda.\nDeje vacía la pregunta si no desea filtrar por fecha.'
    )
    dt0 = get_dt('Fecha desde')
    dt1 = get_dt('Fecha hasta')

    print 'Conectando a la base de datos...'
    host = pymy.get_host()
    conn, cur = pymy.get_conn_cursor(host)

    print 'Servicios disponibles:'
    data = find_servs(cur)
    serv = get_serv(data)
    servname = serv and [i['detalle']
                         for i in data if i['id'] == serv][0] or None

    sql = makesearch(dt0, dt1, serv)
    print 'Consultando...'
    cur.execute(sql)
    print 'Recuperando datos...'
    data = cur.fetchall()
    print 'Listo.'

    print2screen(data)
    html = makehtml(op, dt0, dt1, servname)
    print2html(html, data)
Example #3
0
    def __init__(self, databases=None, path=None, cfgfilename=None):
        """
        Prepara un volcado de alguna base de datos de Diagnose.

        Dada una lista de bases de datos y una ruta, prepara lo
        necesario para realizar un volcado de cada una de ellas,
        comprimido en formato ZIP, en una carpeta dada por el
        usuario o alguna otra de varias por defecto. Requiere
        que haya un cliente de Diagnose con su archivo de
        configuración apuntando al servidor y que se pueda
        localizar mysqldump.exe. Opcionalmente puede realizar
        el volcado en la carpeta de Dropbox del usuario, si
        existe.
        """
        try:
            # Intenta importar la interfase con Dropbox y obtener
            # la carpeta Dropbox del usuario.
            self.dbox = dropbox.get_dropbox_folder()
        except ImportError:
            self.dbox = None
        # Determina la ruta de almacenamiento del volcado comprimido
        # entre varias alternativas que deberían ser accesibles.
        path2 = None
        cfg = None
        try:
            cfg = DiagnoseConfig(cfgfilename)
            path2 = cfg.dumpinto
            if not databases and cfg.config.has_section('databases'):
                databases = [k for (k, v) in cfg.config.items('databases') if str(v) == '1']
        except DiagnoseConfigError:
            pass
        self.path = path or path2 or self.dbox or environ.get('PUBLIC') or getcwd()
        # Busca el servidor de Diagnose (no chequea el acceso).
        # Si el archivo de configuración no existe o no está bien formado
        # aborta con una excepción.
        user = '******'
        password = '******'
        try:
            from diagnose import opciones
            o = opciones.diagnose_opciones()
        except ImportError:
            o = dict()
        if o and 'server' in o:
            host = o['server']
        elif cfg and hasattr(cfg, 'host'):
            host = cfg.host
            if hasattr(cfg, 'user') and hasattr(cfg, 'password'):
                user = cfg.user
                password = cfg.password
        else:
            raise DiagnoseDumpError, 'No sé dónde se encuentra el servidor de Diagnose.'
        self.databases = databases or ('diagnose', 'hmi2')
        # Crea el wrapper para mysqldump
        self.mysqldump = sqldump.SQLDump(host=host, user=user, password=password)
        self.config = cfg
Example #4
0
def get_host():
    op = opciones.diagnose_opciones()
    if not op:
        import re
        print echo('No se pudieron leer las opciones de conexión de Diagnose.')
        while 1:
            ip = raw_input(echo('Escriba la dirección IP del servidor de Diagnose:')).strip().lower()
            if ip == '':
                return None
            if ip == 'localhost':
                return ip
            try:
                ipparts = [int(p) for p in ip.split('.')]
            except ValueError:
                continue
            if len(ipparts) == 4:
                if len(filter(lambda x: (x >= 0 and x < 256), ipparts)) == 4:
                    break
        return ip
    else:
        return op['server']
Example #5
0
def __main__():
    op = opciones.diagnose_opciones()
    if not op:
        print echo('No se encuentran las opciones de conexión. No se puede conectar a la base de datos de Diagnose.')
        exit(1)

    print echo('Escriba las fechas en formato AAAA-MM-DD para filtrar la búsqueda.\nDeje vacía la pregunta si no desea filtrar por fecha.')
    dt0 = get_dt('Fecha desde')
    dt1 = get_dt('Fecha hasta')

    print 'Conectando a la base de datos...'
    host = pymy.get_host()
    conn, cur = pymy.get_conn_cursor(host)

    sql = makesearch(dt0, dt1)
    print 'Consultando...'
    cur.execute(sql)
    print 'Recuperando datos...'
    data = cur.fetchall()
    print 'Listo.'

    html = makehtml(op, dt0, dt0)
    print2html(html, data)
Example #6
0
def __main__():
    op = opciones.diagnose_opciones()
    if not op:
        print echo('No se encuentran las opciones de conexión. No se puede conectar a la base de datos de Diagnose.')
        exit(1)

    # Búsqueda por fecha
    print echo('Escriba las fechas en formato AAAA-MM-DD para filtrar la búsqueda.\nDeje vacía la pregunta si no desea filtrar por fecha.')
    dt0 = get_dt('Fecha desde')
    dt1 = get_dt('Fecha hasta')

    print 'Conectando a la base de datos...'
    host = pymy.get_host()
    conn, cur = pymy.get_conn_cursor(host)

    sql = makesearch(dt0, dt1)
    print 'Consultando...'
    cur.execute(sql)
    print 'Recuperando datos...'
    data = cur.fetchall()
    print 'Listo.'

    html = makehtml(op, dt0, dt1)
    print2html(html, data)
Example #7
0
sql = sql.format(**params)
print 'Consultando...'
cur.execute(sql)
print 'Recuperando datos...'
data = list(cur.fetchall())
print 'Listo.'

codigos = sorted(list(dict([(rec[u'codigo'], 1) for rec in data])))
q = dict()
for c in codigos:
    q[c] = Counter()
    for rec in data:
        if rec[u'codigo'] == c:
            q[c][rec[u'dt_fecha'].day] = rec[u'q']

op = opciones.diagnose_opciones()
html = '''<html>
<head>
<title>Resumen diario mensual odontológico</title>
<style type="text/css">
body {{ font-family: sans-serif; }}
thead {{ color: white; background-color: #444; }}
tbody th {{ color: white; background-color: #666; }}
th, td  {{ border: 1px dotted gray; }}
#res td {{ text-align: right; }}
</style>
</head>
<body>
<h1>Resumen diario mensual odontológico</h1>
<table>
<tr><td>Establecimiento</td><td>{nombre_empresa}</td><td>{clave_est}-0</td></tr>
Example #8
0
sql = sql.format(**params)
print 'Consultando...'
cur.execute(sql)
print 'Recuperando datos...'
data = list(cur.fetchall())
print 'Listo.'

codigos = sorted(list(dict([(rec[u'codigo'], 1) for rec in data])))
q = dict()
for c in codigos:
    q[c] = Counter()
    for rec in data:
        if rec[u'codigo'] == c:
            q[c][rec[u'dt_fecha'].day] = rec[u'q']

op = opciones.diagnose_opciones()
html = '''<html>
<head>
<title>Resumen diario mensual odontológico</title>
<style type="text/css">
body {{ font-family: sans-serif; }}
thead {{ color: white; background-color: #444; }}
tbody th {{ color: white; background-color: #666; }}
th, td  {{ border: 1px dotted gray; }}
#res td {{ text-align: right; }}
</style>
</head>
<body>
<h1>Resumen diario mensual odontológico</h1>
<table>
<tr><td>Establecimiento</td><td>{nombre_empresa}</td><td>{clave_est}-0</td></tr>