El 4 de diciembre de 2017, 13:28, Fernando Sánchez <[email protected]> escribió:
> Hola Karla > > Gracias por tu respuesta, > > Probé haciendo lo que indicas, pero sigue igual. > > Por alguna razón no se esta remplazando _fields con la lista de campos de > la tabla sunat_tipodocid al llamar al método search. > Investigué un poco más, y encontré que el campo _fields se agrega al modelo en la funcion __post_setup__ [1] por lo que si la llamas desde __setup__ es de esperar que no exista. Entiendo que esto es, o bien una limitación para la funcion __setup__ que no te permite filtrar por el campo 'active' o bien un bug. Podrías por ejemplo eliminar el filtro para ver si así te funciona, quizás considerar si es realmente necesario en este caso. O quizás alguien que lo entienda mejor te pueda dar otro consejo de como manejarlo. Por ejemplo, me pregunto si usar __post_setup__ en tu caso ayudaría. Saludos, Karla. [1] - http://hg.tryton.org/trytond/file/4.6/trytond/model/model.py#l56 Aquí la definición de tipodocid: > > class TipoDocId(ModelSQL, ModelView): > 'Tipo de documento de identidad sunat' > __name__ = 'sunat.tipodocid' > > code = fields.Char(u'Código Tipo Documento Identidad', size=1, > help=u'Tipo Documento Identidad - SUNAT: Tabla 02') > name = fields.Char(u'Documento de Identidad', size=50, help=u'Nombre > del Documento') > active = fields.Boolean(u'Activo',help=u'Estado del registro') > Aquí el __init__.py > > def register(): > Pool.register( > Party, > Address, > Template, > Product, > TipoCdp, > TipoMdp, > TipoExisteSUNAT, > Bank, > *TipoDocId,* > AduanaId, > OperaStock, > CatalogoExiste, > Company, > ExportPLEStart, > ExportPLEResult, > PaymentType, > Currency, > Rate, > TraerTCStart, > TraerTCResult, > FiscalYear, > Sale, > Purchase, > *PartyIdentifier, * > module='liberorbis_peru_loc', type_='model') > Pool.register( > ExportPLE, > TraerTC, > module='liberorbis_peru_loc', type_='wizard') > > Seguiré dándole vueltas al asunto, si se te ocurre algo mas bienvenidos > los aportes. > > Gracias otra vez. > > Fernando > > El 04/12/17 a las 10:10, Karla Stenger escribió: > > > > El 1 de diciembre de 2017, 10:32, Fernando Sánchez <[email protected]> > escribió: > >> Gracias Sergi y Raimon por su pronta y clara respuesta. >> Ya logre personalizar la selection, pero solo de forma estatica. >> Al poblarla dinamicamente con registros de una tabla que contiene los >> valores me lanza un error. >> Aqui el codigo: >> >> class >> >> PartyIdentifier(ModelSQL, ModelView): >> 'Party Identifier' >> __metaclass__ = PoolMeta >> __name__ = >> >> 'party.identifier' >> >> @classmethod >> def __setup__(cls): >> super(PartyIdentifier, cls).__setup__() >> tiposdocid = cls.get_types() >> for tipos in tiposdocid: >> if tipos not in cls.type.selection: >> cls.type.selection.append(tipos) >> >> @classmethod >> def get_types(cls): >> #return [('0', 'Otros tipos de documentos'),('6', 'RUC'),('1', >> 'DNI'),('4', 'C. EXT.'),('7', 'Pasaporte'),('A',u'Cédula Diplomática de >> Identidad'),] >> pool = Pool() >> Type = pool.get('sunat.tipodocid') >> types = Type.search([('active','=','True')]) >> return [(x.code, x.name) for x in types] >> >> El trace del error: >> Traceback (most recent call last): >> File "/home/nando/.virtualenvs/liberorbis46/bin/trytond-admin", line >> 21, in <module> >> admin.run(options) >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/admin.py", line 54, in run >> installdeps=options.installdeps) >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/pool.py", line 155, in init >> lang=lang, installdeps=installdeps) >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/modules/__init__.py", line 462, in load_modules >> _load_modules(update) >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/modules/__init__.py", line 432, in _load_modules >> load_module_graph(graph, pool, update, lang) >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/modules/__init__.py", line 229, in >> load_module_graph >> pool.setup(classes) >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/pool.py", line 227, in setup >> cls.__setup__() >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/modules/liberorbis_peru_loc/party.py", line 66, in >> __setup__ >> tiposdocid = cls.get_types() >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/modules/liberorbis_peru_loc/party.py", line 76, in >> get_types >> types = Type.search([('active','=','True')]) >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/model/modelsql.py", line 1128, in search >> tables, expression = cls.search_domain(domain) >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/model/modelsql.py", line 1286, in search_domain >> domain = cls._search_domain_active(domain, active_test=active_test) >> File "/home/nando/.virtualenvs/liberorbis46/local/lib/python2.7/ >> site-packages/trytond/model/modelstorage.py", line 407, in >> _search_domain_active >> if not ('active' in cls._fields >> AttributeError: type object >> >> 'sunat.tipodocid' has no attribute '_fields' >> > > Hola Fernando, > no sé, pero si fuera tú, revisaría el orden en el cual se registran las > clases en el Pool en __init__.py y me aseguraría que la clase > 'sunat.tipodocid' se registre antes que PartyIdentifier. > > Saludos, > Karla. > > -- > ------------------------- > Karla Mª Stenger Sábat > [email protected] > > > -- ------------------------- Karla Mª Stenger Sábat [email protected]
