Hola Karla, gracias otra vez por tomarte el tiempo para investigar. También probé el search sin condición "docums = Docum.search([])" y ocurre el error igualmente. Es un caso para analizar mas en profundidad, seguiré buscando la solución. Si alguien tiene algo mas que agregar estaré agradecido.
Saludos Fernando El martes, 5 de diciembre de 2017, 12:53:25 (UTC-5), Karla Stenger escribió: > > > > El 4 de diciembre de 2017, 13:28, Fernando Sánchez <[email protected] > <javascript:>> 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] >> <javascript:>> 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] <javascript:> >> >> >> > > > -- > ------------------------- > Karla Mª Stenger Sábat > [email protected] <javascript:> >
