def a_tag(self, grupo_cat=None, con_dnis=True): """Devuelve la informacion del recuento para almacenar en tag rfid.""" valores = [] candidatos = Candidatura.para_recuento(grupo_cat) for candidato in candidatos: resultado = self.get_resultados(candidato.id_umv) valores.append(resultado) 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() # cod_mesa if SMART_PACKING: num_mesa = self.mesa.numero.encode('ascii') try: datos = pack(int(num_mesa), valores) except NameError: # hacemos "upgrade" a chip de 2k datos = pack(int(num_mesa), valores, max_bits=MAXBITS*2) container.datos = datos else: cod_mesa = self.mesa.codigo.encode('ascii') packed = pack(valores) datos = str(len(cod_mesa)).zfill(2).encode() + cod_mesa + packed 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, BITS_DNI) container.len_docs = len(documentos) container.documentos = documentos struct = struct_recuento_dni else: struct = struct_recuento container.grupo = int(grupo_cat) if grupo_cat is not None else 0 return struct.build(container)
def a_tag(self, grupo_cat=None, con_dnis=True): """Devuelve la informacion del recuento para almacenar en tag rfid.""" valores = [] candidatos = Candidatura.para_recuento(grupo_cat) for candidato in candidatos: resultado = self.get_resultados(candidato.id_umv) valores.append(resultado) 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() # cod_mesa if SMART_PACKING: num_mesa = self.mesa.numero.encode('ascii') try: datos = pack(int(num_mesa), valores) except NameError: # hacemos "upgrade" a chip de 2k datos = pack(int(num_mesa), valores, max_bits=MAXBITS * 2) container.datos = datos else: cod_mesa = self.mesa.codigo.encode('ascii') packed = pack(valores) datos = str(len(cod_mesa)).zfill(2).encode() + cod_mesa + packed 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, BITS_DNI) container.len_docs = len(documentos) container.documentos = documentos struct = struct_recuento_dni else: struct = struct_recuento container.grupo = int(grupo_cat) if grupo_cat is not None else 0 return struct.build(container)
def encodear_string_apertura(string): string = six.text_type(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.encode()) dnis.append(int(autoridad.nro_documento)) nombres = encodear_string_apertura(";".join(nombres)) dnis = pack_slow(dnis, BITS_DNI) return nombres, dnis, tipos