Пример #1
0
    def __init__(self):
        # fichero de propiedades
        self.objPropiedades = Propiedades()

        # acceso al registro dconf
        self.objRegistro = Registro()

        # leer el estado del proxy
        estado_proxy=self.objRegistro.getStatus()
        print("[INFO]:  Estado del proxy: " + estado_proxy)

        #limpiando ficheros (aunque puede que aquí no sea suficiente)
        os.system("bash -c 'rm *.temp 2>/dev/null 1> /dev/null '")

        # configuración del icono
        self.ind = appindicator.Indicator.new("indicador-proxy", "estado del proxy", appindicator.IndicatorCategory.APPLICATION_STATUS)
        base_dir=os.path.abspath(os.path.dirname(sys.argv[0]))
        print "[INFO]:  directorio: ", base_dir

        self.ind.set_icon(os.path.join(base_dir,'ind-con-proxy.png'))
        self.ind.set_attention_icon (os.path.join(base_dir,'ind-sin-proxy.png'))
        self.ind.set_status(appindicator.IndicatorStatus.ACTIVE)
        if estado_proxy == "none":
            self.ind.set_status(appindicator.IndicatorStatus.ATTENTION)

        # establece el menú de la aplicación
        self.menu_setup(estado_proxy)
        self.ind.set_menu(self.menu)
Пример #2
0
class MenuRegistro:
	def __init__(self,conexion,cursor):
		self.registro = Registro(conexion,cursor)
		while True:
			print("1) Crear Registro")
			print("2) Mostrar Registro")
			print("0) Salir")
			op = input()

			if op == '1':
				self.agregar()

			elif op == '2':
				self.buscar()
			
			elif op == '0':
				break

	def agregar(self):
		fecha = datetime.now().date()
		ph = input("PH: ")
		luz = input("Luz")
		humedad = input("Humedad: ")
		co2 = input("CO2: ")
		id_planta = input("id_planta: ")
		self.registro.agregar(fecha, ph, luz, humedad, co2,id_planta)

	def buscar(self):
		id_planta = input("Id_planta: ")
		resultados = self.registro.buscar(id_planta)
		for p in resultados:
			print("{0:2} {1:10} {2:10} {3:10} {4:10} {5:10} {6:2} ".format(p[0],str(p[1]),p[2],p[3],p[4],p[5],p[6]))
class MenuRegistro:
    def __init__(self, conexion, cursor):
        self.registro = Registro(conexion, cursor)
        
        while True:
            print("1) Agregar Registro")
            print("2) Buscar")
            print("0) Salir")
            op = input("Opcion: ")
            
            if op == '1':
                self.agregar()
            elif op == '2':
                self.buscar()
            elif op == '0':
                break
                
    def agregar(self):
        co2 = float(input("CO2: "))
        humedad = float(input("Humedad: "))
        luz = float(input("Luz: "))
        ph = float(input("pH: "))
        id_planta = int(input("Id Planta: "))
        
        self.registro.agregar(co2, humedad, luz, ph, id_planta)
        
    def buscar(self):
        id_planta = int(input("Id de Planta: "))
        resultados = self.registro.buscar(id_planta)
        for r in resultados:
            print(r)
Пример #4
0
class MenuRegistro:
    def __init__(self, conexion, cursor):
        self.registro = Registro(conexion, cursor)
        while True:
            print("1) Agregar Registro")
            print("2) Buscar Registros")
            print("0) Salir")
            op = input()
            
            if op=="1":
                self.agregar()
            elif op=="2":
                self.buscar()
            elif op=="0":
                break
                
                
    def agregar(self):
        dia = input("Dia: ")
        mes = input("Mes: ")
        year = input("Año: ")
        fecha = date(int(year), int(mes), int(dia))
        ph = input("pH: ")
        luz = input("Luz: ")
        humedad = input("Humedad: ")
        c02 = input("co2: ")
        id_planta = input("ID Planta: ")
        self.registro.crear(fecha, ph, luz, humedad, c02, id_planta)
        
    def buscar(self):
        id_planta = input("ID Planta: ")
        resultados=self.registro.recuperar(id_planta)
        
        for p in resultados:
            print("{0:2} {1:5} {2:5} {3:5} {4:5} {5:5} {6:5}".format(p[0], str(p[1]), p[2], p[3], p[4], p[5], p[6]))
Пример #5
0
def api_update_registro():
    # post request
    logger.debug(f"Update: {request.form}")
    try:
        Registro.update(**request.form)
    except Exception as e:
        logger.exception(e)
        return Response(status=400)
    else:
        logger.debug("Success")
        return Response(status=200)
Пример #6
0
def api_delete_registro():
    # post request
    logger.debug(f"Delete: {request.form}")
    try:
        Registro.delete(**request.form)
    except Exception as e:
        logger.exception(e)
        return Response(response="Erro ao deletar registro", status=400)
    else:
        logger.debug("Success")
        return Response(response="Registro deletado com sucesso", status=200)
Пример #7
0
 def __init__(self, conexion, cursor):
     self.registro = Registro(conexion, cursor)
     while True:
         print("1) Agregar Registro")
         print("2) Buscar Registros")
         print("0) Salir")
         op = input()
         
         if op=="1":
             self.agregar()
         elif op=="2":
             self.buscar()
         elif op=="0":
             break
Пример #8
0
    def __init__(self):

        #Init Glade Builder
        builder = gtk.Builder()
        ficherin = os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), 'indicador-proxy.glade')
        builder.add_from_file(ficherin)
        
        #Connect signals to builder
        self.window = builder.get_object('window1')
        builder.connect_signals(self)

        # Get components from builder
        self.servidor = builder.get_object('te_servidor')
        self.puerto   = builder.get_object('te_puerto')
        self.aut      = builder.get_object('cb_aut')
        self.usuario  = builder.get_object('te_usuario')
        self.clave    = builder.get_object('te_clave')
        self.clave    = builder.get_object('te_clave')
        self.apt      = builder.get_object('cb_apt')
        self.excep    = builder.get_object('te_excep')
        self.git      = builder.get_object('cb_git')
        self.docker   = builder.get_object('cb_docker')

        # fichero de configuración
        self.objPropiedades = Propiedades()
        # acceso al registro
        self.objRegistro = Registro()

        # muestra la configuracion. Rellenamos los campos
        self.servidor.set_text(self.objRegistro.getHost())
        self.puerto.set_text(self.objRegistro.getPort())
        self.usuario.set_text(self.objRegistro.getUser())
        self.clave.set_text(self.objRegistro.getPassword())
        self.excep.set_text(self.objRegistro.getIgnoreList())
        self.aut.set_active(self.objRegistro.getAuthentication())
        
        a=self.objPropiedades.lee("proxy_apt")
        b=self.objPropiedades.lee("proxy_git")
        c=self.objPropiedades.lee("proxy_docker")
        self.apt.set_active(False)
        self.git.set_active(False)
        self.docker.set_active(False)
        if (a == "True"):
            self.apt.set_active(True)

        if (b == "True"):
            self.git.set_active(True)

        if (c == "True"):
            self.docker.set_active(True)
Пример #9
0
    def __init__(self, conexion, cursor):
        self.registro = Registro(conexion, cursor)
        while(True):
            print("1) Agregar Registro")
            print("2) Mostrar Registro")
            print("0) Salir")
            op = input("Opcion: ")

            if op == "1":
                self.agregar()
            elif op == "2":
                self.mostrar()
            elif op == "0":
                break
 def __init__(self, conexion, cursor):
     self.registro = Registro(conexion, cursor)
     
     while True:
         print("1) Agregar Registro")
         print("2) Buscar")
         print("0) Salir")
         op = input("Opcion: ")
         
         if op == '1':
             self.agregar()
         elif op == '2':
             self.buscar()
         elif op == '0':
             break
Пример #11
0
def get_new_records() -> typing.List[Registro]:
    try:
        logger.debug("Running get from spreadsheet")
        client = get_sheet_client()
        sheet = client.open("Leishmaniose").get_worksheet(0)
        updates = []
        added = []
        for i, row in enumerate(sheet.get_all_values()):
            if i == 0:
                continue
            if row[-1] != "":
                continue
            if row[0] == "" or row[1] == "":
                continue
            try:
                reg_dict = create_dict_from_str_list(row)
                reg = Registro.new(**reg_dict)
            except Exception as e:
                logger.exception(e)
            else:
                added.append(reg)
                updates.append({
                    "range": "J" + str(i + 1),
                    "values": [[reg.reg_data_adicionado]]
                })

        sheet.batch_update(updates)
    except Exception as e:
        logger.exception(e)
        raise
    else:
        return added
Пример #12
0
    def CadastrarContato(lista_reg=[]):

        opcao_sair = int(-1)

        while True:

            nome = str("")
            telefone = str("")
            aniversario = str("")

            nome = input("NOME: ")

            telefone = input("TELEFONE: ")

            aniversario = input("ANIVERSARIO: ")

            registro = Registro(nome, telefone, aniversario)

            lista_reg.append(registro)

            print("REALIZAR OUTRO CADASTRO ?")
            print(" [1] CONTINUAR \n [2] SAIR")
            opcao_sair = int(input("SELECIONE A OPÇÃO: "))

            if opcao_sair != 1:
                break

        return lista_reg
Пример #13
0
    def build(self):

        manager = ScreenManager()

        manager.add_widget(Login(name='login'))

        manager.add_widget(Registro(name='registro'))

        return manager
Пример #14
0
def api_gen_laudo():
    logger.debug(f"Generate laudo: {request.form}")
    try:
        fpath = laudomaker.make_laudos(
            Registro.get_ids([request.form.get("reg_id")]))[0]
    except Exception as e:
        logger.exception(e)
        return ""
    else:
        return url_for("api_get_laudo", fname=os.path.split(fpath)[1])
Пример #15
0
def api_gen_relatorio():
    logger.debug(f"Generate report: {request.form}")
    try:
        fpath = utils.zip_files(sheetmaker.make_sheet(
            regs=Registro.get_ids(request.form.getlist("reg_ids"))),
                                remove_dirs=True)
    except Exception as e:
        logger.exception(e)
        return ""
    else:
        return url_for("api_get_relatorio", fname=os.path.split(fpath)[1])
Пример #16
0
class MenuRegistro:
    def __init__(self, conexion, cursor):
        self.registro = Registro(conexion, cursor)

        while True:
            print("1) Agregar Registro")
            print("2) Mostrar Registro")
            print("0) Salir")
            op = input()

            if op == '1':
                self.agregar()
            elif op == '2':
                self.buscar()
            elif op == '0':
                break

    def agregar(self):
        #cultivo = input("Cultivo: ")
        #fecha = datetime.now().date()
        dia = input("Dia: ")
        mes = input("Mes: ")
        year = input("Año: ")
        fecha = date(int(year), int(mes), int(dia))
        ph = input("pH: ")
        luz = input("Luz: ")
        humedad = input("Humedad: ")
        co2 = input("CO2: ")
        id_planta = input("Id Planta: ")
        #id_clasi = input("Id Clasificacion: ")
        self.registro.agregar(fecha, ph, luz, humedad, co2, id_planta)

    def buscar(self):
        id_planta = input("Id Planta: ")
        resultados = self.registro.buscar(id_planta)

        for p in resultados:
            print("{0:3} {1:5} {2:5} {3:5} {4:5} {5:5} {6:5}".format(
                p[0], str(p[1]), p[2], p[3], p[4], p[5], p[6]))
Пример #17
0
class MenuRegistro:
    def __init__(self, conexion, cursor):
        self.registro = Registro(conexion, cursor)

        while True:
            print("1) Agregar Registro")
            print("2) Buscar Registro")
            print("0) Salir")
            op = input()

            if op == "1":
                self.agregar()
            elif op =="2":
                self.buscar()
            elif op == "0":
                break

    def agregar(self):
        id_planta = input("id_planta: ")
        if self.registro.existePlanta(id_planta) == 1:
            print ("Planta inexistente")
        else:
            dia = input("Dia: ")
            mes = input("Mes: ")
            year = input("Año: ")
            fecha = date(int(year), int(mes), int(dia))
            ph = input("PH: ")
            luz = input("Luz: ")
            humedad = input("Humedad: ")
            co2 = input("CO2: ")
            self.registro.agregar(fecha, ph, luz, humedad, co2, id_planta)

    def buscar(self):
        id_planta= input("Id planta: ")
        resultados = self.registro.buscar(id_planta)

        for p in resultados:
            print("ID: {0:2} \nFecha: {1:10} \nPH:........ {2:5} \nLuz:.......{3:5} \nHumedad:... {4:5} \nCO2:....... {5:5}\n".
            format(p[0], str(p[1]), p[2], p[3], p[4], p[5]))
Пример #18
0
class MenuRegistro:
    def __init__(self, conexion, cursor):
        self.registro = Registro(conexion, cursor)
        while(True):
            print("1) Agregar Registro")
            print("2) Mostrar Registro")
            print("0) Salir")
            op = input("Opcion: ")

            if op == "1":
                self.agregar()
            elif op == "2":
                self.mostrar()
            elif op == "0":
                break

    def agregar(self):
        dia = input("Dia: ")
        mes = input("Mes: ")
        anio = input("Año: ")
        fecha = date(int(anio), int(mes), int(dia))
        ph = float(input("PH: "))
        luz= float(input("Luz: "))
        humedad = float(input("Humedad: "))
        co2 = float(input("CO2: "))
        planta_id = input("Planta: ")
        self.registro.crear(fecha, ph, luz, humedad, co2, planta_id)

    def mostrar(self):
        try:
            temp = ["No","Fecha","PH","Luz","Humedad","CO2"]
            ID = input("Planta: ")
            resultados = self.registro.recuperar(ID)
            print("| {0:2} | {1:10} | {2:4} | {3:4} | {4:7} | {5:4} |".format(temp[0], temp[1], temp[2], temp[3], temp[4], temp[5]))
            for n in resultados:
                print("| {0:2} | {1:10} | {2:4} | {3:4} | {4:4} | {5:4} |".format(n[0], str(n[1]), n[2], n[3], n[4], n[5]))
        except:
            print("No se ha encontrado el registro")
Пример #19
0
def api_registrar():
    try:
        logger.debug(f"Request of register: {request.form}")
        reg = Registro.new(
            **{
                f"reg_{dado['nome']}": request.form[f"reg_{dado['nome']}"]
                for dado in utils.get_data() if dado["coletar"]
            })
    except KeyError as e:
        logger.exception(e)
        return Response(
            response=f"Erro ao adicionar registro, dados insuficientes",
            status=400)
    except Exception as e:
        logger.exception(e)
        return Response(response=f"Erro ao adicionar registro", status=400)
    else:
        logger.debug("Register success")
        return Response(
            response=f"""Adicionado com sucesso: '{reg.brief()}'""",
            status=201)
Пример #20
0
from sala import Sala
from aluno import Aluno
from professor import Professor

a1 = Aluno("Wellington", "Sistemas", 9456839, "3245-0090", "*****@*****.**")
a2 = Aluno("Dani", "Sistemas", 9456839, "3245-0090", "*****@*****.**")
a3 = Aluno("Thomaz", "Licenciatura em Computação", 9456839, "3245-0090",
           "*****@*****.**")

p = Professor("Alex Zissou", "3245-6788", "*****@*****.**")

alunos = [a1, a2, a3]
professores = [p]

sala = Sala("19", "IEGA", professores, alunos, 2)
r = Registro(sala, "Wellington")
r2 = Registro(sala, "Dani")
r3 = Registro(sala, "Thomaz")
sala2 = Sala("23", "Acessar", p, [],
             1)  # lista de alunos vazia, sala sem aluno


def test_emprestar_ok():
    assert r.pegar_chave() == 0


def test_devolver_ok():
    assert r.devolver_chave() == 0


def test_emprestar_aluno_notOk():
Пример #21
0
def test_emprestar_aluno_notOk():
    r = Registro(sala, "Junior")
    assert r.pegar_chave() == -1
Пример #22
0
def test_sala_sem_aluno():
    r = Registro(sala2, "Junior")
    assert r.pegar_chave() == -1
Пример #23
0
class IndicadorProxy:
    configWin = None
    objRegistro = None
    objPropiedades = None
    strCmd = ""
    ficheros = []
    usarSudo = False
      
    def __init__(self):
        # fichero de propiedades
        self.objPropiedades = Propiedades()

        # acceso al registro dconf
        self.objRegistro = Registro()

        # leer el estado del proxy
        estado_proxy=self.objRegistro.getStatus()
        print("[INFO]:  Estado del proxy: " + estado_proxy)

        #limpiando ficheros (aunque puede que aquí no sea suficiente)
        os.system("bash -c 'rm *.temp 2>/dev/null 1> /dev/null '")

        # configuración del icono
        self.ind = appindicator.Indicator.new("indicador-proxy", "estado del proxy", appindicator.IndicatorCategory.APPLICATION_STATUS)
        base_dir=os.path.abspath(os.path.dirname(sys.argv[0]))
        print "[INFO]:  directorio: ", base_dir

        self.ind.set_icon(os.path.join(base_dir,'ind-con-proxy.png'))
        self.ind.set_attention_icon (os.path.join(base_dir,'ind-sin-proxy.png'))
        self.ind.set_status(appindicator.IndicatorStatus.ACTIVE)
        if estado_proxy == "none":
            self.ind.set_status(appindicator.IndicatorStatus.ATTENTION)

        # establece el menú de la aplicación
        self.menu_setup(estado_proxy)
        self.ind.set_menu(self.menu)

    def menu_setup(self, estado_proxy):
        self.menu = gtk.Menu()

        self.menu_activar = gtk.MenuItem("Usar proxy")
        self.menu_activar.connect("activate", self.activa_proxy)
        self.menu.append(self.menu_activar)
        self.menu_desactivar = gtk.MenuItem("Sin proxy")
        self.menu_desactivar.connect("activate", self.desactiva_proxy)
        self.menu.append(self.menu_desactivar)

        if estado_proxy == "none":	
            self.menu_activar.show()
        else:
            self.menu_desactivar.show()

        self.blanco_item = gtk.MenuItem()
        self.blanco_item.show()
        self.menu.append(self.blanco_item)

        self.menu_configurar = gtk.MenuItem("Configurar")
        self.menu_configurar.connect("activate", self.configurar)

        self.menu.append(self.menu_configurar)
        self.menu_configurar.show()

        # self.menu_prueba = gtk.MenuItem("Prueba")
        # self.menu_prueba.connect("activate", self.prueba)
        # self.menu.append(self.menu_prueba)
        # self.menu_prueba.show()

        self.blanco_item = gtk.MenuItem()
        self.blanco_item.show()
        self.menu.append(self.blanco_item)

        self.quit_item = gtk.MenuItem("Quit")
        self.quit_item.connect("activate", self.quit)
        self.quit_item.show()
        self.menu.append(self.quit_item)

    def quit(self, widget):
        sys.exit(0)

    def  activa_proxy(self, widget):
        print("[DEBUG]: Activar proxy")

        self.ficheros = []
        self.usarSudo = False  #de momento false durante la ejecución ya se verá
        # leer información del registro
        servidor = self.objRegistro.getHost()
        puerto   = self.objRegistro.getPort()
        usuario  = None
        clave    = None
        if self.objRegistro.getAuthentication() == "True":
            usuario  = self.objRegistro.getUser()
            clave    = self.objRegistro.getPassword()
        noproxy  = self.objRegistro.getIgnoreList()



        # estableciendo proxy para aplicaciones de consola (.bashrc)                
        self.pon_proxy_bashrc(servidor, puerto, usuario, clave, noproxy)

        
        if (self.objPropiedades.lee("proxy_apt") == "True"):
            # Establece el proxy para 'apt-conf'
            self.pon_proxy_apt_conf(servidor, puerto, usuario, clave, noproxy)

        if (self.objPropiedades.lee("proxy_git") == "True"):
            # Establece el proxy para 'git'
            self.pon_proxy_git(servidor, puerto, usuario, clave)

        if (self.objPropiedades.lee("proxy_docker") == "True" ):
            # Establece el proxy para 'docker'
            self.pon_proxy_docker(servidor, puerto, usuario, clave, noproxy)

        # escribe las modificaciones en los ficheros si todo está OK
        if (self.modifica_ficheros()):
            # activa en el registro el proxy
            self.objRegistro.setStatus('manual')
            # modificando menu e icono
            self.menu_activar.hide()
            self.menu_desactivar.show()
            self.ind.set_status(appindicator.IndicatorStatus.ACTIVE)
       
    def desactiva_proxy(self, widget):
        self.ficheros = []
        self.usarSudo = False  #de momento false durante la ejecución ya se verá

        # Desactivando el proxy para las aplicaciones de consola (.bashrc)
        self.quita_proxy_bashrc()      
        self.quita_proxy_apt_conf()    
        self.quita_proxy_git()         
        self.quita_proxy_docker()      

        # escribe las modificaciones en los ficheros si todo está OK
        if (self.modifica_ficheros()):
            # Desactivando el proxy en el registro
            self.objRegistro.setStatus('none')
            # modificando menu e icono
            self.menu_activar.show()
            self.menu_desactivar.hide()
            self.ind.set_status(appindicator.IndicatorStatus.ATTENTION)

    #solicita clave para copiar ficheros del sitema
    # devuelve true si todo está ok sino devuelve False
    def modifica_ficheros(self):
        var=0

        comando= "bash -c '"
        if len(self.ficheros)>0:
            if self.usarSudo:
                comando =  "gksudo -m 'Se requiere su contraseña para realizar los cambios en el sistema' -- bash -c '"

            s = len(self.ficheros)
            for c in xrange(0,s,2):
                comando += "cp " + self.ficheros[c+1] + ' ' + self.ficheros[c] + "; "
            comando += "'"

            var = os.system(comando)
            s = len(self.ficheros)
            for c in xrange(0,s,2):
                os.remove(self.ficheros[c+1])

        retorno= True
        if (var != 0):
            retorno=False

        return retorno

    # Opción al seleccionar 'configurar'
    def configurar(self, widget):
        if self.configWin is None:
            self.configWin = ConfigWin()
        else:
            self.configWin.__init__()
        self.configWin.show()

    # Opción que se lanza al seleccionar el menú prueba
    def prueba(self, widget):
        print ("[DEBUG]  Prueba")
       
    # Activa el proxy en el fichero ~/.bashrc
    def pon_proxy_bashrc(self, proxy, puerto, usuario, clave, noproxy):
        home = expanduser("~")
        f = home+"/.bashrc"
        print "[DEBUG]: establecer proxy en ", f
        try:
            fichero = open(f, "a")
            if (usuario):
                fichero.write("export HTTP_PROXY=\"http://%s:%s@%s:%s\"\n" % (usuario, clave, proxy, puerto))
                fichero.write("export HTTPS_PROXY=\"https://%s:%s@%s:%s\"\n" % (usuario, clave, proxy, puerto))
                fichero.write("export FTP_PROXY=\"ftp://%s:%s@%s:%s\"\n" % (usuario, clave, proxy, puerto))
            else:
                fichero.write("export HTTP_PROXY=\"http://%s:%s\"\n" % (proxy, puerto))
                fichero.write("export HTTPS_PROXY=\"https://%s:%s\"\n" % (proxy, puerto))
                fichero.write("export FTP_PROXY=\"ftp://%s:%s\"\n" % (proxy, puerto))

            fichero.write("export NO_PROXY=\"%s\"\n" % (noproxy))
            fichero.close()
        except Exception, e:
            print "[ERROR]:  except en pon_proxy_bashrc: %s" % e
            pass             
Пример #24
0
 def incluir(self, end, end_memp=-1, end_swap=-1):
     self.registros.append(Registro(end, end_memp, end_swap))
Пример #25
0
def extractAndTransform(processNumber):

    #ETL for Site 1
    if processNumber == 1:
        dataDesaparecimentoRegexSite1 = re.compile('[0-9]+/[0-9]+/[0-9]+')

        for record in resultsCrawler1:
            nome = record['nome'].replace('\'', '').strip()
            nome = nome.lower()

            imagem = record['img'].replace(
                '\'', '"').strip() if 'img' in record.keys() else ''

            sexo = record['sexo'].replace('\'', '')
            sexo = sexo.lower().replace('sexo:',
                                        '').replace('masculino', 'M').replace(
                                            'feminino', 'F').strip()

            olhos = record['olhos'].lower().replace('olhos:', '').strip()
            corDaPele = record['corDaPele'].lower().replace(
                'cor da pele:', '').strip()
            cabelo = record['cabelo'].lower().replace('cabelos:', '').strip()
            pesoAproximado = record['pesoAproximado'].lower().replace(
                'peso aproximado:', '').strip()
            alturaAproximada = record['alturaAproximada'].lower().replace(
                'altura aproximada:', '').strip()
            tipoFisico = record['tipoFisico'].lower().replace(
                'tipo físico:', '').strip()
            transtornoMental = record['transtornoMental'].lower().replace(
                'tem algum tipo de transtorno mental?', '').strip()
            idade = record['idadeHoje'].lower().replace('idade hoje:',
                                                        '').strip()
            dataNascimento = ''

            dataDesaparecimentoOrig = record['dataDesaparecimento'].replace(
                '\'', '').replace('Desapareceu em ', '').strip()
            diasDesaparecido = dataDesaparecimentoOrig.split('(')[1].replace(
                ')', '')

            dataDesaparecimento = dataDesaparecimentoRegexSite1.match(
                dataDesaparecimentoOrig)
            if dataDesaparecimento != None:
                dataDesaparecimento = dataDesaparecimento.group().strip()
            else:
                dataDesaparecimento = dataDesaparecimentoOrig

            localDesaparecimento = record['local'].replace('\'', '').replace(
                '.', '').strip()
            localDesaparecimento = localDesaparecimento.split('/')
            bairroDesaparecimento = ''
            cidadeDesaparecimento = ''
            ufDesaparecimento = ''
            if len(localDesaparecimento) > 2:
                bairroDesaparecimento = localDesaparecimento[0]
                cidadeDesaparecimento = localDesaparecimento[1]
                ufDesaparecimento = localDesaparecimento[2]
            elif len(localDesaparecimento) == 2:
                cidadeDesaparecimento = localDesaparecimento[0]
                ufDesaparecimento = localDesaparecimento[1]

            marcaCaracteristica = ''
            status = record['status']
            informacoes = record['observacao'].replace('\'', '').strip()
            boletimOcorrencia = record['boletimOcorrencia'].lower().replace(
                'foi feito boletim de ocorrência do caso?', '').strip()
            fonte = record['fonte'] + ' '

            reg.update({nome: nome})
            objeto = Registro(nome, imagem, sexo, olhos, corDaPele, cabelo,
                              pesoAproximado, alturaAproximada, tipoFisico,
                              transtornoMental, idade, dataNascimento,
                              diasDesaparecido, dataDesaparecimento,
                              bairroDesaparecimento, cidadeDesaparecimento,
                              ufDesaparecimento, marcaCaracteristica, status,
                              informacoes, boletimOcorrencia, fonte)

            try:
                reg.update({nome: objeto})
            except KeyError:
                reg[nome] = objeto

        #print(len(reg))

    #ETL for Site 2
    if processNumber == 2:
        dddDesaparecimentoRegex = re.compile('\([0-9]+')

        for record in resultsCrawler2:
            nome = record['nome'].replace('\'', '').strip()
            nome = nome.lower()

            imagem = record['img'].replace(
                '\'', '"').strip() if 'img' in record.keys() else ''

            sexo = record['sexo'].replace('\'', '').strip()
            olhos = record['olhos'].replace('\'', '').strip()
            corDaPele = record['raca'].strip()
            cabelo = cabelo = record['cabelo'].lower().strip()
            pesoAproximado = record['pesoAproximado'].strip(
            ) if record['pesoAproximado'].strip() != '0' else ''
            alturaAproximada = record['alturaAproximada'].strip(
            ) if record['alturaAproximada'].strip() != '0' else ''
            tipoFisico = ''
            transtornoMental = ''

            dataNascimento = record['dataNascimento'].replace('\'', '').strip()
            idade = ''  #fazer metodo pra calcular a idade

            dataDesaparecimento = record['dataDesaparecimento'].replace(
                '\'', '').strip()
            diasDesaparecido = ''  #fazer metodo pra calcular os dias de desaparecimento

            dddDesaparecimento = dddDesaparecimentoRegex.match(
                record['telContato'])
            bairroDesaparecimento = ''
            ufDesaparecimento = ''
            cidadeDesaparecimento = ''

            if dddDesaparecimento != None:
                dddDesaparecimento = dddDesaparecimento.group().replace(
                    '(', '')
                ufDesaparecimento = Util.mapDDD(dddDesaparecimento)

            marcaCaracteristica = ''
            status = record['status'].strip()
            informacoes = record['observacao'].replace('\'', '').strip()
            boletimOcorrencia = ''  #fazer metodo pra verificar no email de contato se eh de algum orgao responsavel, assim, provavelmente tem B.O.
            fonte = record['fonte'].strip() + ' '

            try:
                if reg[nome].imagem == '': reg[nome].imagem = imagem
                if reg[nome].sexo == '': reg[nome].sexo = sexo
                if reg[nome].olhos == '': reg[nome].olhos = olhos
                if reg[nome].corDaPele == '': reg[nome].corDaPele = corDaPele
                if reg[nome].cabelo == '': reg[nome].cabelo = cabelo
                if reg[nome].pesoAproximado == '':
                    reg[nome].pesoAproximado = pesoAproximado
                if reg[nome].alturaAproximada == '':
                    reg[nome].alturaAproximada = alturaAproximada
                if reg[nome].tipoFisico == '':
                    reg[nome].tipoFisico = tipoFisico
                if reg[nome].transtornoMental == '':
                    reg[nome].transtornoMental = transtornoMental
                if reg[nome].dataNascimento == '':
                    reg[nome].dataNascimento = dataNascimento
                if reg[nome].idade == '': reg[nome].idade = idade
                if reg[nome].dataDesaparecimento == '':
                    reg[nome].dataDesaparecimento = dataDesaparecimento
                if reg[nome].diasDesaparecido == '':
                    reg[nome].diasDesaparecido = diasDesaparecido
                if reg[nome].bairroDesaparecimento == '':
                    reg[nome].bairroDesaparecimento = bairroDesaparecimento
                if reg[nome].cidadeDesaparecimento == '':
                    reg[nome].cidadeDesaparecimento = cidadeDesaparecimento
                if reg[nome].ufDesaparecimento == '':
                    reg[nome].ufDesaparecimento = ufDesaparecimento
                if reg[nome].marcaCaracteristica == '':
                    reg[nome].marcaCaracteristica = marcaCaracteristica
                if reg[nome].status == '': reg[nome].status = status
                if reg[nome].informacoes == '':
                    reg[nome].informacoes = informacoes
                if reg[nome].boletimOcorrencia == '':
                    reg[nome].boletimOcorrencia = boletimOcorrencia
                reg[nome].fonte += fonte

            except KeyError:
                objeto = Registro(nome, imagem, sexo, olhos, corDaPele, cabelo,
                                  pesoAproximado, alturaAproximada, tipoFisico,
                                  transtornoMental, idade, dataNascimento,
                                  diasDesaparecido, dataDesaparecimento,
                                  bairroDesaparecimento, cidadeDesaparecimento,
                                  ufDesaparecimento, marcaCaracteristica,
                                  status, informacoes, boletimOcorrencia,
                                  fonte)
                reg[nome] = objeto

        #print(len(reg))

    #ETL for Site 5
    if processNumber == 3:
        dataDesaparecimentoRegex = re.compile('Data do desaparecimento:')
        localDesaparecimentoRegex = re.compile(
            '[lL]ocal do desaparecimento:|[dD]esapareceu de|[dD]esapareceu do|[dD]esapareceu da|[dD]esapareceu em|[dD]esapareceu no'
        )
        corDaPeleRegex = re.compile('Cor|cor')
        sexoRegex = re.compile('Sexo|sexo')

        for record in resultsCrawler5:
            nome = record['nome'].replace('\'', '').strip()
            nome = nome.lower()

            imagem = record['img'].replace(
                '\'', '"').strip() if 'img' in record.keys() else ''

            sexo = ''
            olhos = ''
            corDaPele = ''
            cabelo = ''
            pesoAproximado = ''
            alturaAproximada = ''
            corDaPele = ''
            tipoFisico = ''
            transtornoMental = ''
            idade = ''
            dataNascimento = ''
            diasDesaparecido = ''
            dataDesaparecimento = ''
            bairroDesaparecimento = ''
            cidadeDesaparecimento = ''
            ufDesaparecimento = 'RS'
            marcaCaracteristica = ''
            informacoes = ''
            boletimOcorrencia = ''

            info = record['informacoes'].replace('\'', '').strip()

            fonte = record['fonte'].strip() + ' '
            arrayInfo = info.split('$$$$')

            for r in arrayInfo:
                if dataDesaparecimentoRegex.search(r) != None:
                    dataDesaparecimento = r.replace('Data do desaparecimento:',
                                                    '').strip()
                if localDesaparecimentoRegex.match(r) != None:
                    cidadeDesaparecimentoAux = r.replace(
                        'Local do desaparecimento:',
                        '').replace('Desapareceu de ', '').replace(
                            'Desapareceu do ',
                            '').replace('Desapareceu da ', '').replace(
                                'Desapareceu em ',
                                '').replace('Leia mais', '').strip()
                    cidadeDesaparecimentoAux = cidadeDesaparecimentoAux.split(
                        '/')
                    cidadeDesaparecimentoAux = cidadeDesaparecimentoAux[0]
                    cidadeDesaparecimento = cidadeDesaparecimentoAux.split(
                        '-')[0].strip()
                if corDaPeleRegex.match(r) != None:
                    corDaPele = r.replace('Cor:', '').strip()
                if sexoRegex.match(r) != None:
                    sexo = r.replace('Sexo:', '').strip().lower().replace(
                        'masculino', 'M').replace('feminino', 'F')

            status = record['status'].strip()

            try:
                if reg[nome].imagem == '': reg[nome].imagem = imagem
                if reg[nome].sexo == '': reg[nome].sexo = sexo
                if reg[nome].olhos == '': reg[nome].olhos = olhos
                if reg[nome].corDaPele == '': reg[nome].corDaPele = corDaPele
                if reg[nome].cabelo == '': reg[nome].cabelo = cabelo
                if reg[nome].pesoAproximado == '':
                    reg[nome].pesoAproximado = pesoAproximado
                if reg[nome].alturaAproximada == '':
                    reg[nome].alturaAproximada = alturaAproximada
                if reg[nome].tipoFisico == '':
                    reg[nome].tipoFisico = tipoFisico
                if reg[nome].transtornoMental == '':
                    reg[nome].transtornoMental = transtornoMental
                if reg[nome].dataNascimento == '':
                    reg[nome].dataNascimento = dataNascimento
                if reg[nome].idade == '': reg[nome].idade = idade
                if reg[nome].dataDesaparecimento == '':
                    reg[nome].dataDesaparecimento = dataDesaparecimento
                if reg[nome].diasDesaparecido == '':
                    reg[nome].diasDesaparecido = diasDesaparecido
                if reg[nome].bairroDesaparecimento == '':
                    reg[nome].bairroDesaparecimento = bairroDesaparecimento
                if reg[nome].cidadeDesaparecimento == '':
                    reg[nome].cidadeDesaparecimento = cidadeDesaparecimento
                if reg[nome].ufDesaparecimento == '':
                    reg[nome].ufDesaparecimento = ufDesaparecimento
                if reg[nome].marcaCaracteristica == '':
                    reg[nome].marcaCaracteristica = marcaCaracteristica
                if reg[nome].status == '': reg[nome].status = status
                if reg[nome].informacoes == '':
                    reg[nome].informacoes = informacoes
                if reg[nome].boletimOcorrencia == '':
                    reg[nome].boletimOcorrencia = boletimOcorrencia
                reg[nome].fonte += fonte

            except KeyError:
                objeto = Registro(nome, imagem, sexo, olhos, corDaPele, cabelo,
                                  pesoAproximado, alturaAproximada, tipoFisico,
                                  transtornoMental, idade, dataNascimento,
                                  diasDesaparecido, dataDesaparecimento,
                                  bairroDesaparecimento, cidadeDesaparecimento,
                                  ufDesaparecimento, marcaCaracteristica,
                                  status, informacoes, boletimOcorrencia,
                                  fonte)
                reg[nome] = objeto

    #ETL for Site 6
    if processNumber == 6:
        for record in resultsCrawler6:
            nome = record['nome'].replace('\'', '').strip()
            nome = nome.lower()

            imagem = record['img'].replace(
                '\'', '"').strip() if 'img' in record.keys() else ''

            idade = record['idade'].strip()
            dataNascimento = record['dataNascimento'].strip()
            informacoes = record['informacoes'].replace('\'', '').strip()
            dataDesaparecimento = record['dataDesaparecimento'].strip()
            diasDesaparecido = record['diasDesaparecido'].strip()
            sexo = record['sexo'].strip()
            pesoAproximado = record['pesoAproximado'].strip()
            alturaAproximada = record['alturaAproximada'].strip()
            olhos = record['olhos'].strip()
            corDaPele = record['corDaPele'].strip()
            marcaCaracteristica = record['observacao'].strip()
            cabelo = record['cabelo'].strip()

            local = record['local'].strip()
            local = local.split(',')
            ufDesaparecimento = ''
            cidadeDesaparecimento = ''
            bairroDesaparecimento = ''
            if len(local) == 2:
                ufDesaparecimento = local[1].strip()
                cidadeDesaparecimento = local[0].strip()
            elif len(local) == 3:
                ufDesaparecimento = local[2].strip()
                cidadeDesaparecimento = local[1].strip()
                bairroDesaparecimento = local[0].strip()

            fonte = record['fonte'].strip() + ' '
            status = record['status'].strip()

            try:
                if reg[nome].imagem == '': reg[nome].imagem = imagem
                if reg[nome].sexo == '': reg[nome].sexo = sexo
                if reg[nome].olhos == '': reg[nome].olhos = olhos
                if reg[nome].corDaPele == '': reg[nome].corDaPele = corDaPele
                if reg[nome].cabelo == '': reg[nome].cabelo = cabelo
                if reg[nome].pesoAproximado == '':
                    reg[nome].pesoAproximado = pesoAproximado
                if reg[nome].alturaAproximada == '':
                    reg[nome].alturaAproximada = alturaAproximada
                if reg[nome].tipoFisico == '':
                    reg[nome].tipoFisico = tipoFisico
                if reg[nome].transtornoMental == '':
                    reg[nome].transtornoMental = transtornoMental
                if reg[nome].dataNascimento == '':
                    reg[nome].dataNascimento = dataNascimento
                if reg[nome].idade == '': reg[nome].idade = idade
                if reg[nome].dataDesaparecimento == '':
                    reg[nome].dataDesaparecimento = dataDesaparecimento
                if reg[nome].diasDesaparecido == '':
                    reg[nome].diasDesaparecido = diasDesaparecido
                if reg[nome].bairroDesaparecimento == '':
                    reg[nome].bairroDesaparecimento = bairroDesaparecimento
                if reg[nome].cidadeDesaparecimento == '':
                    reg[nome].cidadeDesaparecimento = cidadeDesaparecimento
                if reg[nome].ufDesaparecimento == '':
                    reg[nome].ufDesaparecimento = ufDesaparecimento
                if reg[nome].marcaCaracteristica == '':
                    reg[nome].marcaCaracteristica = marcaCaracteristica
                if reg[nome].status == '': reg[nome].status = status
                if reg[nome].informacoes == '':
                    reg[nome].informacoes = informacoes
                if reg[nome].boletimOcorrencia == '':
                    reg[nome].boletimOcorrencia = boletimOcorrencia
                reg[nome].fonte += fonte
            except KeyError:
                objeto = Registro(nome, imagem, sexo, olhos, corDaPele, cabelo,
                                  pesoAproximado, alturaAproximada, tipoFisico,
                                  transtornoMental, idade, dataNascimento,
                                  diasDesaparecido, dataDesaparecimento,
                                  bairroDesaparecimento, cidadeDesaparecimento,
                                  ufDesaparecimento, marcaCaracteristica,
                                  status, informacoes, boletimOcorrencia,
                                  fonte)
                reg[nome] = objeto

    #print(len(reg)) #Quantidade de registros coletados com nomes diferentes
    #load to database
    load()
Пример #26
0
def api_get():
    filtro_id = request.args.get("filtro_id", "")
    filtro_ra = request.args.get("filtro_ra", "")
    filtro_nome_animal = request.args.get("filtro_nome_animal", "")
    filtro_nome_dono = request.args.get("filtro_nome_dono", "")
    filtro_endereco = request.args.get("filtro_endereco", "")
    filtro_quadra = request.args.get("filtro_quadra", "")
    filtro_situacao_coleta = request.args.get("filtro_situacao_coleta", "")
    filtro_data_col_inicio = request.args.get("filtro_data_col_inicio", "")
    filtro_data_col_fim = request.args.get("filtro_data_col_fim", "")
    filtro_data_exa_inicio = request.args.get("filtro_data_exa_inicio", "")
    filtro_data_exa_fim = request.args.get("filtro_data_exa_fim", "")
    filtro_teste_resultado = request.args.get("filtro_teste_resultado", "")
    filtro_data_add_inicio = request.args.get("filtro_data_add_inicio", "")
    filtro_data_add_fim = request.args.get("filtro_data_add_fim", "")

    regs = Registro.get_all(desc=request.args.get("desc", None) is not None)
    results = []
    try:
        for reg in regs:
            logger_filter.debug(reg)
            if filtro_id != "" and str(reg.reg_id) != filtro_id:
                logger_filter.debug("Filtered by id")
                continue
            if filtro_ra != "" and reg.reg_ra != filtro_ra:
                logger_filter.debug("Filtered by ra")
                continue
            if filtro_nome_animal != "" and filtro_nome_animal not in reg.reg_nome_animal:
                logger_filter.debug("Filtered by nome animal")
                continue
            if filtro_nome_dono != "" and filtro_nome_dono in reg.reg_nome_dono:
                logger_filter.debug("Filtered by nome dono")
                continue
            if filtro_endereco != "" and filtro_endereco in reg.reg_endereco:
                logger_filter.debug("Filtered by endereco")
                continue
            if filtro_quadra != "" and reg.reg_quadra != filtro_quadra:
                logger_filter.debug("Filtered by quadra")
                continue
            if filtro_situacao_coleta != "" and reg.reg_situacao_coleta != filtro_situacao_coleta:
                logger_filter.debug("Filtered by situação coleta")
                continue
            if filtro_data_col_inicio != "" and not datetime.strptime(
                    reg.reg_data_coleta,
                    "%Y-%m-%d").date() >= datetime.strptime(
                        filtro_data_col_inicio, "%Y-%m-%d").date():
                logger_filter.debug("Filtered by data coleta inicio")
                continue
            if filtro_data_col_fim != "" and not datetime.strptime(
                    reg.reg_data_coleta,
                    "%Y-%m-%d").date() <= datetime.strptime(
                        filtro_data_col_fim, "%Y-%m-%d").date():
                logger_filter.debug("Filtered by data coleta fim")
                continue
            if filtro_data_exa_inicio != "" and not datetime.strptime(
                    reg.reg_teste_data_exame,
                    "%Y-%m-%d").date() >= datetime.strptime(
                        filtro_data_exa_inicio, "%Y-%m-%d").date():
                logger_filter.debug("Filtered by teste data exame inicio")
                continue
            if filtro_data_exa_fim != "" and not datetime.strptime(
                    reg.reg_teste_data_exame,
                    "%Y-%m-%d").date() <= datetime.strptime(
                        filtro_data_exa_fim, "%Y-%m-%d").date():
                logger_filter.debug("Filtered by teste data exame fim")
                continue
            if filtro_teste_resultado != "" and reg.reg_teste_resultado != filtro_teste_resultado:
                logger_filter.debug("Filtered by teste resultado")
                continue
            if filtro_data_add_inicio != "" and not datetime.strptime(
                    reg.reg_data_adicionado,
                    "%Y-%m-%d %H:%M:%S").date() >= datetime.strptime(
                        filtro_data_add_inicio, "%Y-%m-%d").date():
                logger_filter.debug("Filtered by data adicionado")
                continue
            if filtro_data_add_fim != "" and not datetime.strptime(
                    reg.reg_data_adicionado,
                    "%Y-%m-%d %H:%M:%S").date() <= datetime.strptime(
                        filtro_data_add_fim, "%Y-%m-%d").date():
                continue
            results.append(reg)
    except Exception as e:
        logger.debug(request.args.to_dict())
        logger.exception(e)
        return Response(response=json.dumps([]),
                        status=400,
                        mimetype="application/json")
    else:
        return Response(response=json.dumps(results,
                                            default=lambda x: x.json()),
                        status=200,
                        mimetype="application/json")