コード例 #1
0
 def pesquisa(self, button = None):
     if(self.txtPesquisa.get_text() != '' or (self.inicio)):
         pesquisa = self.txtPesquisa.get_text()
         if self.rbEmail.get_active():
             filtro = 'email'
         elif self.rbDocumento.get_active():
             filtro = 'documento'
         elif self.rbNomeCliente.get_active():
             filtro = 'cliente.nome'
         if self.inicio:
             clientes = BancoDados().select("cliente", " nome, tipo_documento, documento, ddd, telefone1, endereco, email", " ")
         else:
             clientes = BancoDados().select("cliente", " nome, tipo_documento, documento, ddd, telefone1, endereco, email",
                                      "where "+ filtro + " = '" + pesquisa +"' ")
         self.ListaParaAdicionar = []
         if clientes != ():
             i = 0
             while i < len(clientes):
                 self.ListaParaAdicionar.append([clientes[i][0], clientes[i][1]+ ' - ' +clientes[i][2],
                                                '('+clientes[i][3]+')'+' '+clientes[i][4][:3]+'-'+clientes[i][4][4:],
                                                clientes[i][5], clientes[i][6]])
                 i += 1
             self.atualizar()
         else:
             self.atualizar()
             funcoesGenericas.mostrarAviso(self.winListaCliente, "Não foi encontrado nenhum resultado para pesquisa escolhida!!!")
     else:
         funcoesGenericas.mostrarAviso(self.winListaCliente, "Digite algo no campo pesquisa!")
    def cadastrar(self, widget=None):

        if not(self.txtNomeServico.get_text() == '' or  self.txtDescricao.get_buffer().get_text(self.txtDescricao.get_buffer().\
                                                                      get_start_iter(),
                                                                      self.txtDescricao.get_buffer().\
                                                                      get_end_iter()) == ''):
            dict = {"nome" : self.txtNomeServico.get_text(),
                    "descricao" : self.txtDescricao.get_buffer().get_text(self.txtDescricao.get_buffer().\
                                                                          get_start_iter(),
                                                                          self.txtDescricao.get_buffer().\
                                                                          get_end_iter())
                    }
            con = BancoDados()
            if con.inserir("servico", dict) != None:
                funcoesGenericas.mostrarAviso(
                    self.wincadastrarServico,
                    "Serviço cadastrado com sucesso!")
                self.limpar()
            else:
                funcoesGenericas.mostrarAviso(
                    self.wincadastrarServico,
                    "Não foi possivel cadastrar o serviço.")
        else:
            funcoesGenericas.mostrarAviso(self.wincadastrarServico,
                                          'Favor preencher todos os campos!')
    def persistirCadastro(self):
        """Funcao local para persistir o cadastro do funcionario no banco de dados"""
        if(self.primeiroAcesso):
            admin = '1'
        else:
            if self.rbSim.get_active():
                admin = '1'
            else:
                admin = '0'
        dictCampos = {"NOME" : self.txtNome.get_text(),
                       "LOGIN" : self.txtLogin.get_text(),
                       "SENHA" : self.txtSenha.get_text(),
                       "DOCUMENTO" : self.txtDocumento.get_text(),
                       "TIPO_DOCUMENTO" : funcoesGenericas.getValorAtualComboBox(self.cbxTipoDocumento),       
                       "TELEFONE" : self.txtTelefone.get_text(),
                       "DDD" : self.txtDDD.get_text(),
                       "EMAIL" : self.txtEmail.get_text(),
                       "CEP" : self.txtCEP.get_text(),
                       "NASCIMENTO": self.txtNascimento.get_text(),
                       "CARGO": funcoesGenericas.getValorAtualComboBox(self.cbxCargo),
                       "ENDERECO" : funcoesGenericas.formatarEndereco(self.txtEndereco.get_text(), 
                                                                      self.txtNumero.get_text(),
                                                                      self.txtComplemento.get_text(),
                                                                      self.txtBairro.get_text(),
                                                                      self.txtCidade.get_text(), 
                                                                      self.txtEstado.get_text()),
                      "administrador": admin
                      } 
        con = BancoDados()

        if con.inserir("funcionario",dictCampos) != None:
            return True
        else:
            return False
コード例 #4
0
 def gerarOS(self, widget = None):
     dictOS = {"obs":"Não foi alterada",
                 "cliente_id": 1,
                 "funcionario_id": 1,
                 #"scaner":blob,
                 "pasta":"0 - 0",
                 "alterada": 0
                 }
     criar = BancoDados().inserir("os", dictOS)
     if criar != None:
         numeroOS = BancoDados().select("os", "count(*)", ' ')
         funcoesGenericas.mostrarAviso(self.winMenu, "O número da OS é: "+ str(numeroOS[0][0]))
     else:
         funcoesGenericas.mostrarAviso(self.winMenu, "Erro ao gerar a Ordem de Serviço.")
    def persistirCadastro(self):
        """Funcao local para persistir o cadastro do funcionario no banco de dados"""
        if (self.primeiroAcesso):
            admin = '1'
        else:
            if self.rbSim.get_active():
                admin = '1'
            else:
                admin = '0'
        dictCampos = {
            "NOME":
            self.txtNome.get_text(),
            "LOGIN":
            self.txtLogin.get_text(),
            "SENHA":
            self.txtSenha.get_text(),
            "DOCUMENTO":
            self.txtDocumento.get_text(),
            "TIPO_DOCUMENTO":
            funcoesGenericas.getValorAtualComboBox(self.cbxTipoDocumento),
            "TELEFONE":
            self.txtTelefone.get_text(),
            "DDD":
            self.txtDDD.get_text(),
            "EMAIL":
            self.txtEmail.get_text(),
            "CEP":
            self.txtCEP.get_text(),
            "NASCIMENTO":
            self.txtNascimento.get_text(),
            "CARGO":
            funcoesGenericas.getValorAtualComboBox(self.cbxCargo),
            "ENDERECO":
            funcoesGenericas.formatarEndereco(self.txtEndereco.get_text(),
                                              self.txtNumero.get_text(),
                                              self.txtComplemento.get_text(),
                                              self.txtBairro.get_text(),
                                              self.txtCidade.get_text(),
                                              self.txtEstado.get_text()),
            "administrador":
            admin
        }
        con = BancoDados()

        if con.inserir("funcionario", dictCampos) != None:
            return True
        else:
            return False
コード例 #6
0
 def pesquisa(self, button=None):
     if (self.txtPesquisa.get_text() != '' or (self.inicio)):
         servicos = BancoDados().select("servico", " nome, descricao", " ")
         self.ListaParaAdicionar = []
         if servicos != ():
             i = 0
             while i < len(servicos):
                 texto = str(self.txtPesquisa.get_text())
                 texto = texto.upper()
                 nomes = str(servicos[i][0])
                 nomes = nomes.upper()
                 descricoes = str(servicos[i][1])
                 descricoes = descricoes.upper()
                 if (self.rbNome.get_active() and
                     (texto in nomes)) or (self.rbDescricao.get_active() and
                                           (texto in descricoes)):
                     self.ListaParaAdicionar.append(
                         [servicos[i][0], servicos[i][1]])
                 i += 1
             self.atualizar()
         else:
             self.atualizar()
             funcoesGenericas.mostrarAviso(
                 self.winListaServico,
                 "Não foi encontrado nenhum resultado para pesquisa escolhida!!!"
             )
     else:
         funcoesGenericas.mostrarAviso(self.winListaServico,
                                       "Digite algo no campo pesquisa!")
コード例 #7
0
def formatarComboBox(tabela, indice, texto):
    """Funcao para preenchimento de combobox, usando banco de dados.\n
        Recebe como parametro o nome da tabela, o nome da coluna de indice, o nome da coluna de texto\n
        Retorna  1 gtkList e 1 dicionario. O dicionario tem o ID e o NOME"""
    store = None
    dicValores = {}
    b = BancoDados()
    tuplaDados = b.select(tabela, [indice,texto], "")
    if tuplaDados != None:
        store = gtk.ListStore(TYPE_STRING)
        for dado in tuplaDados:
            dicValores[dado[1]] = dado[0] #O dicionario tem a chave sendo o nome e o ID sendo o valor
            #print(dicValores)
            store.append([dado[1]])
    
    retorno = (store,dicValores)
    
    return retorno
コード例 #8
0
def formatarComboBox(tabela, indice, texto):
    """Funcao para preenchimento de combobox, usando banco de dados.\n
        Recebe como parametro o nome da tabela, o nome da coluna de indice, o nome da coluna de texto\n
        Retorna  1 gtkList e 1 dicionario. O dicionario tem o ID e o NOME"""
    store = None
    dicValores = {}
    b = BancoDados()
    tuplaDados = b.select(tabela, [indice, texto], "")
    if tuplaDados != None:
        store = gtk.ListStore(TYPE_STRING)
        for dado in tuplaDados:
            dicValores[dado[1]] = dado[
                0]  #O dicionario tem a chave sendo o nome e o ID sendo o valor
            #print(dicValores)
            store.append([dado[1]])

    retorno = (store, dicValores)

    return retorno
コード例 #9
0
 def alterar(self, widget = None):
     try:
         senha = BancoDados().select("funcionario","senha" , "where login = '******'")[0][0]
         if(senha == self.txtSenhaAntiga.get_text() or self.admin):
             if(self.txtNovaSenha.get_text() == self.txtRNovaSenha.get_text()):
                 a = BancoDados().update("funcionario", {"senha":self.txtNovaSenha.get_text()}, {"login":self.login})
                 if(a != None):
                     self.txtNovaSenha.set_text('')
                     self.txtRNovaSenha.set_text('')
                     self.txtSenhaAntiga.set_text('')
                     funcoesGenericas.mostrarAviso(self.winAlterarSenha,"Senha alterada com sucesso!")
                 else:
                     funcoesGenericas.mostrarAviso(self.winAlterarSenha,"Erro ao alterar senha!!")
             else:
                 funcoesGenericas.mostrarAviso(self.winAlterarSenha, "Campo Nova senha Diferente do campo Repetir Nova Senha")
         else:
             funcoesGenericas.mostrarAviso(self.winAlterarSenha,"Senha incorreta")
     except:
         funcoesGenericas.mostrarAviso(self.winAlterarSenha,"Login não existe")
 def cadastrar(self, widget = None):
     
     if not(self.txtNomeServico.get_text() == '' or  self.txtDescricao.get_buffer().get_text(self.txtDescricao.get_buffer().\
                                                                   get_start_iter(),
                                                                   self.txtDescricao.get_buffer().\
                                                                   get_end_iter()) == ''):
         dict = {"nome" : self.txtNomeServico.get_text(),
                 "descricao" : self.txtDescricao.get_buffer().get_text(self.txtDescricao.get_buffer().\
                                                                       get_start_iter(),
                                                                       self.txtDescricao.get_buffer().\
                                                                       get_end_iter())
                 }
         con = BancoDados()
         if con.inserir("servico",dict) != None:
             funcoesGenericas.mostrarAviso(self.wincadastrarServico, "Serviço cadastrado com sucesso!")
             self.limpar()
         else:
             funcoesGenericas.mostrarAviso(self.wincadastrarServico, "Não foi possivel cadastrar o serviço.")
     else:
         funcoesGenericas.mostrarAviso(self.wincadastrarServico, 'Favor preencher todos os campos!')
 def persistirCadastro(self,widget):
     """Funcao local para persistir o cadastro da empresa no banco de dados"""
     #TO DO: Falta ver a parte do logo
     dictCampos = {"nome" : self.txtNome.get_text(),
                    "documento" :self.txtDocumento.get_text(),
                    "tipo_documento" : funcoesGenericas.getValorAtualComboBox(self.cbxTipoDocumento),
                    "email" : self.txtEmail.get_text(),
                    "telefone1" : self.txtTelefone.get_text(),
                    "ddd": self.txtDDD.get_text(),
                    "endereco" : funcoesGenericas.formatarEndereco(self.txtEndereco.get_text(),
                                                                   self.txtNumero.get_text(),
                                                                   self.txtComplemento.get_text(),
                                                                   self.txtBairro.get_text(),
                                                                   self.txtCidade.get_text(),
                                                                   self.txtEstado.get_text())
                     }
     con = BancoDados()
     
     if con.inserir("cliente",dictCampos) != None:
         return True
     else:
         return False
コード例 #12
0
 def logar(self, widget = None):
     con = BancoDados()
     try:
         admin = False
         login = self.txtLogin.get_text()
         if (self.txtSenha.get_text() == con.select("funcionario", "login, senha, administrador", 
                                                                 "where login = '******'")[0][1]):
             funcoesGenericas.mostrarAviso(self.winLogin, 'Entrando no sistema...')
             self.sair()
             admin = con.select("funcionario", "login, administrador", 
                                                                 "where login = '******'")[0][1]
             print int(admin)
             if int(admin) == 1:
                 admin = True
             janela = winMenu.menu(admin)
             janela.iniciarJanela()
         else:
             funcoesGenericas.mostrarAviso(self.winLogin, 'Login ou senha estão errados!')
     except:
         funcoesGenericas.mostrarAviso(self.winLogin, 'Login ou senha estão errados!')
コード例 #13
0
 def pesquisa(self, button=None):
     if (self.txtPesquisa.get_text() != '' or (self.inicio)):
         pesquisa = self.txtPesquisa.get_text()
         if self.rbLogin.get_active():
             filtro = 'login'
         elif self.rbDocumento.get_active():
             filtro = 'documento'
         elif self.rbNomeFuncionario.get_active():
             filtro = 'nome'
         if self.inicio:
             funcionarios = BancoDados().select(
                 "funcionario",
                 " login, nome, tipo_documento, documento, cargo,  email",
                 " ")
         else:
             funcionarios = BancoDados().select(
                 "funcionario",
                 " login, nome, tipo_documento, documento, cargo,  email",
                 "where " + filtro + " = '" + pesquisa + "' ")
         self.ListaParaAdicionar = []
         if funcionarios != ():
             i = 0
             while i < len(funcionarios):
                 self.ListaParaAdicionar.append([
                     funcionarios[i][0], funcionarios[i][1],
                     funcionarios[i][2] + ' - ' + funcionarios[i][3],
                     funcionarios[i][4], funcionarios[i][5]
                 ])
                 i += 1
             self.atualizar()
         else:
             self.atualizar()
             funcoesGenericas.mostrarAviso(
                 self.winListaFuncinario,
                 "Não foi encontrado nenhum resultado para pesquisa escolhida!!!"
             )
     else:
         funcoesGenericas.mostrarAviso(self.winListaFuncinario,
                                       "Digite algo no campo pesquisa!")
コード例 #14
0
 def alterar(self, widget=None):
     if (self.txtLogin.get_text() == ''):
         funcoesGenericas.mostrarAviso(self.winLogin,
                                       "Favor preencha apenas o login!")
     else:
         try:
             login = BancoDados().select(
                 "funcionario", "login",
                 "where login = '******'")[0][0]
             a = winAlterarSenha.AlterarSenha(str(login))
             a.mostrarJanela()
         except:
             funcoesGenericas.mostrarAviso(self.winLogin,
                                           "Login inexistente")
コード例 #15
0
 def logar(self, widget=None):
     con = BancoDados()
     try:
         admin = False
         login = self.txtLogin.get_text()
         if (self.txtSenha.get_text() == con.select(
                 "funcionario", "login, senha, administrador",
                 "where login = '******'")[0][1]):
             funcoesGenericas.mostrarAviso(self.winLogin,
                                           'Entrando no sistema...')
             self.sair()
             admin = con.select("funcionario", "login, administrador",
                                "where login = '******'")[0][1]
             print int(admin)
             if int(admin) == 1:
                 admin = True
             janela = winMenu.menu(admin)
             janela.iniciarJanela()
         else:
             funcoesGenericas.mostrarAviso(self.winLogin,
                                           'Login ou senha estão errados!')
     except:
         funcoesGenericas.mostrarAviso(self.winLogin,
                                       'Login ou senha estão errados!')
コード例 #16
0
 def adicionarServicoNaLista(self, widget=None):
     jaTem = False
     servicoEscolhido = self.pegarValorComboBox(self.cbxServicos)
     descricao = BancoDados().select(
         " servico ", " descricao, nome ",
         " where nome = '" + servicoEscolhido + "'")[0][0]
     j = 0
     while j in range(len(self.ListaParaAdicionar)):
         if servicoEscolhido == self.ListaParaAdicionar[j][0]:
             funcoesGenericas.mostrarAviso(
                 self.winGuardarOS,
                 "Serviço já escolhido." + " Favor selecionar outro!")
             jaTem = True
             break
         j += 1
     if not (jaTem):
         self.ListaParaAdicionar.append([servicoEscolhido, descricao])
         self.atualizar()
コード例 #17
0
 def verificaDocumento(self, widget=None):
     eIgual = False
     numeracaoDocumentos = BancoDados().select(' cliente ',
                                               ' documento, nome ', ' ')
     i = 0
     posicao = None
     while i < len(numeracaoDocumentos):
         if numeracaoDocumentos[i][0] == self.txtCPFCNPJ.get_text():
             eIgual = True
             posicao = i
             i = len(numeracaoDocumentos)
         i += 1
     if eIgual:
         self.lblNomeCliente.set_text(numeracaoDocumentos[posicao][1])
     else:
         funcoesGenericas.mostrarAviso(self.winGuardarOS,
                                       'Numero de Documento inválido!!')
         self.lblNomeCliente.set_text(self.textelbl)
コード例 #18
0
ファイル: crawler.py プロジェクト: jpaborges/promotravel
    def __init__(self):
        self.bd = BancoDados()
        self.cod = 0  # No banco de dados os voos serao identificados por um cod para nao ter voos repitidos
        self.origem = "SSA"
        self.destino = "REC"
        self.ida = datetime(1, 1, 1)
        self.volta = datetime(1, 1, 1)
        self.numErro = 0
        try:
            # query = "SELECT Cod, Origem, Destino, DiaIda, DiaVolta, NumErro from Voo where (pesquisando = 0 or (pesquisando = 1 and UltimaPesquisa < subtime(now(),'12:00'))) and UltimaPesquisa <  subtime(now(),'6:00') and DiaIda > adddate(now(),3) and DiaVolta > adddate(now(),3) and Ocorrencia > 0 and NumErro < 5 order by prioridade desc limit 1;"#TODO: Ver o tempo exato ---A cada 6h,no maximo 5 erros
            query = "Select PegarVooAtomicamente();"
            voo = self.bd.executar(query)
            voo = voo[0][0].split("$")
            if voo != None:
                self.cod = int(voo[0])
                self.origem = voo[1]
                self.destino = voo[2]
                self.ida = date(int(voo[3].split("-")[0]), int(voo[3].split("-")[1]), int(voo[3].split("-")[2]))
                try:

                    self.volta = date(int(voo[4].split("-")[0]), int(voo[4].split("-")[1]), int(voo[4].split("-")[2]))
                except:

                    self.volta = None
                self.numErro = int(voo[5])
        except:
            print("Erro para ler os dados \n")

            # raise
        finally:
            self.bd.desconectar()

        """Essa parte vai ser preenchida pelo crawler, por isso é private"""

        self.__preco = 0.01
        self.__cia = "Gol"
        self.__horaSaidaIda = "9:23"
        self.__horaChegadaIda = "10:10"
        self.__horaSaidaVolta = "9:23"
        self.__horaChegadaVolta = "10:10"
        self.__ultimaPesquisa = datetime(1, 1, 1)
        self.__status = 0
コード例 #19
0
 def pesquisa(self, button = None):
     if(self.txtPesquisa.get_text() != ''):
         if self.rbOS.get_active():
             filtro = 'os.id'
         elif self.rbDocumento.get_active():
             filtro = 'cliente.documento'
         elif self.rbNomeCliente.get_active():
             filtro = 'cliente.nome'
         self.ListaParaAdicionar = []
         OS = BancoDados().select("os, cliente", " os.id, os.pasta, cliente.documento, cliente.tipo_documento" +
         ", cliente.nome ", "where cliente_id = cliente.id and "+ filtro + " = '" + self.txtPesquisa.get_text()+"' ")
         if OS != ():
             i = 0
             while i < len(OS):
                 self.ListaParaAdicionar.append([str(OS[i][0]),OS[i][1],OS[i][2]+' - '+OS[i][3], OS[i][4]])
                 i += 1
             self.atualizar()
         else:
             self.atualizar()
             funcoesGenericas.mostrarAviso(self.winListaOS, "Não foi encontrado nenhum resultado para pesquisa escolhida!!!")
     else:
         funcoesGenericas.mostrarAviso(self.winListaOS, "Digite algo no campo pesquisa!")
コード例 #20
0
	def __init__(self):
		self.bd = BancoDados()
		self.cod = 0 #No banco de dados os voos serao identificados por um cod para nao ter voos repitidos
		self.origem = "SSA"
		self.destino = "REC"
		self.dia = datetime(1,1,1)
		self.numErro = 0

		try:
			query = "SELECT Cod, Origem, Destino, Dia, NumErro from Voo where (pesquisando = 0 or (pesquisando = 1 and UltimaPesquisa < subtime(now(),'12:00'))) and UltimaPesquisa <  subtime(now(),'6:00') and Dia > adddate(now(),3) and Ocorrencia > 0 and NumErro < 5 order by prioridade desc limit 1;"#TODO: Ver o tempo exato ---A cada 6h,no maximo 5 erros
			voo = self.bd.executar(query)
			if (voo != None):
				for v in voo:
					self.cod = v[0]
					self.origem = v[1]
					self.destino = v[2]
					self.dia = v[3]
					self.numErro = v[4]
			
		except:
			print("Erro para ler os dados \n")

			raise
		finally:
			self.bd.desconectar() 

	
		
		'''Essa parte vai ser preenchida pelo crawler, por isso é private'''
		
		self.__preco = 0.01
		self.__cia = "Gol"
		self.__horaSaidaIda = "9:23"
		self.__horaChegadaIda = "10:10"
		self.__ultimaPesquisa = datetime(1,1,1)
		self.__status = 0 
コード例 #21
0
 def exibirOS(self, widget = None):
     id = ModeloDatagrid.ModeloDataGrid().getValor(self.tvListaOS, 0)
     imgOS = BancoDados().select("os", "scaner", " where id = '"+str(id)+"' ")
     #print imgOS[0][0]
     winVisualizadorOS.VisualizarOS('/'+imgOS[0][0]).mostrarJanela()
コード例 #22
0
class Voo:
	def __init__(self):
		self.bd = BancoDados()
		self.cod = 0 #No banco de dados os voos serao identificados por um cod para nao ter voos repitidos
		self.origem = "SSA"
		self.destino = "REC"
		self.dia = datetime(1,1,1)
		self.numErro = 0

		try:
			query = "SELECT Cod, Origem, Destino, Dia, NumErro from Voo where (pesquisando = 0 or (pesquisando = 1 and UltimaPesquisa < subtime(now(),'12:00'))) and UltimaPesquisa <  subtime(now(),'6:00') and Dia > adddate(now(),3) and Ocorrencia > 0 and NumErro < 5 order by prioridade desc limit 1;"#TODO: Ver o tempo exato ---A cada 6h,no maximo 5 erros
			voo = self.bd.executar(query)
			if (voo != None):
				for v in voo:
					self.cod = v[0]
					self.origem = v[1]
					self.destino = v[2]
					self.dia = v[3]
					self.numErro = v[4]
			
		except:
			print("Erro para ler os dados \n")

			raise
		finally:
			self.bd.desconectar() 

	
		
		'''Essa parte vai ser preenchida pelo crawler, por isso é private'''
		
		self.__preco = 0.01
		self.__cia = "Gol"
		self.__horaSaidaIda = "9:23"
		self.__horaChegadaIda = "10:10"
		self.__ultimaPesquisa = datetime(1,1,1)
		self.__status = 0 



	def __getUrl(self): 
		"""Retorna a url para fazer a pesquisa dessa passagem"""

		retorno = "http://www.decolar.com/search/flights/"
		strMeio = self.origem + '/' + self.destino + '/' + self.dia.isoformat()
		strFim = "1/0/0" # O Preco pesquisado é de um adulto
		retorno += "oneWay/" + strMeio + '/' + strFim

		return retorno

	def __crawler(self,url):
		"""Funcao que retorna o html como uma string"""
		try:
			print("Fazendo o craw url")
			print(url)
			browser = spynner.Browser()
			browser.load(url)
			try:
				browser.wait_page_load()
			except:
				pass
			retorno = browser.html.encode("utf8","ignore")
			browser.close()
			return retorno
		except:
			raise
		

	def __preencherDados(self): 
		"""Preenche os dados da cia aerea do preco e da data da ultima pesquisa"""
		#ToDo: Deve ser bem testado para que seja analisado todos os cenarios de erros
		#Por enquanto a abordagem eh pegar apenas o primeiro resultado da decolar. Futuramente podemos refinar isso
		#Por enquanto apenas o preco em real eh analizar		
		try:
			s = self.__crawler(self.__getUrl())
			file = open("t2.txt","w")
			file.write(s)
			file.close()
			soup = BeautifulSoup(s)
			Itinerary0 = soup.find('div',{'id':'Itinerary_0'} )
			self.__cia = Itinerary0.find('div',{'id':'CompressItinAirlineName'}).find('strong').contents[0].strip() #a cia de ida e volta sao iguais
			self.__horaSaidaIda = Itinerary0.find('div',{'class':'salida'}).find('strong').contents[0].strip()
			self.__horaChegadaIda = Itinerary0.find('div',{'class':'llegada'}).find('strong').contents[0].strip()
		
			precoLocal0 = Itinerary0.find('div',{'id':'CompressItinPriceLocalAmount'}).find('strong').contents[0].strip() #Preco na moeda local, geralmente real total
			self.__preco = precoLocal0.split(' ')[1]
			self.__ultimaPesquisa = datetime.now()
			return 1
		except:
			self.__ultimaPesquisa = datetime.now()
			return 0

	def pesquisar(self):
		"""Realiza a pesquisa do voo"""
		
		if self.cod == 0:
			print("Nao ha mais voo/n")
			return 0
		else:
			#Informa que o voo esta sendo pesquisado
			try:
				query = "UPDATE Voo SET  Pesquisando = 1, UltimaPesquisa = Now() where cod = %d;" % (self.cod)  
				self.bd.executar(query)
				#self.bd.executar("commit;");
			except:
				print("Erro para persistir os dados ")
				return 0
			finally:
				self.bd.desconectar()

			if self.__preencherDados() == 1:
				try:
					query = "UPDATE Voo SET Preco  = '%s',Cia = '%s',HoraSaidaIda = '%s',HoraChegadaIda = '%s', UltimaPesquisa = '%s', Pesquisando = 0 where cod = %d;" % (self.__preco, self.__cia, self.__horaSaidaIda, self.__horaChegadaIda,self.__ultimaPesquisa, self.cod)  
		#print(query)
					self.bd.executar(query)
				except:
					print("Erro para persistir os dados ")
				finally:
					self.bd.desconectar() 
			else:
				print("\nOcorreu um erro no crawl")
				try:
					query = "UPDATE Voo SET NumErro = %d, UltimaPesquisa = '%s', Pesquisando = 0 where cod = %d;" % (self.numErro + 1, self.__ultimaPesquisa, self.cod)  
		#print(query)
					self.bd.executar(query)
				except:
					print("Erro para persistir os dados ")
				finally:
					self.bd.desconectar()
			return 1
コード例 #23
0
 def guardarOS(self, widget=None):
     '''Armazena no banco a relação OS e serviço'''
     try:
         valor = BancoDados().select(
             "os", "id, alterada",
             "where id ='" + self.txtNumeroOS.get_text() + "'")
         existe = False
         print(valor)
         m = 0
         while m < len(valor):
             print valor[m][0]
             if (valor[m][0] == int(self.txtNumeroOS.get_text())
                     and valor[m][1] != 1):
                 existe = True
             m += 1
         if existe and self.lblNomeCliente.get_text() != 'Sem Cliente Selecionado' and \
         self.txtCPFCNPJ != '' and self.txtPasta != '' and self.pegarValorComboBox(self.cbxNomeCliente)!=\
         None and self.btfSelecionarArquivo.get_file() != None:
             local = self.copiarImagem()
             k = 0
             idFuncinario = BancoDados().select(
                 "funcionario", "id", "where nome = '" +
                 self.pegarValorComboBox(self.cbxNomeCliente) + "'")[0][0]
             idCliente = BancoDados().select(
                 "cliente", "id", "where nome = '" +
                 self.lblNomeCliente.get_text() + "'")[0][0]
             dict = {"obs":self.txtvObs.get_buffer().get_text(self.txtvObs.get_buffer().\
                         get_start_iter(),self.txtvObs.get_buffer().get_end_iter()),
                     "cliente_id":idCliente,
                     "funcionario_id": idFuncinario,
                     "scaner":local,
                     "pasta":self.txtPasta.get_text(),
                     "alterada": 1
                     }
             dict2 = {"id": self.txtNumeroOS.get_text()}
             alteracao = BancoDados().update("os", dict, dict2)
             if (alteracao != None):
                 while k in range(len(self.ListaParaAdicionar)):
                     id = BancoDados().select(
                         "servico", "id", "where nome = '" +
                         self.ListaParaAdicionar[k][0] + "'")[0][0]
                     if BancoDados().inserir(
                             'os_servico', {
                                 "servico_id": str(id),
                                 "os_id": self.txtNumeroOS.get_text()
                             }) == None:
                         print 'Erro servico None'
                     k += 1
                     print self.txtNumeroOS.get_text()
                     print 'id = ' + str(id)
             else:
                 funcoesGenericas.mostrarAviso(self.winGuardarOS,
                                               "O número da OS não existe")
             self.limpar()
         else:
             funcoesGenericas.mostrarAviso(
                 self.winGuardarOS, "Possiveis problemas:\n" +
                 "1- O número da OS não existe;\n" +
                 "2- Não preencheu todos os Campos;\n" +
                 "3- Não escolheu nenhum serviço;\n" +
                 "4- A ordem de serviço já foi guardada. Caso deseje alterar "
                 + "vá no menu e selecione alterar OS\n" +
                 "5- Não escolheu nenhum funcionário;\n" +
                 "6- A cópida da OS não foi selecionada.")
     except:
         funcoesGenericas.mostrarAviso(
             self.winGuardarOS, "Erro ao copiar imagem!!!!\n" +
             "Verifique se o endereço da imagem possui caracter especial," +
             "caso contenha coloque em um local onde o endereço resultante"
             + "não possua caracter especial.")
コード例 #24
0
    def __init__(self):
        self.fechar = False
        '''Arquivo'''
        self.arquivo = gtk.glade.XML('winGuardarOS.glade')
        '''Janela'''
        self.winGuardarOS = self.arquivo.get_widget('winGuardarOS')
        color = gtk.gdk.color_parse('white')
        self.winGuardarOS.modify_bg(gtk.STATE_NORMAL, color)

        self.btfSelecionarArquivo = self.arquivo.get_widget(
            'btfSelecionarArquivo')
        '''Text Box'''
        self.txtNumeroOS = self.arquivo.get_widget('txtNumeroOS')
        self.txtPasta = self.arquivo.get_widget('txtPasta')
        self.txtCPFCNPJ = self.arquivo.get_widget('txtCPFCNPJ')
        '''Text View'''
        self.txtvObs = self.arquivo.get_widget('txtvObs')
        '''Combobox e suas configurações'''
        self.cbxNomeCliente = self.arquivo.get_widget('cbxNomeCliente')
        self.storeClientes = gtk.ListStore(gobject.TYPE_STRING)
        try:
            self.clientes = BancoDados().select('funcionario', 'nome', ' ')
            i = 0
            while i < len(self.clientes):
                self.storeClientes.append([self.clientes[i][0]])
                i += 1
            self.inserirComboBox(self.storeClientes, self.cbxNomeCliente)
            if (len(self.clientes) < 1):
                funcoesGenericas.mostrarAviso(
                    self.winGuardarOS, 'Provavelmente nenhum funcionário' +
                    ' foi cadastrado!' + '\nFavor cadastrar um!')
                self.fechar = True
        except:
            funcoesGenericas.mostrarAviso(
                self.winGuardarOS, 'Provavelmente nenhum funcionário foi' +
                ' cadastrado!' + '\nFavor cadastrar um!')
            self.fechar = True

        self.cbxServicos = self.arquivo.get_widget('cbxServicos')
        self.storeServicos = gtk.ListStore(gobject.TYPE_STRING)
        try:
            self.servicos = BancoDados().select('servico', 'nome', ' ')
            i = 0
            while i < len(self.servicos):
                self.storeServicos.append([self.servicos[i][0]])
                i += 1
            self.inserirComboBox(self.storeServicos, self.cbxServicos)
            if (len(self.clientes) < 1):
                funcoesGenericas.mostrarAviso(
                    self.winGuardarOS, 'Nenhum serviço cadastrado!' +
                    '\nFavor cadastrar pelo menos um serviço')
                self.fechar = True
        except:
            funcoesGenericas.mostrarAviso(
                self.winGuardarOS, 'Nenhum serviço cadastrado!' +
                '\nFavor cadastrar pelo menos um serviço')
            self.fechar = True
        '''Botões'''
        self.btVerifica = self.arquivo.get_widget('btVerifica')
        self.btInserirServico = self.arquivo.get_widget('btInserirServico')
        self.btRemoverServico = self.arquivo.get_widget('btRemoverServico')
        self.btGravarOS = self.arquivo.get_widget('btGravarOS')
        self.btLimpar = self.arquivo.get_widget('btLimpar')
        '''Label'''
        self.lblNomeCliente = self.arquivo.get_widget('lblNomeCliente')
        self.textelbl = self.lblNomeCliente.get_text()
        '''Instanciando um objeto para usar a classe ModeloDatagrid'''
        self.dataGrid = ModeloDatagrid.ModeloDataGrid()
        '''Iniciando o treeView'''
        self.inicio = True
        self.iniciarTreeview()
        self.excluir = False
        self.servicoSelecionado = 0
コード例 #25
0
#-*-coding:utf-8-*-
'''
Created on 12/01/2011

@author: diogo
IMPORTANTE: Necessario arquivos .glade na mesma pasta
'''
import pygtk
import gobject
pygtk.require("2.0")
import gtk, gtk.glade
import funcoesGenericas
import CadastrarFunionario
import winLogin
from bd import BancoDados

a = BancoDados().select("funcionario", "count(*)", '')
if int(a[0][0]) == 0:
    funcoesGenericas.mostrarAviso(
        None,
        "Primeiro acesso, favor cadastrar um funcionário como administrador!!")
    janela = CadastrarFunionario.CadastroFuncionario(True)
    janela.iniciarJanela()
    janela = winLogin.Logar()
    janela.exibirTela()
else:
    janela = winLogin.Logar()
    janela.exibirTela()
コード例 #26
0
ファイル: simulador.py プロジェクト: jpaborges/promotravel
		banco.desconectar()
	
	return 1

def desativarPesquisa(banco,cod):
	try:
		query = "Call EncerrarPesquisa(%d);" % cod
		banco.executar(query)
	except:
		print("Erro na procedure")
		raise
	finally:
		banco.desconectar()

if __name__ == '__main__':
	b = BancoDados()
	menu = -1
	aeroportos =["ATM","AJU","AQA","BGX","JTC","BEL","CNF","PLU","BVB","BSB","CPV","VCP","CGR","CAW","CKS","CAU","CXJ","XAP","CMG","CCM","CGB","CWB","CZS","FEN","FLN","FOR","IGU","GYN","IOS","IMP","JPA","JOI","JDO","LDB","MEA","MCP","MCZ","MAO","MAB","MGF","MOC","MVF","NAT","NVT","PMW","PHB","PAV","PNZ","POO","PMG","POA","BPS","PVH","PPB","REC","RAO","RBR","GIG","SDU","SSA","STM","SJP","SJK","SLZ","MAE","CGH","GRU","TBT","TFF","THE","UDI","URA","UBT","URG","VIX"]
	
	while (menu != 0):
		menu = int(raw_input("Digite:\n1 para inserir pesquisa\n2 para ativar pesquisa\n3 para desativar pesquisa\n4 para inserir varias coisas\n6 Ativar as pesquisas de um determinado email\n0 para sair: "))
		if (menu == 1):
			email = raw_input("Digite o email: ")
			origem = raw_input("Digite a origem: ")
			destino = raw_input("Digite o destino: ")
			precoE = float(raw_input("Digite qnt espera pagar: "))
			nDias = int(raw_input("Numero de dias: "))
			dias = []
			for d in range(nDias):
				dia = raw_input("Digite o dia: 'yyyy-mm-dd' ")
				dias += [dia] 
コード例 #27
0
ファイル: crawler.py プロジェクト: jpaborges/promotravel
class Voo:
    def __init__(self):
        self.bd = BancoDados()
        self.cod = 0  # No banco de dados os voos serao identificados por um cod para nao ter voos repitidos
        self.origem = "SSA"
        self.destino = "REC"
        self.ida = datetime(1, 1, 1)
        self.volta = datetime(1, 1, 1)
        self.numErro = 0
        try:
            # query = "SELECT Cod, Origem, Destino, DiaIda, DiaVolta, NumErro from Voo where (pesquisando = 0 or (pesquisando = 1 and UltimaPesquisa < subtime(now(),'12:00'))) and UltimaPesquisa <  subtime(now(),'6:00') and DiaIda > adddate(now(),3) and DiaVolta > adddate(now(),3) and Ocorrencia > 0 and NumErro < 5 order by prioridade desc limit 1;"#TODO: Ver o tempo exato ---A cada 6h,no maximo 5 erros
            query = "Select PegarVooAtomicamente();"
            voo = self.bd.executar(query)
            voo = voo[0][0].split("$")
            if voo != None:
                self.cod = int(voo[0])
                self.origem = voo[1]
                self.destino = voo[2]
                self.ida = date(int(voo[3].split("-")[0]), int(voo[3].split("-")[1]), int(voo[3].split("-")[2]))
                try:

                    self.volta = date(int(voo[4].split("-")[0]), int(voo[4].split("-")[1]), int(voo[4].split("-")[2]))
                except:

                    self.volta = None
                self.numErro = int(voo[5])
        except:
            print("Erro para ler os dados \n")

            # raise
        finally:
            self.bd.desconectar()

        """Essa parte vai ser preenchida pelo crawler, por isso é private"""

        self.__preco = 0.01
        self.__cia = "Gol"
        self.__horaSaidaIda = "9:23"
        self.__horaChegadaIda = "10:10"
        self.__horaSaidaVolta = "9:23"
        self.__horaChegadaVolta = "10:10"
        self.__ultimaPesquisa = datetime(1, 1, 1)
        self.__status = 0

    def __getUrl(self):
        """Retorna a url para fazer a pesquisa dessa passagem"""

        retorno = "http://www.decolar.com/search/flights/"
        strMeio = self.origem + "/" + self.destino + "/" + self.ida.isoformat()
        strFim = "1/0/0"  # O Preco pesquisado é de um adulto

        if self.volta == None:
            retorno += "oneWay/" + strMeio + "/" + strFim
        else:
            retorno += "RoundTrip/" + strMeio + "/" + self.volta.isoformat() + "/" + strFim
        return retorno

    def __crawler(self, url):
        """Funcao que retorna o html como uma string"""
        try:
            print("Fazendo o craw url")
            print(url)
            browser = spynner.Browser()
            browser.load(url)
            try:
                browser.wait_page_load()
            except:
                pass
            retorno = browser.html.encode("utf8", "ignore")
            browser.close()
            return retorno
        except:
            raise

    def __preencherDados(self):
        """Preenche os dados da cia aerea do preco e da data da ultima pesquisa"""
        # ToDo: Deve ser bem testado para que seja analisado todos os cenarios de erros
        # Por enquanto a abordagem eh pegar apenas o primeiro resultado da decolar. Futuramente podemos refinar isso
        # Por enquanto apenas o preco em real eh analizar
        try:
            s = self.__crawler(self.__getUrl())
            # file = open("t2.txt","r")
            # s = file.read()
            # file.close()
            soup = BeautifulSoup(s)
            if self.volta == None:
                # Itinerary0 = soup.find('div',{'id':'Itinerary_0'} )
                self.__cia = soup.find("div", {"class": "airline-name"}).find("span").contents[0].strip()
                self.__horaSaidaIda = soup.find("li", {"class": "leave"}).find("strong").contents[0].strip()
                self.__horaChegadaIda = soup.find("li", {"class": "arrive"}).find("strong").contents[0].strip()
                self.__preco = soup.find("span", {"class": "price-amount"}).contents[0].strip()
                try:
                    self.__preco = self.__preco.replace(".", "")
                    self.__preco = self.__preco.split(" ")[1]
                except:
                    pass
            else:
                # Itinerary0 = soup.find('div',{'id':'ItinBox_0'} )
                self.__cia = (
                    soup.find("div", {"class": "airline-name"}).find("span").contents[0].strip()
                )  # a cia de ida e volta sao iguais
                self.__horaSaidaIda = soup.find("li", {"class": "leave"}).find("strong").contents[0].strip()
                self.__horaChegadaIda = soup.find("li", {"class": "arrive"}).find("strong").contents[0].strip()
                self.__horaSaidaVolta = (
                    soup.find("div", {"class": "sub-cluster inbound"})
                    .find("li", {"class": "leave"})
                    .find("strong")
                    .contents[0]
                    .strip()
                )
                self.__horaChegadaVolta = (
                    soup.find("div", {"class": "sub-cluster inbound"})
                    .find("li", {"class": "arrive"})
                    .find("strong")
                    .contents[0]
                    .strip()
                )
                self.__preco = soup.find("span", {"class": "price-amount"}).contents[0].strip()
                try:
                    self.__preco = self.__preco.replace(".", "")
                    self.__preco = self.__preco.split(" ")[1]
                except:
                    pass

            self.__ultimaPesquisa = datetime.now()
            return 1
        except:
            self.__ultimaPesquisa = datetime.now()
            return 0

    def pesquisar(self):
        """Realiza a pesquisa do voo"""

        if self.cod == 0:
            print("Nao ha mais voo/n")
            return 0
        else:
            if self.__preencherDados() == 1:
                try:
                    if self.volta == None:
                        query = (
                            "UPDATE Voo SET Preco  = %.2f,Cia = '%s',HoraSaidaIda = '%s',HoraChegadaIda = '%s', UltimaPesquisa = '%s', Pesquisando = 0 where cod = %d;"
                            % (
                                float(self.__preco),
                                self.__cia,
                                self.__horaSaidaIda,
                                self.__horaChegadaIda,
                                self.__ultimaPesquisa,
                                self.cod,
                            )
                        )
                    else:
                        query = (
                            "UPDATE Voo SET Preco  = %.2f,Cia = '%s',HoraSaidaIda = '%s',HoraChegadaIda = '%s', HoraSaidaVolta = '%s',HoraChegadaVolta = '%s',UltimaPesquisa = '%s', Pesquisando = 0 where cod = %d;"
                            % (
                                float(self.__preco),
                                self.__cia,
                                self.__horaSaidaIda,
                                self.__horaChegadaIda,
                                self.__horaSaidaVolta,
                                self.__horaChegadaVolta,
                                self.__ultimaPesquisa,
                                self.cod,
                            )
                        )

                        # print(query)
                    self.bd.executar(query)
                except:
                    raise
                    print("Erro para persistir os dados ")
                finally:
                    self.bd.desconectar()
            else:
                print("\nOcorreu um erro no crawl")
                try:
                    query = "UPDATE Voo SET NumErro = %d, UltimaPesquisa = '%s', Pesquisando = 0 where cod = %d;" % (
                        self.numErro + 1,
                        self.__ultimaPesquisa,
                        self.cod,
                    )
                    # print(query)
                    self.bd.executar(query)
                except:
                    raise
                    print("Erro para persistir os dados ")
                finally:
                    self.bd.desconectar()
            return 1