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)
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)
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
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']
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)
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)
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>