Esempio n. 1
0
File: voto.py Progetto: sunzu/vot.ar
    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 = self._get_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
                })
Esempio n. 2
0
def get_constants():
        translations = ("si", "no", "ver_qr",
            "alto_contraste", "muchas_gracias", "puede_retirar_boleta",
            "si_desea_verificarlo", "imprimiendo_voto", "no_retirar_boleta",
            "agradecimiento", "cancelar", "volver_al_inicio", "salir",
            "terminar_escrutinio", "aceptar", "boletas_procesadas",
            "escrutinio_mesa", "iniciar_instructivo", "finalizar_instructivo",
            "bienvenida_recuento", "boleta_unica_electronica",
            "caracteristicas_pantalla", "slide_2_titulo", "slide_2_contenido",
            "slide_3_subtitulo", "slide_3_recuadro_1", "slide_3_recuadro_2",
            "slide_3_recuadro_3", "slide_4_subtitulo", "slide_4_recuadro_1",
            "slide_5_subtitulo", "slide_5_recuadro_1", "slide_6_titulo",
            "slide_6_subtitulo", "presione_imprimir", "fiscales_qr",
            "introduzca_acta_transmision", "introduzca_cerfificado_escrutinio",
            "asegurese_firmar_acta", "introduzca_certificado_boletas",
            "slide_2_bullet_1", "slide_2_bullet_2", "slide_2_bullet_3",
            "introduzca_sobre_actas", "slide_3_bullet_1", "slide_3_bullet_2",
            "slide_3_bullet_3", "slide_3_bullet_4", "slide_3_bullet_5",
            "entregue_certif_transmision", "el_suplente_acercara",
            "introduzca_certificados_para_fiscales", "usted_puede_imprimir",
            "introduzca_acta_cierre_nuevamente")
        encabezado = get_config('datos_eleccion')

        constants_dict = {
            "juego_de_datos": JUEGO_DE_DATOS,
            "cod_lista_blanco": COD_LISTA_BLANCO,
            "elecciones_internas": get_tipo_elec("interna"),
            "elecciones_paso": get_tipo_elec("paso"),
            "mostrar_cursor": MOSTRAR_CURSOR,
            "encabezado": [(texto, encabezado[texto]) for texto in encabezado],
            "i18n": [(trans, _(trans)) for trans in translations],
            "palabra_lista": _("palabra_lista"),
            "palabra_nombre": _("palabra_nombre"),
            "palabra_categoria": _("palabra_categoria"),
            "palabra_siguiente": _("palabra_siguiente"),
            "palabra_anterior": _("palabra_anterior"),
            "palabra_imprimir": _("palabra_imprimir"),
            "terminar_escrutinio": _("terminar_escrutinio"),
            "terminar": _("terminar"),
            "salir": _("salir"),
            "sus_candidatos": _("sus_candidatos"),
            "candidato_no_seleccionado": _("candidato_no_seleccionado"),
            "cod_estado_espera": RECUENTO_NO_TAG,
            "cod_estado_ok": RECUENTO_OK,
            "cod_boleta_repetida": RECUENTO_ERROR_REPETIDO,
            "cod_error_lectura": RECUENTO_ERROR,
            "usar_qr": USAR_QR,
            "usa_armve": USA_ARMVE,
            "ext_img_voto": EXT_IMG_VOTO,
            "effects": EFECTOS_RECUENTO,
            "flavor": FLAVOR,
            "templates": get_templates(),
            "PATH_TEMPLATES_VOTO": "file:///%s/" % PATH_TEMPLATES_VOTO,
            "CIERRE_ESCRUTINIO": CIERRE_ESCRUTINIO,
            "CIERRE_TRANSMISION": CIERRE_TRANSMISION,
            "listas_especiales": get_config("listas_especiales"),
            "cod_estado_imprimiendo": RECUENTO_IMPRIMIENDO,
            "cod_estado_generando": RECUENTO_GENERANDO
        }
        return constants_dict
Esempio n. 3
0
def get_constants():
    translations = (
        "si", "no", "ver_qr", "introduzca_acta_cierre", "alto_contraste",
        "muchas_gracias", "puede_retirar_boleta", "si_desea_verificarlo",
        "imprimiendo_voto", "no_retirar_boleta", "agradecimiento", "cancelar",
        "volver_al_inicio", "salir", "terminar_escrutinio", "aceptar",
        "boletas_procesadas", "escrutinio_mesa", "iniciar_instructivo",
        "finalizar_instructivo", "bienvenida_recuento",
        "boleta_unica_electronica", "caracteristicas_pantalla",
        "slide_2_titulo", "slide_2_contenido", "slide_3_subtitulo",
        "slide_3_recuadro_1", "slide_3_recuadro_2", "slide_3_recuadro_3",
        "slide_4_subtitulo", "slide_4_recuadro_1", "slide_5_subtitulo",
        "slide_5_recuadro_1", "slide_6_titulo", "slide_6_subtitulo",
        "presione_imprimir", "fiscales_qr", "introduzca_acta_transmision",
        "introduzca_cerfificado_escrutinio", "asegurese_firmar_acta",
        "introduzca_certificado_boletas", "slide_2_bullet_1",
        "slide_2_bullet_2", "slide_2_bullet_3", "introduzca_sobre_actas",
        "slide_3_bullet_1", "slide_3_bullet_2", "slide_3_bullet_3",
        "slide_3_bullet_4", "slide_3_bullet_5", "entregue_certif_transmision",
        "el_suplente_acercara", "introduzca_certificados_para_fiscales",
        "usted_puede_imprimir")
    encabezado = get_config('datos_eleccion')

    constants_dict = {
        "juego_de_datos": JUEGO_DE_DATOS,
        "cod_lista_blanco": COD_LISTA_BLANCO,
        "elecciones_internas": get_tipo_elec("interna"),
        "elecciones_paso": get_tipo_elec("paso"),
        "mostrar_cursor": MOSTRAR_CURSOR,
        "encabezado": [(texto, encabezado[texto]) for texto in encabezado],
        "i18n": [(trans, _(trans)) for trans in translations],
        "palabra_lista": _("palabra_lista"),
        "palabra_nombre": _("palabra_nombre"),
        "palabra_categoria": _("palabra_categoria"),
        "palabra_siguiente": _("palabra_siguiente"),
        "palabra_anterior": _("palabra_anterior"),
        "palabra_imprimir": _("palabra_imprimir"),
        "terminar_escrutinio": _("terminar_escrutinio"),
        "terminar": _("terminar"),
        "salir": _("salir"),
        "sus_candidatos": _("sus_candidatos"),
        "candidato_no_seleccionado": _("candidato_no_seleccionado"),
        "cod_estado_espera": RECUENTO_NO_TAG,
        "cod_estado_ok": RECUENTO_OK,
        "cod_boleta_repetida": RECUENTO_ERROR_REPETIDO,
        "cod_error_lectura": RECUENTO_ERROR,
        "usar_qr": USAR_QR,
        "usa_armve": USA_ARMVE,
        "ext_img_voto": EXT_IMG_VOTO,
        "effects": EFECTOS_RECUENTO,
        "flavor": FLAVOR,
        "templates": get_templates(),
        "PATH_TEMPLATES_VOTO": "file:///%s/" % PATH_TEMPLATES_VOTO,
        "CIERRE_ESCRUTINIO": CIERRE_ESCRUTINIO,
        "CIERRE_TRANSMISION": CIERRE_TRANSMISION,
        "listas_especiales": get_config("listas_especiales"),
        "cod_estado_imprimiendo": RECUENTO_IMPRIMIENDO,
        "cod_estado_generando": RECUENTO_GENERANDO
    }
    return constants_dict
Esempio n. 4
0
    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 = self._get_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})
Esempio n. 5
0
File: voto.py Progetto: sunzu/vot.ar
    def seleccionar_modo(self, modo):
        """Envia el comando de cargar categorias o el de cargar listas
        dependiendo del modo de votacion elegido.
        """
        self.reiniciar_seleccion()
        if get_tipo_elec("paso"):
            self.agrupacion = None

        if modo == BOTON_VOTAR_POR_CATEGORIAS:
            self.cargar_categorias()
        elif modo == BOTON_LISTA_COMPLETA:
            if get_tipo_elec("paso"):
                self.set_pantalla_partidos()
            else:
                self.cargar_listas()
Esempio n. 6
0
    def seleccionar_modo(self, modo):
        """Envia el comando de cargar categorias o el de cargar listas
        dependiendo del modo de votacion elegido.
        """
        self.reiniciar_seleccion()
        if get_tipo_elec("paso"):
            self.agrupacion = None

        if modo == BOTON_VOTAR_POR_CATEGORIAS:
            self.cargar_categorias()
        elif modo == BOTON_LISTA_COMPLETA:
            if get_tipo_elec("paso"):
                self.set_pantalla_partidos()
            else:
                self.cargar_listas()
Esempio n. 7
0
    def _cat_con_adh(self, listas, cat, search_cat, cod_candidatos, repite=False):
        if cat is not None and len(cod_candidatos):
            lis_con_cand = self._matchea_adhesiones(cod_candidatos, listas, cat)
            listas = lis_con_cand
        ids_lista = set()
        listas_filtradas = []
        for lista in listas:
            for candidato in lista["candidatos"]:
                if candidato["cod_categoria"] == search_cat.codigo:
                    if candidato["codigo"] in ids_lista:
                        repite = True
                    else:
                        ids_lista.add(candidato["codigo"])
                        listas_filtradas.append(candidato)
        next_search_cat = search_cat.next(consulta_popular=False)
        if (
            len(listas_filtradas) == len(listas)
            or len(listas_filtradas) < 2
            or get_tipo_elec("adh_segmentada_nivel") <= len(cod_candidatos)
        ) and next_search_cat is not None:

            repite, listas_filtradas, next_search_cat = self._cat_con_adh(
                listas, cat, next_search_cat, cod_candidatos, repite
            )

        return repite, listas_filtradas, next_search_cat
Esempio n. 8
0
 def seleccionar_idioma(self, idioma):
     cambiar_locale(idioma)
     self.send_constants()
     if get_tipo_elec("interna"):
         self.set_pantalla_partidos()
     else:
         self.get_pantalla_modos()
Esempio n. 9
0
File: voto.py Progetto: sunzu/vot.ar
 def seleccionar_idioma(self, idioma):
     cambiar_locale(idioma)
     self.send_constants()
     if get_tipo_elec("interna"):
         self.set_pantalla_partidos()
     else:
         self.get_pantalla_modos()
Esempio n. 10
0
File: voto.py Progetto: sunzu/vot.ar
    def _cat_con_adh(self,
                     listas,
                     cat,
                     search_cat,
                     cod_candidatos,
                     repite=False):
        if cat is not None and len(cod_candidatos):
            lis_con_cand = self._matchea_adhesiones(cod_candidatos, listas,
                                                    cat)
            listas = lis_con_cand
        ids_lista = set()
        listas_filtradas = []
        for lista in listas:
            for candidato in lista['candidatos']:
                if candidato['cod_categoria'] == search_cat.codigo:
                    if candidato['codigo'] in ids_lista:
                        repite = True
                    else:
                        ids_lista.add(candidato['codigo'])
                        listas_filtradas.append(candidato)
        next_search_cat = search_cat.next(consulta_popular=False)
        if (len(listas_filtradas) == len(listas) or
            len(listas_filtradas) < 2 or
            get_tipo_elec("adh_segmentada_nivel") <= len(cod_candidatos)) and \
                next_search_cat is not None:

            repite, listas_filtradas, next_search_cat = \
                self._cat_con_adh(listas, cat, next_search_cat, cod_candidatos,
                                  repite)

        return repite, listas_filtradas, next_search_cat
Esempio n. 11
0
    def _get_data_listas(self):
        categorias = self._get_categorias()
        data_listas = [
            l for l in Lista.many(sorted='cod_partido,codigo')
            if not l.es_blanco()
        ]

        if get_tipo_elec("paso"):

            def _sort_listas_paso(lista_a, lista_b):
                return cmp(lista_a.partido.nombre.upper(),
                           lista_b.partido.nombre.upper())

            data_listas = sorted(data_listas, _sort_listas_paso)
        else:

            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)

            data_listas = sorted(data_listas, _sort_listas)

        lista_blanca = Lista.one(COD_LISTA_BLANCO)
        if lista_blanca is not None:
            data_listas.append(lista_blanca)
        listas = []
        for lista in data_listas:
            lista_dict = lista.to_dict()
            if lista.partido is not None:
                lista_dict['nombre_partido'] = lista.partido.nombre
            lista_dict['candidatos'] = []
            for categoria in categorias:
                candidatos = Candidato.many(cod_lista=lista.codigo,
                                            cod_categoria=categoria.codigo,
                                            titular=True,
                                            numero_de_orden=1)
                if candidatos:
                    candidato = candidatos[0]
                    candidato_dict = candidato.to_dict()
                    candidato_dict['votos'] = \
                        self.sesion.recuento.obtener_resultado(categoria.codigo,
                                                               candidato.codigo)
                else:
                    candidato_dict = None
                lista_dict['candidatos'].append(candidato_dict)
            listas.append(lista_dict)

        cat_list = []
        for categoria in categorias:
            cat_dict = categoria.to_dict()
            cat_dict['nombre'] = _(cat_dict['nombre'])
            cat_list.append(cat_dict)

        return cat_list, listas
Esempio n. 12
0
 def _get_categorias(self):
     """Devuelve las categorias para esta mesa y para esta partido en caso
     de que sea ese tipo de eleccion."""
     if not get_tipo_elec("interna"):
         categorias = Categoria.many(sorted="posicion")
     else:
         cod_cats = set([candidato.categoria.codigo for candidato in
                         Candidato.many(cod_partido=self.partido.codigo)])
         categorias = Categoria.many(codigo__in=cod_cats, sorted="posicion")
     return categorias
Esempio n. 13
0
File: voto.py Progetto: sunzu/vot.ar
def get_constants(ubicacion=None):
    translations = ("conformar_voto", "si", "votar_por_categorias",
                    "votar_lista_completa", "su_seleccion", "votar_en_blanco",
                    "confirmar_voto", "alto_contraste", "introduzca_boleta",
                    "si_tiene_dudas", "su_voto_impreso", "no",
                    "muchas_gracias", "puede_retirar_boleta",
                    "si_desea_verificarlo", "imprimiendo_voto",
                    "no_retirar_boleta", "agradecimiento", "este_es_su_voto",
                    "volver_al_inicio", "aguarde_unos_minutos",
                    "seleccionar_idioma", "aceptar", "cancelar",
                    "confirmar_seleccion", "cargando_interfaz",
                    "espere_por_favor", "verificando_voto")

    encabezado = get_config('datos_eleccion')

    constants_dict = {
        "juego_de_datos": JUEGO_DE_DATOS,
        "ubicacion": ubicacion,
        "cod_lista_blanco": COD_LISTA_BLANCO,
        "elecciones_internas": get_tipo_elec("interna"),
        "elecciones_paso": get_tipo_elec("paso"),
        "agrupar_por_partido": AGRUPAR_POR_PARTIDO,
        "mostrar_cursor": MOSTRAR_CURSOR,
        "encabezado": [(texto, encabezado[texto]) for texto in encabezado],
        "i18n": [(trans, _(trans)) for trans in translations],
        "palabra_lista": _("lista"),
        "sus_candidatos": _("sus_candidatos"),
        "candidato_no_seleccionado": _("candidato_no_seleccionado"),
        "usa_armve": USA_ARMVE,
        "ext_img_voto": EXT_IMG_VOTO,
        "effects": EFECTOS_VOTO,
        "flavor": FLAVOR,
        "templates": get_templates(),
        "numeros_templates": NUMEROS_TEMPLATES[FLAVOR],
        "PATH_TEMPLATES_VOTO": "file:///%s/" % PATH_TEMPLATES_VOTO,
        "ADHESION_SEGMENTADA": get_tipo_elec("adh_segmentada"),
        "USAR_BUFFER_IMPRESION": USAR_BUFFER_IMPRESION,
        "COLAPSAR_LISTAS_PASO": get_tipo_elec("colapsar_listas"),
        "COLAPSAR_INTERNAS_PASO": get_tipo_elec("colapsar_partidos"),
        "BARRA_SELECCION": BARRA_SELECCION,
        "asistida": False,
    }
    return constants_dict
Esempio n. 14
0
def get_constants(ubicacion=None):
    translations = (
        "conformar_voto", "si",
        "votar_por_categorias", "votar_lista_completa", "su_seleccion",
        "votar_en_blanco", "confirmar_voto", "alto_contraste",
        "introduzca_boleta", "si_tiene_dudas", "su_voto_impreso", "no",
        "muchas_gracias", "puede_retirar_boleta", "si_desea_verificarlo",
        "imprimiendo_voto", "no_retirar_boleta", "agradecimiento",
        "este_es_su_voto", "volver_al_inicio", "aguarde_unos_minutos",
        "seleccionar_idioma", "aceptar", "cancelar", "confirmar_seleccion",
        "cargando_interfaz", "espere_por_favor", "verificando_voto")

    encabezado = get_config('datos_eleccion')

    constants_dict = {
        "juego_de_datos": JUEGO_DE_DATOS,
        "ubicacion": ubicacion,
        "cod_lista_blanco": COD_LISTA_BLANCO,
        "elecciones_internas": get_tipo_elec("interna"),
        "elecciones_paso": get_tipo_elec("paso"),
        "agrupar_por_partido": AGRUPAR_POR_PARTIDO,
        "mostrar_cursor": MOSTRAR_CURSOR,
        "encabezado": [(texto, encabezado[texto]) for texto in encabezado],
        "i18n": [(trans, _(trans)) for trans in translations],
        "palabra_lista": _("lista"),
        "sus_candidatos": _("sus_candidatos"),
        "candidato_no_seleccionado": _("candidato_no_seleccionado"),
        "usa_armve": USA_ARMVE,
        "ext_img_voto": EXT_IMG_VOTO,
        "effects": EFECTOS_VOTO,
        "flavor": FLAVOR,
        "templates": get_templates(),
        "numeros_templates": NUMEROS_TEMPLATES[FLAVOR],
        "PATH_TEMPLATES_VOTO": "file:///%s/" % PATH_TEMPLATES_VOTO,
        "ADHESION_SEGMENTADA": get_tipo_elec("adh_segmentada"),
        "USAR_BUFFER_IMPRESION": USAR_BUFFER_IMPRESION,
        "COLAPSAR_LISTAS_PASO": get_tipo_elec("colapsar_listas"),
        "COLAPSAR_INTERNAS_PASO": get_tipo_elec("colapsar_partidos"),
        "BARRA_SELECCION": BARRA_SELECCION,
        "asistida": False,
    }
    return constants_dict
Esempio n. 15
0
    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)
Esempio n. 16
0
File: voto.py Progetto: sunzu/vot.ar
    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)
Esempio n. 17
0
    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})
Esempio n. 18
0
 def _get_categorias(self):
     """Devuelve las categorias para esta mesa y para esta partido en caso
     de que sea ese tipo de eleccion."""
     if not get_tipo_elec("interna"):
         categorias = Categoria.many(sorted="posicion")
     else:
         cod_cats = set([
             candidato.categoria.codigo for candidato in Candidato.many(
                 cod_partido=self.partido.codigo)
         ])
         categorias = Categoria.many(codigo__in=cod_cats, sorted="posicion")
     return categorias
Esempio n. 19
0
 def seleccionar_partido(self, data):
     """Selecciona el partido y envia el comando para ver la pantalla de
     modos.
     """
     if data[1] is None:
         self.agrupacion = self.agrupador.one(data[0])
     if get_tipo_elec("paso"):
         if data[1] is None:
             self.cargar_listas()
         else:
             self.cargar_candidatos(data[1], data[0])
     else:
         self.get_pantalla_modos()
Esempio n. 20
0
File: voto.py Progetto: sunzu/vot.ar
 def seleccionar_partido(self, data):
     """Selecciona el partido y envia el comando para ver la pantalla de
     modos.
     """
     if data[1] is None:
         self.agrupacion = self.agrupador.one(data[0])
     if get_tipo_elec("paso"):
         if data[1] is None:
             self.cargar_listas()
         else:
             self.cargar_candidatos(data[1], data[0])
     else:
         self.get_pantalla_modos()
Esempio n. 21
0
    def _get_data_listas(self):
        categorias = self._get_categorias()
        data_listas = [l for l in Lista.many(sorted='cod_partido,codigo')
                       if not l.es_blanco()]

        if get_tipo_elec("paso"):
            def _sort_listas_paso(lista_a, lista_b):
                return cmp((lista_a.partido.nombre.upper(), lista_a.numero),
                           (lista_b.partido.nombre.upper(), lista_b.numero))
            data_listas = sorted(data_listas, _sort_listas_paso)
        else:
            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)
            data_listas = sorted(data_listas, _sort_listas)

        lista_blanca = Lista.one(COD_LISTA_BLANCO)
        if lista_blanca is not None:
            data_listas.append(lista_blanca)
        listas = []
        principales = {(candidato.cod_lista, candidato.cod_categoria): candidato
                       for candidato in Candidato.many(titular=True,
                                                       numero_de_orden=1)}
        for lista in data_listas:
            lista_dict = lista.to_dict()
            if lista.partido is not None:
                lista_dict['nombre_partido'] = lista.partido.nombre
            lista_dict['candidatos'] = []
            for categoria in categorias:
                candidato = principales.get((lista.codigo, categoria.codigo))
                if candidato is not None:
                    candidato_dict = candidato.to_dict()
                    candidato_dict['votos'] = \
                        self.sesion.recuento.obtener_resultado(categoria.codigo,
                                                               candidato.codigo)
                else:
                    candidato_dict = None
                lista_dict['candidatos'].append(candidato_dict)
            listas.append(lista_dict)

        cat_list = []
        for categoria in categorias:
            cat_dict = categoria.to_dict()
            cat_dict['nombre'] = _(cat_dict['nombre'])
            cat_list.append(cat_dict)

        return cat_list, listas
Esempio n. 22
0
 def _get_categorias(self, consulta_popular=False, todas=False):
     """Devuelve las categorias para esta mesa y para esta partido en caso
     de que sea una interna no PASO."""
     if not get_tipo_elec("interna"):
         filter = {"sorted": "posicion", "consulta_popular": consulta_popular}
         if not todas:
             filter["adhiere"] = None
         categorias = Categoria.many(**filter)
     else:
         candidatos = Candidato.many(cod_partido=self.agrupacion.codigo)
         cod_cats = set([candidato.categoria.codigo for candidato in candidatos])
         filter = {"sorted": "posicion", "consulta_popular": consulta_popular, "codigo__in": cod_cats}
         if not todas:
             filter["adhiere"] = None
         categorias = Categoria.all(**filter)
     return categorias
Esempio n. 23
0
    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
Esempio n. 24
0
    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
Esempio n. 25
0
    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")
Esempio n. 26
0
File: voto.py Progetto: sunzu/vot.ar
 def _get_categorias(self, consulta_popular=False, todas=False):
     """Devuelve las categorias para esta mesa y para esta partido en caso
     de que sea una interna no PASO."""
     if not get_tipo_elec("interna"):
         filter = {
             'sorted': "posicion",
             'consulta_popular': consulta_popular
         }
         if not todas:
             filter['adhiere'] = None
         categorias = Categoria.many(**filter)
     else:
         candidatos = Candidato.many(cod_partido=self.agrupacion.codigo)
         cod_cats = set(
             [candidato.categoria.codigo for candidato in candidatos])
         filter = {
             'sorted': "posicion",
             'consulta_popular': consulta_popular,
             'codigo__in': cod_cats
         }
         if not todas:
             filter['adhiere'] = None
         categorias = Categoria.all(**filter)
     return categorias
Esempio n. 27
0
    def _get_tabla(self, width):
        ret = {}
        empujar_firmas = 0
        lineas = []
        # muestro la tabla solo si tiene recuento
        mostrar_partidos = False  #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
        Y_INICIAL = 420 if not self.de_muestra else 180
        y2 = Y_INICIAL
        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

            es_cand_consulta = lista.candidatos[0].cod_categoria == "CPO"
            numero = lista.numero if lista.numero != "BLC" and \
                not es_cand_consulta else ""
            nombre_lista = lista.nombre if not lista_partido \
                else partido.nombre
            if es_cand_consulta:
                nombre_lista = "Consulta Popular - " + nombre_lista
            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 = (400 if not self.de_muestra else 160) * 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 = 435 if not self.de_muestra else 193
        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
Esempio n. 28
0
    def _get_tabla(self, width):
        ret = {}
        empujar_firmas = 0
        lineas = []
        # muestro la tabla solo si tiene recuento
        mostrar_partidos = False  #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
        Y_INICIAL = 420 if not self.de_muestra else 180
        y2 = Y_INICIAL
        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

            es_cand_consulta = lista.candidatos[0].cod_categoria == "CPO"
            numero = lista.numero if lista.numero != "BLC" and \
                not es_cand_consulta else ""
            nombre_lista = lista.nombre if not lista_partido \
                else partido.nombre
            if es_cand_consulta:
                nombre_lista = "Consulta Popular - " + nombre_lista
            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 = (400 if not self.de_muestra else 160) * 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 = 435 if not self.de_muestra else 193
        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
Esempio n. 29
0
    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])
Esempio n. 30
0
File: voto.py Progetto: sunzu/vot.ar
    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])
Esempio n. 31
0
 def numero_colapsado(self):
     return 15 if hasattr(self, "agrupacion_partidos") and \
         self.agrupacion_partidos else get_tipo_elec("colapsar_partidos")
Esempio n. 32
0
 def numero_colapsado(self):
     return 15 if hasattr(self, "agrupacion_partidos") and \
         self.agrupacion_partidos else get_tipo_elec("colapsar_partidos")