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
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
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)
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)