def santinho_escolher_candidatos(request, estado): eh_segundo_turno = settings.EH_SEGUNDO_TURNO cargos = [ {"nome": "Presidente", "candidatos": Candidato.obter_lista_por_cargo(1, 'BR', eh_segundo_turno), "nulo": "XX", "branco": "00"}, ] governadores = {"nome": "Governador", "candidatos": Candidato.obter_lista_por_cargo(3, estado, eh_segundo_turno), "nulo": "XX", "branco": "00"} cargos.append(governadores) estado_tem_segundo_turno = len(governadores["candidatos"]) > 0 deputado_nome = "Deputado Estadual" deputado_slug = "deputado-estadual" deputado_cargo = 7 if not eh_segundo_turno: cargos.append({"nome": "Senador", "candidatos": Candidato.obter_lista_por_cargo(5, estado), "nulo": "XXX", "branco": "000"}) cargos.append({"nome": "Deputado Federal", "candidatos": Candidato.obter_lista_por_cargo(6, estado), "nulo": "XXXX", "branco": "0000"}) if estado == "DF": deputado_cargo = 8 deputado_slug = "deputado-distrital" deputado_nome = "Deputado Distrital" cargos.append({"nome": deputado_nome, "candidatos": Candidato.obter_lista_por_cargo(deputado_cargo, estado), "nulo": "XXXXX", "branco": "00000"}) nome_estado = nome_do_estado(estado) if request.method == "POST": selecionados = { "presidente": request.POST.get("candidato_1", None), "governador": request.POST.get("candidato_3", None), } if eh_segundo_turno: selecionados["senador"] = request.POST.get("candidato_5", None) selecionados["deputado-federal"] = request.POST.get("candidato_6", None) selecionados[deputado_slug] = request.POST.get("candidato_{}".format(deputado_cargo), None) return render_to_response('escolher_candidatos.html', locals(), context_instance=RequestContext(request))
def resultado_escolher_candidatos(request, estado): cargos = [ {"nome": "Presidente", "candidatos": Candidato.obter_lista_por_cargo(1, 'BR'), "nulo": "XX", "branco": "00"}, {"nome": "Governador", "candidatos": Candidato.obter_lista_por_cargo(3, estado), "nulo": "XX", "branco": "00"}, {"nome": "Senador", "candidatos": Candidato.obter_lista_por_cargo(5, estado), "nulo": "XXX", "branco": "000"}, {"nome": "Deputado Federal", "candidatos": Candidato.obter_lista_por_cargo(6, estado), "nulo": "XXXX", "branco": "0000"} ] deputado_nome = "Deputado Estadual" deputado_slug = "deputado-estadual" deputado_cargo = 7 if estado == "DF": deputado_cargo = 8 deputado_slug = "deputado-distrital" deputado_nome = "Deputado Distrital" cargos.append({"nome": deputado_nome, "candidatos": Candidato.obter_lista_por_cargo(deputado_cargo, estado), "nulo": "XXXXX", "branco": "00000"}) nome_estado = nome_do_estado(estado) if request.method == "POST": selecionados = { "presidente": request.POST.get("candidato_1", None), "governador": request.POST.get("candidato_3", None), "senador": request.POST.get("candidato_5", None), "deputado-federal": request.POST.get("candidato_6", None), deputado_slug: request.POST.get("candidato_{}".format(deputado_cargo), None) } eh_resultado = True return render_to_response('resultado_candidatos.html', locals(), context_instance=RequestContext(request))
def importar_candidatos(self, resultado): self.stdout.write(u"INICIANDO") for estado in ESTADOS: for cargo in range(1, 9): if estado[0] == 'BR' and cargo > 2: continue if estado[0] != 'BR' and cargo <= 2: continue if estado[0] == "DF" and cargo == 7: continue if estado[0] != "DF" and cargo == 8: continue url = "http://divulgacand2014.tse.jus.br/divulga-cand-2014/eleicao/2014/UF/{}/candidatos/cargo/{}/downloadCSV".format( estado[0], cargo) self.stdout.write(u"OBTENDO CSV: {}".format(url)) csv = requests.get(url).content.decode('ISO-8859-1') linhas = csv.split("\n")[1:] candidatos = 0 indice_deferido = (6 if resultado else 5) for linha in linhas: if not linha: continue if "Deferido" in linha.split(";")[indice_deferido]: Candidato.obtem_a_partir_de_linha_do_csv( linha, cargo, estado[0], printer=self.stdout.write, resultado=resultado) candidatos += 1 self.stdout.write( u"{} EM {}: {} CANDIDATOS PROCESSADOS".format( Cargo.objects.get(id=cargo).nome, estado[0], candidatos))
def importar_candidatos(self, resultado): self.stdout.write(u"INICIANDO") for estado in ESTADOS: for cargo in range(1, 9): if estado[0] == 'BR' and cargo > 2: continue if estado[0] != 'BR' and cargo <= 2: continue if estado[0] == "DF" and cargo == 7: continue if estado[0] != "DF" and cargo == 8: continue url = "http://divulgacand2014.tse.jus.br/divulga-cand-2014/eleicao/2014/UF/{}/candidatos/cargo/{}/downloadCSV".format(estado[0], cargo) self.stdout.write(u"OBTENDO CSV: {}".format(url)) csv = requests.get(url).content.decode('ISO-8859-1') linhas = csv.split("\n")[1:] candidatos = 0 indice_deferido = (6 if resultado else 5) for linha in linhas: if not linha: continue if "Deferido" in linha.split(";")[indice_deferido]: Candidato.obtem_a_partir_de_linha_do_csv(linha, cargo, estado[0], printer=self.stdout.write, resultado=resultado) candidatos += 1 self.stdout.write(u"{} EM {}: {} CANDIDATOS PROCESSADOS".format(Cargo.objects.get(id=cargo).nome, estado[0], candidatos))
def resultado_escolher_candidatos(request, estado): cargos = [{ "nome": "Presidente", "candidatos": Candidato.obter_lista_por_cargo(1, 'BR'), "nulo": "XX", "branco": "00" }, { "nome": "Governador", "candidatos": Candidato.obter_lista_por_cargo(3, estado), "nulo": "XX", "branco": "00" }, { "nome": "Senador", "candidatos": Candidato.obter_lista_por_cargo(5, estado), "nulo": "XXX", "branco": "000" }, { "nome": "Deputado Federal", "candidatos": Candidato.obter_lista_por_cargo(6, estado), "nulo": "XXXX", "branco": "0000" }] deputado_nome = "Deputado Estadual" deputado_slug = "deputado-estadual" deputado_cargo = 7 if estado == "DF": deputado_cargo = 8 deputado_slug = "deputado-distrital" deputado_nome = "Deputado Distrital" cargos.append({ "nome": deputado_nome, "candidatos": Candidato.obter_lista_por_cargo(deputado_cargo, estado), "nulo": "XXXXX", "branco": "00000" }) nome_estado = nome_do_estado(estado) if request.method == "POST": selecionados = { "presidente": request.POST.get("candidato_1", None), "governador": request.POST.get("candidato_3", None), "senador": request.POST.get("candidato_5", None), "deputado-federal": request.POST.get("candidato_6", None), deputado_slug: request.POST.get("candidato_{}".format(deputado_cargo), None) } eh_resultado = True return render_to_response('resultado_candidatos.html', locals(), context_instance=RequestContext(request))
def obter_candidato(numero, estado, cargo, cargo_nome): if not "X" in numero and int(numero) > 0: return Candidato.obtem_do_numero(numero, estado, cargo) elif "X" in numero: return { "cargo": { "nome": cargo_nome, "codigo": cargo }, "nome": "Voto Nulo", "primeiro_nome": "Voto", "segundo_nome": "Nulo", "numero_partido": numero[:2], "numero_sem_partido": numero[2:], "numero": numero, "partido": { "sigla": "NULO" } } return { "cargo": { "nome": cargo_nome, "codigo": cargo }, "nome": "Voto em Branco", "primeiro_nome": "Voto em", "segundo_nome": "Branco", "numero_partido": numero[:2], "numero_sem_partido": numero[2:], "numero": numero, "partido": { "sigla": "BRANCO" } }
def grava_fotos_todos(self): self.stdout.write(u"INICIANDO") for estado in ESTADOS: self.stdout.write(u"ESTADO: {}".format(estado[1])) for cargo in range(1, 9): if estado[0] == 'BR' and cargo > 2: continue if estado[0] != 'BR' and cargo <= 2: continue if estado[0] == "DF" and cargo == 7: continue if estado[0] != "DF" and cargo == 8: continue cargo_nome = Cargo.objects.get(id=cargo).nome self.stdout.write(u"CARGO: {}".format(cargo_nome)) url_lista_candidatos = "http://divulgacand2014.tse.jus.br/divulga-cand-2014/eleicao/2014/UF/{}/candidatos/cargo/{}".format( estado[0], cargo) self.stdout.write( u"OBTENDO PÁGINA: {}".format(url_lista_candidatos)) conteudo_imagem = requests.get( url_lista_candidatos).content.decode('ISO-8859-1') pagina = lhtml.fromstring(conteudo_imagem) lista_candidatos = pagina.cssselect('.row-link-cand') quantidade_candidatos = len(lista_candidatos) encontrados = 0 atualizados = 0 for linha in lista_candidatos: numero_canditado = int(linha.cssselect('td')[2].text) # self.stdout.write(u"BUSCANDO CANDIDATO NO ESTADO {} DO CARGO {} COM O NÚMERO {}".format(estado[0], cargo, numero_canditado)) candidato = Candidato.obtem_do_numero( numero_canditado, estado[0], cargo) if candidato: encontrados += 1 # self.stdout.write(u"ENCONTRADO {} \r".format(candidato)) if candidato and not candidato.codigo_foto: atualizados += 1 self.stdout.write( u"ATUALIZANDO FOTO DO CANDIDATO {}".format( candidato)) candidato.codigo_foto = linha.attrib['id'] candidato.save() self.stdout.write( u"FINALIZADO: TOTAL NA PÁGINA: {}; ENCONTRADOS: {}; ATUALIZADOS: {}" .format(quantidade_candidatos, encontrados, atualizados))
def obter_candidato(numero, estado, cargo, cargo_nome): if not "X" in numero and int(numero) > 0: return Candidato.obtem_do_numero(numero, estado, cargo) elif "X" in numero: return { "cargo": {"nome": cargo_nome, "codigo": cargo}, "nome": "Voto Nulo", "primeiro_nome": "Voto", "segundo_nome": "Nulo", "numero_partido": numero[:2], "numero_sem_partido": numero[2:], "numero": numero, "partido": {"sigla": "NULO"} } return { "cargo": {"nome": cargo_nome, "codigo": cargo}, "nome": "Voto em Branco", "primeiro_nome": "Voto em", "segundo_nome": "Branco", "numero_partido": numero[:2], "numero_sem_partido": numero[2:], "numero": numero, "partido": {"sigla": "BRANCO"} }
def grava_fotos_todos(self): self.stdout.write(u"INICIANDO") for estado in ESTADOS: self.stdout.write(u"ESTADO: {}".format(estado[1])) for cargo in range(1, 9): if estado[0] == 'BR' and cargo > 2: continue if estado[0] != 'BR' and cargo <= 2: continue if estado[0] == "DF" and cargo == 7: continue if estado[0] != "DF" and cargo == 8: continue cargo_nome = Cargo.objects.get(id=cargo).nome self.stdout.write(u"CARGO: {}".format(cargo_nome)) url_lista_candidatos = "http://divulgacand2014.tse.jus.br/divulga-cand-2014/eleicao/2014/UF/{}/candidatos/cargo/{}".format(estado[0], cargo) self.stdout.write(u"OBTENDO PÁGINA: {}".format(url_lista_candidatos)) conteudo_imagem = requests.get(url_lista_candidatos).content.decode('ISO-8859-1') pagina = lhtml.fromstring(conteudo_imagem) lista_candidatos = pagina.cssselect('.row-link-cand') quantidade_candidatos = len(lista_candidatos) encontrados = 0 atualizados = 0 for linha in lista_candidatos: numero_canditado = int(linha.cssselect('td')[2].text) # self.stdout.write(u"BUSCANDO CANDIDATO NO ESTADO {} DO CARGO {} COM O NÚMERO {}".format(estado[0], cargo, numero_canditado)) candidato = Candidato.obtem_do_numero(numero_canditado, estado[0], cargo) if candidato: encontrados += 1 # self.stdout.write(u"ENCONTRADO {} \r".format(candidato)) if candidato and not candidato.codigo_foto: atualizados += 1 self.stdout.write(u"ATUALIZANDO FOTO DO CANDIDATO {}".format(candidato)) candidato.codigo_foto = linha.attrib['id'] candidato.save() self.stdout.write(u"FINALIZADO: TOTAL NA PÁGINA: {}; ENCONTRADOS: {}; ATUALIZADOS: {}".format(quantidade_candidatos, encontrados, atualizados))
def santinho_escolher_candidatos(request, estado): eh_segundo_turno = settings.EH_SEGUNDO_TURNO cargos = [ { "nome": "Presidente", "candidatos": Candidato.obter_lista_por_cargo(1, 'BR', eh_segundo_turno), "nulo": "XX", "branco": "00" }, ] governadores = { "nome": "Governador", "candidatos": Candidato.obter_lista_por_cargo(3, estado, eh_segundo_turno), "nulo": "XX", "branco": "00" } cargos.append(governadores) estado_tem_segundo_turno = len(governadores["candidatos"]) > 0 deputado_nome = "Deputado Estadual" deputado_slug = "deputado-estadual" deputado_cargo = 7 if not eh_segundo_turno: cargos.append({ "nome": "Senador", "candidatos": Candidato.obter_lista_por_cargo(5, estado), "nulo": "XXX", "branco": "000" }) cargos.append({ "nome": "Deputado Federal", "candidatos": Candidato.obter_lista_por_cargo(6, estado), "nulo": "XXXX", "branco": "0000" }) if estado == "DF": deputado_cargo = 8 deputado_slug = "deputado-distrital" deputado_nome = "Deputado Distrital" cargos.append({ "nome": deputado_nome, "candidatos": Candidato.obter_lista_por_cargo(deputado_cargo, estado), "nulo": "XXXXX", "branco": "00000" }) nome_estado = nome_do_estado(estado) if request.method == "POST": selecionados = { "presidente": request.POST.get("candidato_1", None), "governador": request.POST.get("candidato_3", None), } if eh_segundo_turno: selecionados["senador"] = request.POST.get("candidato_5", None) selecionados["deputado-federal"] = request.POST.get( "candidato_6", None) selecionados[deputado_slug] = request.POST.get( "candidato_{}".format(deputado_cargo), None) return render_to_response('escolher_candidatos.html', locals(), context_instance=RequestContext(request))