예제 #1
0
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)

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