Пример #1
0
def update_cep():
    url_str = ("https://buscacepinter.correios.com.br"
               "/app"
               "/localidade_logradouro"
               "/carrega-localidade-logradouro.php")
    imoveis = Imovel.objects.all()
    total = 0
    alterados = 0
    inalterados = 0
    errors = 0

    dest_folder = settings.MEDIA_ROOT + "//temp_geoitajai"
    if not os.path.exists(dest_folder):
        os.makedirs(dest_folder)
    filename = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") + "-cep_log.txt"
    file_path = os.path.join(dest_folder, filename)
    with open(file_path, "w") as text_file:
        for imovel in imoveis:
            if total % 500 == 0:
                print(
                    "Total: " + str(total),
                    "Alterados: " + str(alterados),
                    "Inalterados: " + str(inalterados),
                    "Errors: " + str(errors),
                )
                print(
                    "Total: " + str(total) + " - " + "Alterados: " +
                    str(alterados) + " - " + "Inalterados: " +
                    str(inalterados) + " - " + "Errors: " + str(errors),
                    file=text_file,
                )
            total += 1

            if not imovel.cep:

                logradouro = ""
                if imovel.logradouro:
                    logradouro = imovel.logradouro.lower().strip()
                    if logradouro.startswith("r."):
                        logradouro = logradouro.replace("r.", "", 1).strip()
                    if logradouro.startswith("av."):
                        logradouro = logradouro.replace("av.", "", 1).strip()
                    if logradouro.endswith("bc."):
                        logradouro = "".join(logradouro.rsplit("bc.",
                                                               1)).strip()
                    if logradouro.endswith("jr"):
                        logradouro = "".join(logradouro.rsplit("jr",
                                                               1)).strip()
                    if logradouro.startswith("trav."):
                        logradouro = logradouro.replace("trav.", "", 1).strip()
                    if logradouro.endswith("rod."):
                        logradouro = "".join(logradouro.rsplit("rod.",
                                                               1)).strip()
                    if logradouro.endswith("bc"):
                        logradouro = "".join(logradouro.rsplit("bc",
                                                               1)).strip()

                numero = imovel.numero.lower().strip()
                if numero.startswith("n"):
                    numero = numero.replace("n", "", 1).strip()
                if numero == "s/n":
                    numero = ""

                data = {
                    "uf": "SC",
                    "localidade": "Itajai",
                    "logradouro": logradouro,
                    "numeroLogradouro": numero,
                }

                data = {
                    "uf": "SC",
                    "localidade": "Itajai",
                    "logradouro": logradouro,
                    "numeroLogradouro": numero,
                }
                try:
                    r = requests.get(url_str, params=data)
                    if r.ok:
                        jsonresponse = r.json()
                        if jsonresponse["total"] == 1:
                            imovel.cep = jsonresponse["dados"][0]["cep"]
                            imovel.save()
                            alterados += 1
                        else:
                            ceps = []
                            for cep_data in jsonresponse["dados"]:
                                if text_to_id(imovel.bairro) == text_to_id(
                                        cep_data["bairro"]):
                                    ceps.append(cep_data["cep"])
                            if len(ceps) == 1:
                                imovel.cep = ceps[0]
                                imovel.save()
                                query_logradouro = Q(
                                    logradouro=imovel.logradouro)
                                query_numero = Q(numero=imovel.numero)
                                query_bairro = Q(bairro=imovel.bairro)
                                query_cep = Q(cep__isnull=True)
                                query = Q(
                                    query_logradouro,
                                    query_numero,
                                    query_bairro,
                                    query_cep,
                                )
                                count = Imovel.objects.filter(query).count()
                                if count > 0:
                                    print(ceps[0] + "-" + count)
                                    Imovel.objects.filter(query).update(
                                        cep=imovel.cep)
                                alterados += 1 + count
                            else:
                                errors += 1
                                print(
                                    "id: " + str(imovel.id) + " - imovel: " +
                                    str(imovel),
                                    file=text_file,
                                )
                                print(len(ceps), imovel)
                    else:
                        print(r)
                except Exception as e:
                    print(imovel.id, imovel)
                    print("Falha request correios: " + e)
            else:
                inalterados += 1
    return True
Пример #2
0
def update_cep_imovel(imovel):

    if not imovel:
        return False

    if imovel.cep:
        if len(imovel.cep) >= 8:
            return True

    url_str = ("https://buscacepinter.correios.com.br"
               "/app"
               "/localidade_logradouro"
               "/carrega-localidade-logradouro.php")
    logradouro = ""
    if imovel.logradouro:
        logradouro = imovel.logradouro.lower().strip()
        if logradouro.startswith("r."):
            logradouro = logradouro.replace("r.", "", 1).strip()
        if logradouro.startswith("av."):
            logradouro = logradouro.replace("av.", "", 1).strip()
        if logradouro.endswith("bc."):
            logradouro = "".join(logradouro.rsplit("bc.", 1)).strip()
        if logradouro.endswith("jr"):
            logradouro = "".join(logradouro.rsplit("jr", 1)).strip()
        if logradouro.startswith("trav."):
            logradouro = logradouro.replace("trav.", "", 1).strip()
        if logradouro.endswith("rod."):
            logradouro = "".join(logradouro.rsplit("rod.", 1)).strip()
        if logradouro.endswith("bc"):
            logradouro = "".join(logradouro.rsplit("bc", 1)).strip()

    numero = ""
    if imovel.numero:
        numero = imovel.numero.lower().strip()
        if numero.startswith("n"):
            numero = numero.replace("n", "", 1).strip()
        if numero == "s/n":
            numero = ""

    data = {
        "uf": "SC",
        "localidade": "Itajai",
        "logradouro": logradouro,
        "numeroLogradouro": numero,
    }

    query_logradouro = Q(logradouro=imovel.logradouro)
    query_numero = Q(numero=imovel.numero)
    query_bairro = Q(bairro=imovel.bairro)
    query_cep = Q(cep__isnull=False)
    query = Q(
        query_logradouro,
        query_numero,
        query_bairro,
        query_cep,
    )
    imovel_with_cep = Imovel.objects.filter(query).first()
    if imovel_with_cep:
        if imovel_with_cep.cep:
            if len(imovel_with_cep.cep) >= 8:
                imovel.cep = imovel_with_cep.cep
                imovel.save()
                return True

    try:
        r = requests.get(url_str, params=data)
        if r.ok:
            jsonresponse = r.json()
            if jsonresponse["total"] == 1:
                imovel.cep = jsonresponse["dados"][0]["cep"]
                imovel.save()
            else:
                ceps = []
                for cep_data in jsonresponse["dados"]:
                    if text_to_id(imovel.bairro) == text_to_id(
                            cep_data["bairro"]):
                        ceps.append(cep_data["cep"])
                if len(ceps) == 1:
                    imovel.cep = ceps[0]
                    imovel.save()
                else:
                    print(imovel.id, imovel)
        else:
            print(r)
    except Exception as e:
        print(imovel.id, imovel)
        print("Falha request correios: " + e)
    return True
Пример #3
0
 def name_to_id(self):
     return text_to_id("Auto " + self.notice_event_type.name.upper() + "_" +
                       str(self.order) + "-" + self.name)
Пример #4
0
 def name_to_id(self):
     return text_to_id(self.short_name)
Пример #5
0
 def name_to_id(self):
     return text_to_id(self.name)