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
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
def name_to_id(self): return text_to_id("Auto " + self.notice_event_type.name.upper() + "_" + str(self.order) + "-" + self.name)
def name_to_id(self): return text_to_id(self.short_name)
def name_to_id(self): return text_to_id(self.name)