Ejemplo n.º 1
0
    def encodear_string(self, string):
        string = unicode(string.upper())
        datos = []
        letra = None
        for char in string:
            codigo_letra = ord(char)
            if 65 <= codigo_letra <= 90:
                letra = codigo_letra - 64
            elif char == "'":
                letra = 28
            elif char == u"Ñ":
                letra = 29
            elif char == " ":
                letra = 30
            elif char == u"Á":
                letra = 1
            elif char == u"É":
                letra = 5
            elif char == u"Í":
                letra = 9
            elif char == u"Ó":
                letra = 15
            elif char == u"Ú":
                letra = 21
            elif char == u";":
                letra = 31

            if letra is not None:
                datos.append(letra)

        ret = pack_slow(datos, 5)
        return ret
Ejemplo n.º 2
0
    def encodear_string(self, string):
        string = unicode(string.upper())
        datos = []
        letra = None
        for char in string:
            codigo_letra = ord(char)
            if 65 <= codigo_letra <= 90:
                letra = codigo_letra - 64
            elif char == "'":
                letra = 28
            elif char == u"Ñ":
                letra = 29
            elif char == " ":
                letra = 30
            elif char == u"Á":
                letra = 1
            elif char == u"É":
                letra = 5
            elif char == u"Í":
                letra = 9
            elif char == u"Ó":
                letra = 15
            elif char == u"Ú":
                letra = 21
            elif char == u";":
                letra = 31

            if letra is not None:
                datos.append(letra)

        ret = pack_slow(datos, 5)
        return ret
Ejemplo n.º 3
0
    def encodear_autoridades(self):
        nombres = []
        dnis = []
        tipos = []
        for autoridad in self.autoridades:
            nombres.append(autoridad.apellido)
            nombres.append(autoridad.nombre)
            tipo = "%s" % TIPO_DOC.index(autoridad.tipo_documento)
            tipos.append(tipo)
            campo = pack_slow([int(autoridad.nro_documento)], 27)
            dnis.append(campo)

        nombres = self.encodear_string(";".join(nombres))
        return nombres, dnis, tipos
Ejemplo n.º 4
0
    def encodear_autoridades(self):
        nombres = []
        dnis = []
        tipos = []
        for autoridad in self.autoridades:
            nombres.append(autoridad.apellido)
            nombres.append(autoridad.nombre)
            tipo = "%s" % TIPO_DOC.index(autoridad.tipo_documento)
            tipos.append(tipo)
            campo = pack_slow([int(autoridad.nro_documento)], 27)
            dnis.append(campo)

        nombres = self.encodear_string(";".join(nombres))
        return nombres, dnis, tipos
Ejemplo n.º 5
0
    def a_tag(self, cod_categoria=None, con_dnis=True):
        """Devuelve la informacion del recuento para almacenar en tag rfid."""
        # valores ordenados por cod_lista,cod_categoria
        valores = []
        if cod_categoria is not None:
            por_categoria = 1
            categorias = Categoria.many(codigo=cod_categoria)
        else:
            por_categoria = 0
            categorias = Categoria.many(sorted='codigo')

        principales = self._get_dict_candidatos()
        for lista in Lista.many(sorted='codigo'):
            for categoria in categorias:
                try:
                    candidato = principales.get((lista.codigo,
                                                 categoria.codigo))
                    if candidato is not None:
                        cod_candidato = candidato.codigo
                        valores.append(self._resultados[categoria.codigo,
                                                        cod_candidato])
                except AttributeError:
                    #si no hay candidato lo ignoramos
                    pass

        ordered_keys = sorted(self.campos_extra.keys())
        for key in ordered_keys:
            valores.append(self.campos_extra[key])

        ordered_keys = sorted(self.listas_especiales.keys())
        for key in ordered_keys:
            valores.append(self.listas_especiales[key])

        container = Container(por_categoria=str(por_categoria))
        if por_categoria:
            container.cod_categoria = cod_categoria.encode('ascii')
        else:
            container.cod_categoria = ""

        # cod_mesa
        if SMART_PACKING:
            num_mesa = self.mesa.numero.encode('ascii')
            try:
                datos = pack(int(num_mesa), valores)
            except NameError:
                datos = pack(int(num_mesa), valores, max_bits=MAXBITS*2)
        else:
            cod_mesa = self.mesa.codigo.encode('ascii')
            datos = str(len(cod_mesa)) + cod_mesa + pack(valores)

        container.datos = datos
        documentos = []
        for autoridad in self.autoridades:
            documentos.append(int(autoridad.nro_documento))

        if con_dnis:
            documentos = []
            for autoridad in self.autoridades:
                documentos.append(int(autoridad.nro_documento))
            len_documentos = len(documentos)
            if len_documentos == 1:
                documentos.append(0)
            elif len_documentos == 0:
                documentos = [0, 0]

            documentos = pack_slow(documentos, 27)
            container.documentos = documentos

            struct = struct_recuento_dni
        else:
            struct = struct_recuento

        return struct.build(container)
Ejemplo n.º 6
0
    def a_tag(self, cod_categoria=None, con_dnis=True):
        """Devuelve la informacion del recuento para almacenar en tag rfid."""
        # valores ordenados por cod_lista,cod_categoria
        valores = []
        if cod_categoria is not None:
            por_categoria = 1
            categorias = Categoria.many(codigo=cod_categoria)
        else:
            por_categoria = 0
            categorias = Categoria.many(sorted='codigo')

        principales = self._get_dict_candidatos()
        for lista in Lista.many(sorted='codigo'):
            for categoria in categorias:
                try:
                    candidato = principales.get((lista.codigo,
                                                 categoria.codigo))
                    if candidato is not None:
                        cod_candidato = candidato.codigo
                        valores.append(self._resultados[categoria.codigo,
                                                        cod_candidato])
                except AttributeError:
                    #si no hay candidato lo ignoramos
                    pass

        ordered_keys = sorted(self.campos_extra.keys())
        for key in ordered_keys:
            valores.append(self.campos_extra[key])

        ordered_keys = sorted(self.listas_especiales.keys())
        for key in ordered_keys:
            valores.append(self.listas_especiales[key])

        container = Container(por_categoria=str(por_categoria))
        if por_categoria:
            container.cod_categoria = cod_categoria.encode('ascii')
        else:
            container.cod_categoria = ""

        # cod_mesa
        if SMART_PACKING:
            num_mesa = self.mesa.numero.encode('ascii')
            try:
                datos = pack(int(num_mesa), valores)
            except NameError:
                datos = pack(int(num_mesa), valores, max_bits=MAXBITS*2)
        else:
            cod_mesa = self.mesa.codigo.encode('ascii')
            datos = str(len(cod_mesa)) + cod_mesa + pack(valores)

        container.datos = datos
        documentos = []
        for autoridad in self.autoridades:
            documentos.append(int(autoridad.nro_documento))

        if con_dnis:
            documentos = []
            for autoridad in self.autoridades:
                documentos.append(int(autoridad.nro_documento))
            len_documentos = len(documentos)
            if len_documentos == 1:
                documentos += [0, 0]
            elif len_documentos == 2:
                documentos.append(0)
            elif len_documentos == 0:
                documentos = [0, 0, 0]

            documentos = pack_slow(documentos, 27)
            container.documentos = documentos

            struct = struct_recuento_dni
        else:
            struct = struct_recuento

        return struct.build(container)