Hi,

from validators.py:

 342 class IS_IN_DB(Validator):
 343     """
 344     example::
 345
 346         INPUT(_type='text', _name='name',
 347               requires=IS_IN_DB(db, db.table, zero=''))
 348
 349     used for reference fields, rendered as a dropbox
 350     """


But I can't use the documented syntax: IS_IN_DB(db, db.table). I had
to use explicit db.table.id as argument.

It looks like the current code (1.91.6) does not accept a table as
argument. Apparently, it cannot figure out that when you specify a
table instead of a field it should use the table's id field. It relies
on the field representation as string to extract the field name,
splitting it by dots, as shows line 371 from the class' constructor:

 370         self.field = field
 371         (ktable, kfield) = str(self.field).split('.')


Wouldn't be better to test the argument with something like isinstance() first?

Sorry if I misunderstood something, but I think that if this is not a
bug, then the documentation should be updated.

I also didn't check the code for IS_NOT_IN_DB(), but I guess this
class may have the same issue.


Regards,

Fabiano.

Reply via email to