def desde_string(cls, tag, mesa=None): datos_tag = struct_voto.parse(tag) if mesa is not None: # verificamos la mesa if mesa.cod_datos != datos_tag.ubicacion: raise MesaIncorrecta() else: #OJO: ESTO trae cualquier mesa del juego de datos mesa = Ubicacion.one(cod_datos=datos_tag.ubicacion) current_data_code(datos_tag.ubicacion) if datos_tag.cod_interna != "": interna = Partido.one(datos_tag.cod_interna) else: interna = None candidatos = [] for elem in datos_tag.voto_categoria: cod_categoria = elem["cod_categoria"].strip() cod_candidato = elem["cod_candidatura"].strip() if cod_candidato == COD_LISTA_BLANCO: candidato = Candidato.one(codigo__endswith=cod_candidato, cod_categoria=cod_categoria) else: candidato = Candidato.one(codigo__endswith="." + cod_candidato, cod_categoria=cod_categoria) candidatos.append(candidato) return Seleccion(mesa, None, candidatos)
def desde_string(cls, tag, mesa=None): datos_tag = struct_voto.parse(tag) if mesa is not None: # verificamos la mesa if mesa.cod_datos != datos_tag.ubicacion: raise MesaIncorrecta() else: #OJO: ESTO trae cualquier mesa del juego de datos mesa = Ubicacion.one(cod_datos=datos_tag.ubicacion) current_data_code(datos_tag.ubicacion) candidatos = [] for elem in datos_tag.voto_categoria: cod_categoria = elem["cod_categoria"].strip() cod_candidato = elem["cod_candidatura"].strip() if cod_candidato == COD_LISTA_BLANCO: candidato = Candidato.one(codigo__endswith=cod_candidato, cod_categoria=cod_categoria) else: candidato = Candidato.one(codigo__endswith="." + cod_candidato, cod_categoria=cod_categoria) candidatos.append(candidato) return Seleccion(mesa, None, candidatos)
def a_human(self): texto = "%s - %s, %s, %s (%s)\n" % (self.mesa.descripcion, self.mesa.escuela, self.mesa.municipio, self.mesa.departamento, self.mesa.codigo) for categoria in Categoria.many(sorted="posicion"): texto += "%s\n" % categoria.nombre for lista in Lista.many(sorted='codigo'): candidato = Candidato.one(cod_categoria=categoria.codigo, cod_lista=lista.codigo, titular=True, numero_de_orden=1) if candidato is not None: votos = self._resultados[categoria.codigo, candidato.codigo] texto += "\t%s - %s Votos: %s\n" % (lista.nombre, candidato.nombre, votos) texto += "\n" texto += "\nCampos extra:\n" ordered_keys = sorted(self.campos_extra.keys()) for key in ordered_keys: texto += "%s: %s\n" % (key, self.campos_extra[key]) texto += "\nListas Especiales:\n" ordered_keys = sorted(self.listas_especiales.keys()) for key in ordered_keys: texto += "%s: %s\n" % (_("titulo_votos_%s" % key), self.listas_especiales[key]) return texto
def desde_tag(cls, tag, con_dnis=True): if con_dnis: struct = struct_recuento_dni else: struct = struct_recuento datos_tag = struct.parse(tag) por_categoria = int(datos_tag.por_categoria) cod_categoria = datos_tag.cod_categoria if SMART_PACKING: num_mesa, valores = unpack("".join(datos_tag.datos)) mesa = Ubicacion.one(numero=str(num_mesa)) else: tag = "".join(datos_tag.datos) len_cod_mesa = int(tag[:2]) cod_mesa = tag[2:2 + len_cod_mesa] mesa = Ubicacion.one(cod_mesa) valores = unpack(tag[len_cod_mesa + 2:]) if not mesa: raise MesaNoEncontrada() current_data_code(mesa.cod_datos) if por_categoria: categorias = Categoria.many(codigo=cod_categoria) else: categorias = Categoria.many(sorted='codigo') recuento = Recuento(mesa) principales = recuento._get_dict_candidatos() # leemos los valores y los seteamos en los resultados # vienen ordenados por cod_lista,cod_categoria for lista in Lista.many(sorted='codigo'): for categoria in categorias: candidato = Candidato.one(cod_categoria=categoria.codigo, cod_lista=lista.codigo, titular=True, numero_de_orden=1) if candidato is not None: recuento._resultados[categoria.codigo, candidato.codigo] = valores.pop(0) ordered_keys = sorted(recuento.campos_extra.keys()) for key in ordered_keys: recuento.campos_extra[key] = valores.pop(0) ordered_keys = sorted(recuento.listas_especiales.keys()) for key in ordered_keys: recuento.listas_especiales[key] = valores.pop(0) if por_categoria: recuento.cod_categoria = cod_categoria if con_dnis: dnis = unpack_slow(datos_tag.documentos, 27) for dni in dnis: autoridad = Autoridad("", "", 0, dni) recuento.autoridades.append(autoridad) return recuento
def a_human(self): texto = "%s - %s, %s (%s)\n" % (self.mesa.descripcion, self.mesa.escuela, self.mesa.comuna, self.mesa.codigo) for autoridad in self.autoridades: texto += "%s\n" % autoridad.nro_documento for categoria in Categoria.many(sorted="posicion"): texto += "%s\n" % categoria.nombre for lista in Lista.many(sorted='codigo'): candidato = Candidato.one(cod_categoria=categoria.codigo, cod_lista=lista.codigo, titular=True, numero_de_orden=1) if candidato is not None: votos = self._resultados[categoria.codigo, candidato.codigo] texto += "\t%s - %s Votos: %s\n" % (lista.nombre, candidato.nombre, votos) texto += "\n" texto += "\nCampos extra:\n" ordered_keys = sorted(self.campos_extra.keys()) for key in ordered_keys: texto += "%s: %s\n" % (key, self.campos_extra[key]) texto += "\nListas Especiales:\n" ordered_keys = sorted(self.listas_especiales.keys()) for key in ordered_keys: texto += "%s: %s\n" % (_("titulo_votos_%s" % key), self.listas_especiales[key]) return texto
def elegir_candidato(self, candidato, borrar=True): """Elegir un candidato.""" if candidato is not None: if borrar: self.borrar_categoria(candidato.cod_categoria) self._candidatos.append(candidato) categorias_hijas = candidato.categoria.get_hijas() if len(categorias_hijas) > 0: for cat_hija in categorias_hijas: principal = Candidato.one(cod_categoria=cat_hija.codigo, cod_lista=candidato.cod_lista, titular=True, numero_de_orden=1) self.elegir_candidato(principal)
def completa(self, interna=None): """Determina si la seleccion es completa (candidatos en todas las categorias).""" if get_tipo_elec("interna") and interna is not None: categorias = Categoria.all() cat_usadas = [] for categoria in categorias: has_cand = Candidato.one(cod_categoria=categoria.codigo, cod_interna=interna.codigo) if has_cand is not None: cat_usadas.append(categoria) len_categoria = len(cat_usadas) else: len_categoria = len(Categoria.all()) return len(self._candidatos) == len_categoria
def seleccionar_candidatos(self, data): """Selecciona el candidato y envia el comando para cargar las categorias. """ cod_categoria, cod_candidatos = data muchos_candidatos = len(cod_candidatos) > 1 if muchos_candidatos: self.parent.seleccion.borrar_categoria(cod_categoria) for elem in data[1]: candidato = Candidato.one(elem) self.parent.seleccion.elegir_candidato(candidato, not muchos_candidatos) categoria = Categoria.one(cod_categoria) if categoria.consulta_popular: self.mostrar_confirmacion() else: self.cargar_categorias()
def rellenar_de_blanco(self): for categoria in Categoria.many(consulta_popular=False): if self.candidato_categoria(categoria.codigo) is None: blanco = Candidato.one(cod_categoria=categoria.codigo, cod_lista=COD_LISTA_BLANCO) self.elegir_candidato(blanco)