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]

Responder a