Hola Marco,
sin querer abundar en el offtopic, creo que tu problema es que cuando
defines el diccionario los numeros no son strings, por lo que al ejecutar
el get intenta buscar por string. ¿Has probado a quitar la funcion de
trasnformacion?.
Igual ya lo has probado y yo estoy metiendo la gamba.
Salud.
2016-12-13 15:43 GMT+01:00 marco garcia baturan <marcogb81@xxxxxxxxxxx>:
Gracias Ramón por la sugerencia.
Y reitero; disculpad las molestias.
------------------------------
*De:* bofhers-bounce@xxxxxxxxxxxxx <bofhers-bounce@xxxxxxxxxxxxx> en
nombre de Ramon Kamibayashi <ramonkawa@xxxxxxxxx>
*Enviado:* martes, 13 de diciembre de 2016 14:47:36
*Para:* bofhers@xxxxxxxxxxxxx
*Asunto:* Re: [bofhers] Sobre Odoo, DNI, Codigos postales
Los problemas de encoding siempre dan muchos dolores de cabeza.
Me tiene pasado que aunque tenga todos los elementos en el mismo formato,
algo casca. En general la solución es convertir los strings de nuevo a
UTF-8 aunque en teoría ya estén en ese formato. Al final, pegarse con
prueba y error. Acabarán apareciendo las Ñ.
El 13 de diciembre de 2016, 14:10, marco garcia baturan <
marcogb81@xxxxxxxxxxx> escribió:
BUenas tardes Bofherianos y Bofherianas de Bofheria:
Como ya algunos sabies ( por lo pesado que soy) que estoy programando en
python un módulo en Odoo (OpenERP 8). Hasta ahí todo normal. Total, que
estoy creando un módulo de admisión de pacientes en Odoo 8 bajo Ubuntu
14.04 que en este caso tiene un subconjunto de campos que se divide en dos
partes:
DNI
y
Provincia y CP
He creado una función que lee la parte numerica del DNI para devolver la
letra e introducirla al final para hacer un mecanismo de autocompletado.
Pero falla por error de tipo:
File "/opt/odoo/odoo-server/addons/admision/models.py", line 62, in
letraDNI
11: "B", 12: "N", 13: "J", 14: "Z", 15: "S", 16: "Q", 17: "V", 18: "H",
19: "L",
TypeError: unsupported operand type(s) for +: 'bool' and 'str'
El codigo es:
# función que opera con el ingreso de dni y le agrega la letra
automaticamente
@api.onchange("Nif")
def letraDNI(self):
numero = self.Nif
if len(numero) == 10 and [0-9/-a-z]:
pass
else:
if len(numero) == 8 and [0-9/-' ']:
intnumero = int(numero[0:7])
diccionario = {0: "T", 1: "R", 2: "W", 3: "A", 4: "G", 5: "M", 6:
"Y", 7: "F", 8: "P", 9: "D", 10: "X",
11: "B", 12: "N", 13: "J", 14: "Z", 15: "S", 16: "Q",
17: "V", 18: "H", 19: "L",
20: "C", 21: "K", 22: "E"}
resto = intnumero % 23
self.Nif = diccionario.get(str(resto))
Y la parte XML es:
<field name="Nif" data-inputmask="'mask': '99999999-a'" />
Y el caso del codigo postal es peculiar por que en si funciona y muy bien
pero al introducir porvincias con tildes o ñ esta me devuelve vacio. El
esscript esta en UTF-8 y el XML en UTF-8, incluso prove con las
iso-809-...etc y nada.
Aqui el script:
# busca código postal.
@api.onchange("Provincia_Paciente","CP_Paciente")
def buscaCP(self):
provincia = self.Provincia_Paciente
# buscar = provincia
# declaro un diccionario con provincias
Diccionario = {"Alava": '01', "Albacete": '02', "Alicante": '03',
"Almería": '04', "Ávila": '05', "Badajoz": '06',
"Islas Baleares": '07', "Barcelona": '08', "Burgos":
'09', "Cáceres": 10, "Cádiz": 11,
"Castellón": 12, "Ciudad Real": 13, "Córdoba": 14, "La
Coruña": 15, "Cuenca": 16,
"Gerona": 17, "Granada": 18, "Guadalajara": 19,
"Guipúzcoa": 20, "Huelva": 21, "Huesca": 21,
"Jaén": 23, "León": 24, "Lérida": 25, "La Rioja": 26,
"Lugo": 27, "Madrid": 28, "Malaga": 29,
"Murcia": 30, "Navarra": 31, "Orense": 32, "Asturias":
33, "Palencia": 34, "Las Palmas": 35,
"Pontevedra": 36, "Salamanca": 37, "Santa Cruz de
Tenerife": 38, "Cantabria": 39,
"Segovia": 40, "Sevilla": 41, "Soria": 42, "Tarragona":
43, "Teruel": 44, "Toledo": 45, "Valencia": 46,
"Valladolid": 47, "Vizcaya": 48, "Zamora": 49, "Zaragoza": 50, "Ceuta": 51,
"Melilla": 52, }
CodPos = Diccionario.get(provincia) # imprimo el codigo postal en base a
la provincia introducida
self.CP_Paciente = CodPos
aqui el XML:
<field name="Provincia_Paciente" placeholder = "Alicante" />
<field name="CP_Paciente" data-inputmask="'mask': '99999'" />
Un saludito campeones y gracias por vuestra atención.
MGB