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 test_deve_existir_user_em_keys_quando_localhost(): util = Uteis(['localhost']) util.set_keys() assert len(util.keys)
def test_nao_deve_ter_keys_quando_programacao(): util = Uteis(['programacao']) with pytest.raises(KeysInvalido): util.set_keys()
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)