def test_deve_retornar_o_endereco_localhost_quando_sem_arg(): util = Uteis([]) uri = 'http://imoveis.powempresas.com/' assert util.uri == uri
def test_deve_existir_user_em_keys_quando_localhost(): util = Uteis(['localhost']) util.set_keys() assert len(util.keys)
def test_deve_retornar_o_endereco_localhost_quando_tem_arg_localhost(): util = Uteis(['localhost']) endereco = '/var/www/json/keys.json' assert util.endereco == endereco
def test_deve_retornar_o_uri_local_quando_tem_arg_programacao(): util = Uteis(['programacao']) uri = 'http://localhost:5000/' assert util.uri == uri
def uteis_localhost(): return Uteis(['teste'])
def __init__(self, args, contato, cidades): self.__cidades = cidades self.__contato = contato self.__args = args self.__uteis = Uteis(self.__args) self.__uteis.set_keys()
def __init__(self, args): self.__args = args self.__uteis = Uteis(args) self.__cidades = {}
from app.request import Request from app.uteis import Uteis uteis = Uteis(['localhost']) uteis.set_keys() request = Request(uteis) data = {'filtro': {}} data['filtro']['limit'] = 5 data['filtro']['dias'] = 60 data['url_tipo'] = 'contatos' data['tipo'] = 'get' request = request.request(data) print(request)
def __init__(self, args): self.__inicio = time.time() self.__args = args self.__uteis = Uteis(args) self.__cidades = Cidades(args) self._set_totais(0)
def __init__(self, args): self.__args = args self.__uteis = Uteis(args)
def uteis_localhost(): return Uteis(['localhost'])
def uteis_(): return Uteis([])
def uteis_programacao(): return Uteis(['programacao'])
def test_nao_deve_ter_keys_quando_programacao(): util = Uteis(['programacao']) with pytest.raises(KeysInvalido): util.set_keys()
def __init__(self, args, contato): self.__args = args self.__uteis = Uteis(self.__args) self.__contato = contato self._set_imoveis()
def test_deve_retornar_o_endereco_programacao_quando_tem_arg_programacao(): util = Uteis(['programacao']) endereco = '/home/www/json/keys.json' assert util.endereco == endereco
class Contato: def __init__(self, args, contato, cidades): self.__cidades = cidades self.__contato = contato self.__args = args self.__uteis = Uteis(self.__args) self.__uteis.set_keys() @property def contato(self): return self.__contato def set(self): inicio = time.time() try: v = validate_email(self.contato['email']) imoveis = Imoveis(self.__args, self.__contato) corpo = Corpo_email(self.__cidades, self.__contato, imoveis.itens['itens'], self.__uteis) c = corpo.get_imoveis_corpo() if self._envio(c): #upload fim = time.time() self.log('ok', fim - inicio) self.update_contato(self.contato['id']) return True fim = time.time() self.log('erro_disparo', fim - inicio) self.update_contato(self.contato['id']) return False except EmailNotValidError as e: message = '{} - Email inválido: {} - id {}'.format( str(e), self.contato['email'], self.contato['id']) self.log_error(message) self.update_contato(self.contato['id']) raise EmailInvalido(message) except ImoveisInvalido: message = 'Imoveis invalidos: id {}'.format(self.contato['id']) self.log_error(message) self.update_contato(self.contato['id']) return False except Exception as a: message = '{} id {}'.format(a, self.contato['id']) self.log_error(message) self.update_contato(self.contato['id']) return False def _titulo_email(self): itens = [ 'Encontre seu novo imóvel', 'Mais ofertas de imóvel', 'Encontre mais imóveis hoje mesmo', 'Continue buscando mais imóveis', 'Temos mais imóveis para você' ] index = random.randint(0, len(itens) - 1) return itens[index] def _envio(self, corpo): try: msg = EmailMessage() msg['Subject'] = self._titulo_email() msg['From'] = '*****@*****.**' if self.__uteis.teste: msg['To'] = '*****@*****.**' else: msg['To'] = self.contato['email'] msg.add_header('Content-Type', 'text/html') msg.set_content(corpo, subtype='html') s = smtplib.SMTP(self.__uteis.keysEmail['smtp_host'], int(self.__uteis.keysEmail['smtp_port'])) s.login(self.__uteis.keysEmail['smtp_user'], self.__uteis.keysEmail['smtp_pass']) s.sendmail(msg['From'], [msg['To']], msg.as_string()) s.quit() return True except Exception as a: message = '{} id {}'.format(a, self.contato['id']) self.log_error(message) return False def update_contato(self, id): data = {'itens': {}} data['itens']['ids'] = id data['url_tipo'] = 'contato_up' data['tipo'] = 'put' return Request(self.__uteis).request(data) def log_error(self, message): data = { 'formato': 'contato_erro', 'arquivo': 'erro', 'data': { 'data': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), 'message': message } } Logs(data) def log(self, status, tempo): data = { 'formato': 'disparo', 'arquivo': 'log', 'data': { 'data': datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), 'id': self.contato['id'], 'email': self.contato['email'], 'tempo': tempo, 'status': status } } Logs(data)
def inicia(): contato = { 'cidade': '', 'cidades': '1', 'data': '09/03/2020 22:47', 'email': '*****@*****.**', 'id': '575947', 'id_cadastro': 177912, 'id_itens': '1961673', 'id_tipo_item': '1', 'nome': 'juliana reis', 'qtde_contatos': 1, 'tabela': 'imoveis', 'tipo_negocio_item': 'venda', 'tipos_item': 'apartamento' } cidades = { 'itens': { 1: { 'logo': 'tp_imoveissjp.gif', 'titulo': 'São José dos Pinhais', 'link': 'sao_jose_dos_pinhais_pr', 'portal': 'http://www.imoveissaojose.com', 'menu': [{ 'itens': [{ 'descricao': 'Andar', 'id': '23', 'link': 'andar', 'qtde': '9' }, { 'descricao': 'Apartamento', 'id': '1', 'link': 'apartamento', 'qtde': '1919' }, { 'descricao': 'Área', 'id': '4', 'link': 'area', 'qtde': '87' }, { 'descricao': 'Barracão / Galpão', 'id': '11', 'link': 'barracao_galpao', 'qtde': '33' }, { 'descricao': 'Casa', 'id': '2', 'link': 'casa', 'qtde': '653' }, { 'descricao': 'Conjunto Comercial', 'id': '9', 'link': 'conjunto_comercial', 'qtde': '15' }, { 'descricao': 'Fazenda', 'id': '6', 'link': 'fazenda', 'qtde': '60' }, { 'descricao': 'Hotel', 'id': '17', 'link': 'hotel', 'qtde': '1' }, { 'descricao': 'Kitinete', 'id': '12', 'link': 'kitinete', 'qtde': '1' }, { 'descricao': 'Loja', 'id': '8', 'link': 'loja', 'qtde': '8' }, { 'descricao': 'Lote / Terreno', 'id': '3', 'link': 'lote_terreno', 'qtde': '339' }, { 'descricao': 'Negócio/ Empresa', 'id': '20', 'link': 'negocio_empresa', 'qtde': '1' }, { 'descricao': 'Outro', 'id': '14', 'link': 'outro', 'qtde': '7' }, { 'descricao': 'Ponto Comercial', 'id': '22', 'link': 'ponto_comercial', 'qtde': '6' }, { 'descricao': 'Prédio', 'id': '16', 'link': 'predio', 'qtde': '2' }, { 'descricao': 'Salão', 'id': '24', 'link': 'salao', 'qtde': '1' }, { 'descricao': 'Sítio e Chácara', 'id': '5', 'link': 'sitio_chacara', 'qtde': '208' }, { 'descricao': 'Sobrado', 'id': '10', 'link': 'sobrado', 'qtde': '362' }], 'link': 'venda', 'titulo': 'Comprar' }, { 'itens': [{ 'descricao': 'Apartamento', 'id': '1', 'link': 'apartamento', 'qtde': '173' }, { 'descricao': 'Área', 'id': '4', 'link': 'area', 'qtde': '4' }, { 'descricao': 'Barracão / Galpão', 'id': '11', 'link': 'barracao_galpao', 'qtde': '53' }, { 'descricao': 'Casa', 'id': '2', 'link': 'casa', 'qtde': '69' }, { 'descricao': 'Conjunto Comercial', 'id': '9', 'link': 'conjunto_comercial', 'qtde': '39' }, { 'descricao': 'Fazenda', 'id': '6', 'link': 'fazenda', 'qtde': '1' }, { 'descricao': 'Kitinete', 'id': '12', 'link': 'kitinete', 'qtde': '4' }, { 'descricao': 'Loja', 'id': '8', 'link': 'loja', 'qtde': '35' }, { 'descricao': 'Lote / Terreno', 'id': '3', 'link': 'lote_terreno', 'qtde': '18' }, { 'descricao': 'Negócio/ Empresa', 'id': '20', 'link': 'negocio_empresa', 'qtde': '1' }, { 'descricao': 'Outro', 'id': '14', 'link': 'outro', 'qtde': '26' }, { 'descricao': 'Ponto Comercial', 'id': '22', 'link': 'ponto_comercial', 'qtde': '6' }, { 'descricao': 'Prédio', 'id': '16', 'link': 'predio', 'qtde': '6' }, { 'descricao': 'Salão', 'id': '24', 'link': 'salao', 'qtde': '5' }, { 'descricao': 'Sítio e Chácara', 'id': '5', 'link': 'sitio_chacara', 'qtde': '3' }, { 'descricao': 'Sobrado', 'id': '10', 'link': 'sobrado', 'qtde': '26' }], 'link': 'locacao', 'titulo': 'Alugar' }, { 'itens': [], 'link': 'locacao_dia', 'titulo': 'Alugar Dia' }] } }, 'principal': 1 } args = {} args['localhost'] = 1 args['dias'] = 30 imoveis = Imoveis(args, contato).itens['itens'] return { 'cidades': cidades, 'contato': contato, 'imoveis': imoveis, 'uteis': Uteis(args) }
def uteis_programacao(): return Uteis(['teste'])