def set_pantalla_partidos(self): """Envia el comando para mostrar los botones para seleccionar la partido. """ partidos = self._get_partidos() listas = Lista.all() if not get_tipo_elec("interna") and len(partidos) == len(listas): self.cargar_listas() else: self.send_command("seleccion_partido", partidos)
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 _precache_datos(self): sleep(0.1) self.sesion.logger.debug("cacheando categorias") alianzas = self.agrupador.all() for categoria in Categoria.all(): candidatos = self._get_candidatos_categoria(categoria.codigo, None) if len(candidatos) > get_tipo_elec("colapsar_listas"): for alianza in alianzas: if len(alianza.listas) > 10: self._get_candidatos_categoria(categoria.codigo, alianza.codigo) self.sesion.logger.debug("cacheando listas") for lista in Lista.all(): self._get_dict_lista(lista) self.sesion.logger.debug("cacheando partidos") self._get_partidos() self.sesion.logger.debug("fin cache")
def _get_tabla(self, width): ret = {} empujar_firmas = 0 lineas = [] # muestro la tabla solo si tiene recuento mostrar_partidos = any([lista.cod_partido for lista in Lista.all()]) if self.categoria is None: categorias = Categoria.many(sorted="posicion") else: categorias = Categoria.many(codigo=self.categoria) dx = 10 # ancho genérico de columnas ancho_col = 40 * self.zoom # calculo ancho columna descripción w = width - dx * 2 - len(categorias) * ancho_col w = w - ancho_col # resto ancho col. nº de lista y2 = 370 if not self.de_muestra else 160 lineas.append((y2 * self.zoom, self.margin_left, self.margin_right)) filas = [] # listas ordenadas por numero, con blanco al final listas = [l for l in Lista.many(sorted='cod_partido, numero') if not l.es_blanco()] def _sort_listas(lista_a, lista_b): return cmp(int(lista_a.numero)if lista_a.numero != "" else lista_a.codigo, int(lista_b.numero)if lista_b.numero != "" else lista_b.codigo) def _sort_listas_paso(lista_a, lista_b): return cmp(lista_a.partido.nombre.upper(), lista_b.partido.nombre.upper()) if get_tipo_elec("paso"): listas = sorted(listas, _sort_listas_paso) else: listas = sorted(listas, _sort_listas) lista_blanca = Lista.one(COD_LISTA_BLANCO) if lista_blanca is not None: listas.append(lista_blanca) partido_actual = None num_listas = 0 guiones = ["-"] * (len(categorias) + 1) principales = self.recuento._get_dict_candidatos() for lista in listas: lista_partido = False partido = lista.partido es_blanco = lista.es_blanco() if mostrar_partidos and not es_blanco and \ partido_actual != lista.cod_partido: partido_actual = lista.cod_partido if num_listas == 0: filas = filas[:-1] else: num_listas = 0 una_lista = num_listas == 0 and len(partido.listas) == 1 if una_lista or partido.nombre == lista.nombre: lista_partido = True else: fila = [partido.nombre] + guiones filas.append(fila) lista_partido = False numero = lista.numero if lista.numero is not None else "" nombre_lista = lista.nombre if not lista_partido else partido.nombre if not es_blanco and not lista_partido and get_tipo_elec("paso"): nombre_lista = "-- " + nombre_lista fila = [nombre_lista, numero] for categoria in categorias: candidato = principales.get((lista.codigo, categoria.codigo)) resultado = "- " if candidato is not None: resultado = self.recuento.obtener_resultado( categoria.codigo, candidato.codigo) fila.append(resultado) num_listas += 1 filas.append(fila) empujar_firmas += len(filas) * 23 # Armando tabla superior x = self.margin_left y = (350 if not self.de_muestra else 140) * self.zoom ancho_columnas = [w, ancho_col] + [ancho_col] * len(categorias) titulo_columnas = [_("palabra_lista"), "Nº"] + \ [cat.codigo for cat in categorias] columnas = [] for i, titulo in enumerate(titulo_columnas): columna = [titulo] for fila in filas: max_chars = ancho_columnas[i] * 80 / 800 data = fila[i] if i > 0 else fila[i][:max_chars] columna.append(data) columnas.append((columna, x, y, ancho_columnas[i])) x += ancho_columnas[i] ret['alto_rectangulo'] = len(filas) * 23 ret['tabla'] = columnas titulo_columnas = ["Cod.", _("palabra_categoria"), "N°"] w = width - dx * 2 - ancho_col * 3 ancho_columnas = [ancho_col, w, ancho_col] y2 = 385 if not self.de_muestra else 173 lineas.append((y2 * self.zoom + empujar_firmas, self.margin_left, self.margin_right)) valores_especiales = [] for lista_esp in get_config("listas_especiales"): _cod_esp = lista_esp.split(".")[-1] valores_especiales.append( (_cod_esp, _("titulo_votos_%s" % _cod_esp), self.recuento.listas_especiales[lista_esp])) general = self.recuento.boletas_contadas() general += sum(self.recuento.listas_especiales.values()) valores_especiales.append((COD_TOTAL, _("total_general"), general)) x = self.margin_left y += empujar_firmas + 30 columnas = [] for i, titulo in enumerate(titulo_columnas): columna = [titulo] for fila in valores_especiales: columna.append(fila[i]) columnas.append((columna, x, y, ancho_columnas[i])) x += ancho_columnas[i] ret['alto_rectangulo_especiales'] = len(valores_especiales) * 23 ret['tabla_especiales'] = columnas empujar_firmas += len(valores_especiales) * 23 ret['lineas'] = lineas return ret, empujar_firmas
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])