def get_nombres_imagenes(): nombres_imagenes = [] for candidato in Candidato.principales(): nombres_imagenes.append(_image_name(candidato.codigo)) for lista in Lista.all(): nombres_imagenes.append(_image_name(lista.codigo)) for partido in Partido.all(): nombres_imagenes.append(_image_name(partido.codigo)) for alianza in Alianza.all(): nombres_imagenes.append(_image_name(alianza.codigo)) return nombres_imagenes
def cargar_candidatos(self, cod_categoria, cod_partido=None): """"Envia los candidatos a la interfaz web.""" if self.agrupacion is not None and cod_partido is None: cod_partido = self.agrupacion.codigo cand_list = self._get_candidatos_categoria(cod_categoria, cod_partido) if MEZCLAR_CANDIDATOS: shuffle(cand_list) # si es una PASO y hay mas listas de las permitidas agrupamos por # Partido o Alianza segun sea el caso if cod_partido is None and get_tipo_elec("paso") and len(cand_list) > get_tipo_elec("colapsar_listas"): partidos = {} for candidato in cand_list: cod_partido = candidato["partido"]["codigo"] if cod_partido not in partidos: candidato["partido"]["imagen"] = _image_name(cod_partido) partidos[cod_partido] = candidato["partido"] partidos = partidos.values() shuffle(partidos) self.send_command( "cargar_partido_categorias", { "candidatos": cand_list, "cod_categoria": cod_categoria, "partidos": partidos, "agrupador": self.agrupador.__name__.lower(), }, ) else: # En caso de que haya un solo candidato lo seleccionamos y pasamos # a la proxima categoria, esto es porque puede pasar que la # organizacion politica tenga una sola lista if len(cand_list) == 1: self.seleccionar_candidatos([cod_categoria, [cand_list[0]["codigo"]]]) else: self.send_command("cargar_candidatos", {"candidatos": cand_list, "cod_categoria": cod_categoria})
def _get_dict_lista(self, lista): key = ("dict_lista", lista.codigo) if key in self._cache_categorias: listas_dict = self._cache_categorias[key] else: listas_dict = [] candidatos = lista.candidatos if len(candidatos): lista_dict = lista.to_dict() lista_dict["imagen"] = _image_name(lista.codigo) lista_dict["candidatos"] = [] for cand in candidatos: candidato_dict = cand.full_dict(_image_name, secundarios=False, suplentes=False) candidato_dict["categoria"] = cand.categoria.nombre lista_dict["candidatos"].append(candidato_dict) listas_dict.append(lista_dict) self._cache_categorias[key] = listas_dict return listas_dict
def cargar_listas(self, cod_candidatos=None, cat=None): """Envia el comando para cargar las listas.""" if cod_candidatos is None: cod_candidatos = [] cod_partido = self.agrupacion.codigo if self.agrupacion is not None else None if cod_partido is None: listas = Lista.all() else: listas = self.agrupador.one(cod_partido).listas listas_dict = [] if MEZCLAR_LISTAS: listas.shuffle() for lista in listas: candidatos = lista.candidatos if len(candidatos): hash_lista = [candidato.codigo for candidato in candidatos] lista_dict = lista.to_dict() lista_dict["hash"] = hash_lista lista_dict["imagen"] = _image_name(lista.codigo) lista_dict["candidatos"] = [] for candidato in candidatos: candidato_dict = candidato.full_dict(_image_name) candidato_dict["hash_lista"] = hash_lista candidato_dict["categoria"] = candidato.categoria.nombre lista_dict["candidatos"].append(candidato_dict) listas_dict.append(lista_dict) if get_tipo_elec("adh_segmentada"): if cat is None: search_cat = Categoria.one(sorted="posicion") else: cat = Categoria.one(cat) search_cat = cat.next(consulta_popular=False) repite, listas_filtradas, next_search_cat = self._cat_con_adh(listas_dict, cat, search_cat, cod_candidatos) if repite and next_search_cat is not None: listas_dict = listas_filtradas ultima_cat = False else: ultima_cat = True listas_finales = [] for lista in listas_dict: for candidato in listas_filtradas: if lista["hash"] == candidato["hash_lista"]: listas_finales.append(lista) listas_dict = listas_finales if len(listas_dict) > 1: if ( get_tipo_elec("adh_segmentada") and repite and get_tipo_elec("adh_segmentada_nivel") > len(cod_candidatos) ): self.send_command("cargar_adhesiones", [listas_dict, search_cat.codigo, cod_candidatos, ultima_cat]) else: self.send_command("cargar_listas_params", [listas_dict, None, cod_candidatos]) else: self.seleccionar_lista([listas_dict[0]["codigo"], None, None, True])
def cargar_listas(self, cod_candidatos=None, cat=None): """Envia el comando para cargar las listas.""" if cod_candidatos is None: cod_candidatos = [] cod_partido = self.agrupacion.codigo if self.agrupacion is not None \ else None if cod_partido is None: listas = Lista.all() else: listas = self.agrupador.one(cod_partido).listas listas_dict = [] if MEZCLAR_LISTAS: listas.shuffle() for lista in listas: candidatos = lista.candidatos if len(candidatos): hash_lista = [candidato.codigo for candidato in candidatos] lista_dict = lista.to_dict() lista_dict['hash'] = hash_lista lista_dict['imagen'] = _image_name(lista.codigo) lista_dict['candidatos'] = [] for candidato in candidatos: candidato_dict = candidato.full_dict(_image_name) candidato_dict['hash_lista'] = hash_lista candidato_dict['categoria'] = candidato.categoria.nombre lista_dict['candidatos'].append(candidato_dict) listas_dict.append(lista_dict) if get_tipo_elec("adh_segmentada"): if cat is None: search_cat = Categoria.one(sorted="posicion") else: cat = Categoria.one(cat) search_cat = cat.next(consulta_popular=False) repite, listas_filtradas, next_search_cat = \ self._cat_con_adh(listas_dict, cat, search_cat, cod_candidatos) if repite and next_search_cat is not None: listas_dict = listas_filtradas ultima_cat = False else: ultima_cat = True listas_finales = [] for lista in listas_dict: for candidato in listas_filtradas: if lista['hash'] == candidato['hash_lista']: listas_finales.append(lista) listas_dict = listas_finales if len(listas_dict) > 1: if get_tipo_elec("adh_segmentada") and repite and \ get_tipo_elec("adh_segmentada_nivel") > len(cod_candidatos): self.send_command("cargar_adhesiones", [ listas_dict, search_cat.codigo, cod_candidatos, ultima_cat ]) else: self.send_command("cargar_listas_params", [listas_dict, None, cod_candidatos]) else: self.seleccionar_lista( [listas_dict[0]['codigo'], None, None, True])