コード例 #1
0
 def rellenar_de_blanco(self):
     """Agrega voto en blanco a las categorias que no fueron votadas."""
     for categoria in Categoria.many():
         if self.candidato_categoria(categoria.codigo) is None:
             blanco = Candidatura.one(cod_categoria=categoria.codigo,
                                      clase="Blanco")
             if blanco is not None:
                 self.elegir_candidato(blanco)
コード例 #2
0
ファイル: controlador.py プロジェクト: bauna/vot.ar
    def audios_cargo_listas(self, data):
        """Carga los audios de las lista de los cargos."""
        listas = []
        for datum in data:
            lista = Candidatura.one(id_umv=datum).to_dict()
            listas.append(lista)

        self.audios("cargar_cargo_listas", listas)
コード例 #3
0
    def audios_cargo_listas(self, data):
        """Carga los audios de las lista de los cargos."""
        listas = []
        for datum in data:
            lista = Candidatura.one(id_umv=datum).to_dict()
            listas.append(lista)

        self.audios("cargar_cargo_listas", listas)
コード例 #4
0
ファイル: controlador.py プロジェクト: bauna/vot.ar
 def audios_cargar_consulta(self, data):
     """Carga los audios de la consulta popular."""
     data_dict = {"cod_categoria": data[0]}
     candidatos = []
     for elem in data[1]:
         candidato = Candidatura.one(id_umv=elem).to_dict()
         candidatos.append(candidato)
     data_dict["candidatos"] = candidatos
     self.audios("cargar_consulta_popular", data_dict)
コード例 #5
0
 def audios_mostrar_confirmacion(self, data):
     """Carga los audios de la confirmacion."""
     paneles = []
     for datum in data:
         categoria = Categoria.one(datum[0]).to_dict()
         candidato = Candidatura.one(datum[1]).to_dict()
         dict_panel = {"categoria": categoria, "candidato": candidato}
         paneles.append(dict_panel)
     self.audios("mostrar_confirmacion", paneles)
コード例 #6
0
 def audios_cargar_consulta(self, data):
     """Carga los audios de la consulta popular."""
     data_dict = {"cod_categoria": data[0]}
     candidatos = []
     for elem in data[1]:
         candidato = Candidatura.one(id_umv=elem).to_dict()
         candidatos.append(candidato)
     data_dict["candidatos"] = candidatos
     self.audios("cargar_consulta_popular", data_dict)
コード例 #7
0
ファイル: controlador.py プロジェクト: bauna/vot.ar
 def audios_mostrar_confirmacion(self, data):
     """Carga los audios de la confirmacion."""
     paneles = []
     for datum in data:
         categoria = Categoria.one(datum[0]).to_dict()
         candidato = Candidatura.one(datum[1]).to_dict()
         dict_panel = {"categoria": categoria,
                       "candidato": candidato}
         paneles.append(dict_panel)
     self.audios("mostrar_confirmacion", paneles)
コード例 #8
0
ファイル: actas.py プロジェクト: bauna/vot.ar
    def a_human(self):
        texto = "{} - {}, {}, {} ({})\n".format(self.mesa.descripcion,
                                                self.mesa.escuela,
                                                self.mesa.municipio,
                                                self.mesa.departamento,
                                                self.mesa.codigo)
        for autoridad in self.autoridades:
            texto += "Autoridad: {}\n".format(autoridad.nro_documento)

        for categoria in Categoria.many(sorted="posicion",
                                        id_grupo=self.grupo_cat):
            texto += "{}\n".format(categoria.nombre)
            for lista in Lista.many(sorted='codigo'):
                candidato = Candidatura.one(cod_categoria=categoria.codigo,
                                            cod_lista=lista.codigo)
                if candidato is not None:
                    votos = self.get_resultados(candidato.id_umv)
                    texto += "\t{} - {} Votos: {}\n".format(lista.nombre,
                                                            candidato.nombre,
                                                            votos)
            candidato = Candidatura.one(cod_categoria=categoria.codigo,
                                        clase="Blanco")
            if candidato is not None:
                votos = self.get_resultados(candidato.id_umv)
                texto += "\t{}: {}\n".format(_("votos_en_blanco"), votos)
            texto += "\n"

        texto += "\nCampos extra:\n"
        ordered_keys = sorted(self.campos_extra.keys())
        for key in ordered_keys:
            texto += "{}: {}\n".format(key, self.campos_extra[key])

        texto += "\nListas Especiales:\n"
        ordered_keys = sorted(self.listas_especiales.keys())
        for key in ordered_keys:
            titulo = _("titulo_votos_{}".format(key))
            texto += "{}: {}\n".format(titulo, self.listas_especiales[key])

        return texto
コード例 #9
0
    def seleccionar_candidatos(self, seleccion):
        """Selecciona los candidatos."""
        for cod_categoria, cod_candidatos in list(seleccion.items()):
            muchos_candidatos = len(cod_candidatos) > 1

            if muchos_candidatos:
                self.modulo.seleccion.borrar_categoria(cod_categoria)

            for cod_candidato in cod_candidatos:
                cod_candidato = int(cod_candidato)
                candidato = Candidatura.one(cod_candidato)
                self.modulo.seleccion.elegir_candidato(candidato,
                                                       not muchos_candidatos)
コード例 #10
0
ファイル: controlador.py プロジェクト: bauna/vot.ar
    def seleccionar_candidatos(self, seleccion):
        """Selecciona los candidatos."""
        for cod_categoria, cod_candidatos in list(seleccion.items()):
            muchos_candidatos = len(cod_candidatos) > 1

            if muchos_candidatos:
                self.modulo.seleccion.borrar_categoria(cod_categoria)

            for cod_candidato in cod_candidatos:
                cod_candidato = int(cod_candidato)
                candidato = Candidatura.one(cod_candidato)
                self.modulo.seleccion.elegir_candidato(candidato,
                                                       not muchos_candidatos)
コード例 #11
0
    def a_human(self):
        texto = "{} - {}, {}, {} ({})\n".format(self.mesa.descripcion,
                                                self.mesa.escuela,
                                                self.mesa.municipio,
                                                self.mesa.departamento,
                                                self.mesa.codigo)
        for autoridad in self.autoridades:
            texto += "Autoridad: {}\n".format(autoridad.nro_documento)

        for categoria in Categoria.many(sorted="posicion",
                                        id_grupo=self.grupo_cat):
            texto += "{}\n".format(categoria.nombre)
            for lista in Lista.many(sorted='codigo'):
                candidato = Candidatura.one(cod_categoria=categoria.codigo,
                                            cod_lista=lista.codigo)
                if candidato is not None:
                    votos = self.get_resultados(candidato.id_umv)
                    texto += "\t{} - {} Votos: {}\n".format(
                        lista.nombre, candidato.nombre, votos)
            candidato = Candidatura.one(cod_categoria=categoria.codigo,
                                        clase="Blanco")
            if candidato is not None:
                votos = self.get_resultados(candidato.id_umv)
                texto += "\t{}: {}\n".format(_("votos_en_blanco"), votos)
            texto += "\n"

        texto += "\nCampos extra:\n"
        ordered_keys = sorted(self.campos_extra.keys())
        for key in ordered_keys:
            texto += "{}: {}\n".format(key, self.campos_extra[key])

        texto += "\nListas Especiales:\n"
        ordered_keys = sorted(self.listas_especiales.keys())
        for key in ordered_keys:
            titulo = _("titulo_votos_{}".format(key))
            texto += "{}: {}\n".format(titulo, self.listas_especiales[key])

        return texto
コード例 #12
0
    def _get_datos_fila(self, categorias, agrupacion, partido_omitido):
        """Devuelve los datos de la tabla principal del acta.

        Argumentos:
            categorias -- las categorias que queremos mostrar en la tabla.
            agrupacion -- la agrupacion de la que estamos mostrando la tabla
        """
        # primero vamos a averiguar la indentacion que queremos ponerle a esta
        # fila en la tabla.
        clases_a_mostrar = self.config("clases_a_mostrar",
                                       self.data["cod_datos"])
        mostrar_numero = self.config("numero_lista_en_tabla",
                                     self.data["cod_datos"])
        indentacion = clases_a_mostrar.index(agrupacion.clase)
        # si el partido no esta omitido vamos a ponerle profundidad.
        if not partido_omitido:
            nombre = " " * indentacion
            nombre += agrupacion.nombre
        # sino el nombre pasa de largo y queda el que está.
        else:
            nombre = agrupacion.partido.nombre
        # establecemos el numero de la lista. En alguna eleccion esto puede ser
        # mas complejo que traer el numero, puede ser la concatenacion de
        # varios numeros diferentes.
        if mostrar_numero and hasattr(agrupacion, "numero"):
            numero = str(agrupacion.numero)
        else:
            numero = ""

        # armamos la base de la fila.
        fila = [numero, nombre, indentacion]

        # Recorremos todas las categorias que queremos mostrar en este acta
        # buscando cuantos votos tiene cada candidato.
        for categoria in categorias:
            candidato = Candidatura.one(cod_lista=agrupacion.codigo,
                                        cod_categoria=categoria.codigo)
            # Si el candidato existe vamos a buscar cuantos votos tiene y sino
            # devolvemos "-" que se transforma en una cruz en el acta
            if candidato is not None:
                votos = self.recuento.get_resultados(candidato.id_umv)
            else:
                votos = "-"
            fila.append(votos)

        return fila, len(numero)
コード例 #13
0
ファイル: actas.py プロジェクト: bauna/vot.ar
 def get_resultados(self, id_umv=None):
     """Devuelve todos los resultados o uno en especifico."""
     # si le pedimos uno solo busca los votos de ese candidato.
     if id_umv is not None:
         ret = self.pizarra.votos_candidato(id_umv)
     else:
         # Sino devolvemos todos
         votos = self.pizarra.get_votos_actuales()
         # Si el acta está desglosada devolvemos la categorias que tiene el
         # acta guardada
         if self.grupo_cat is not None:
             categorias_grupo = Categoria.many(id_grupo=self.grupo_cat)
             cods_categoria = [cat.codigo for cat in categorias_grupo]
             ret = {}
             for key in votos.keys():
                 cand = Candidatura.one(id_umv=key,
                                        cod_categoria__in=cods_categoria)
                 if cand is not None:
                     ret[key] = votos[key]
         else:
             # no esta desgolsada devolvemos todos los votos.
             ret = votos
     return ret
コード例 #14
0
 def get_resultados(self, id_umv=None):
     """Devuelve todos los resultados o uno en especifico."""
     # si le pedimos uno solo busca los votos de ese candidato.
     if id_umv is not None:
         ret = self.pizarra.votos_candidato(id_umv)
     else:
         # Sino devolvemos todos
         votos = self.pizarra.get_votos_actuales()
         # Si el acta está desglosada devolvemos la categorias que tiene el
         # acta guardada
         if self.grupo_cat is not None:
             categorias_grupo = Categoria.many(id_grupo=self.grupo_cat)
             cods_categoria = [cat.codigo for cat in categorias_grupo]
             ret = {}
             for key in votos.keys():
                 cand = Candidatura.one(id_umv=key,
                                        cod_categoria__in=cods_categoria)
                 if cand is not None:
                     ret[key] = votos[key]
         else:
             # no esta desgolsada devolvemos todos los votos.
             ret = votos
     return ret
コード例 #15
0
    def desde_string(cls, tag, mesa=None):
        """Devuelve una seleccion a partir de la informacion de un tag rfid.
        """
        seleccion = None

        try:
            datos_tag = struct_voto.parse(tag)
        except (RangeError, FieldError, ValueError):
            # Manejamos que no nos puedan meter cualquier
            datos_tag = None

        if datos_tag is not None:
            ubic = datos_tag.ubicacion.decode("utf-8")
            if mesa is not None:
                # verificamos la mesa
                if mesa.cod_datos != ubic:
                    raise MesaIncorrecta()
            else:
                # OJO: Esto trae cualquier mesa del juego de datos.
                # No importa por que todas las mesas del mismo juego son
                # compatibles. Pero no nos permite identificar de que mesa es
                # el voto.
                mesa = Ubicacion.first(cod_datos=ubic)
                mesa.usar_cod_datos()

            seleccion = Seleccion(mesa)
            seleccion.serial = datos_tag.serial

            sel_por_cat = {}
            # recorremos cada uno de los pares de categoria/candidatos en el
            # tag
            str_opciones = datos_tag.opciones.decode()
            opciones = str_opciones.split(",")
            if len(opciones):
                for elem in opciones:
                    if len(elem):
                        cod_cat, id_umv = elem.split(":")
                        id_umv = int(id_umv)
                        sel_por_cat[cod_cat] = sel_por_cat.get(cod_cat, 0) + 1

                        # Buscamos el candidato votado para la categoria en
                        # cuestion
                        candidato = Candidatura.one(id_umv=id_umv,
                                                    cod_categoria=cod_cat)
                        # y lo elegimos (Si no encontró ninguno lanza un value
                        # error).
                        if candidato is None:
                            raise ValueError()
                        max_selecciones = int(
                            candidato.categoria.max_selecciones)
                        borrar = max_selecciones == 1
                        seleccion.elegir_candidato(candidato, borrar=borrar)

                if len(list(sel_por_cat.keys())) != len(Categoria.all()):
                    # caso en el que la canditad de categorias votadas sea
                    # diferente que la cantidad de categorias
                    seleccion = None
                else:
                    # aca verificamos que la cantidad de candidatos por
                    # categoria sea menor o igual de la cantidad de selecciones
                    # maximas que esperamos
                    for cod_categoria, cantidad in list(sel_por_cat.items()):
                        categoria = Categoria.one(cod_categoria)
                        max_selec = int(categoria.max_selecciones)
                        if categoria is None or cantidad > max_selec:
                            seleccion = None
                            break

        return seleccion
コード例 #16
0
 def __init__(self, controlador, data, data_key=None, repetir=True):
     blanco = Candidatura.one(clase="Blanco").to_dict()
     data.append(blanco)
     Asistente.__init__(self, controlador, data, data_key, repetir)