Thanks, I added a comment to https://github.com/web2py/web2py/issues/902
which looks to be the same issue and is open.

On Fri, Apr 22, 2016 at 2:27 PM, Niphlod <[email protected]> wrote:

> If I were you I'd log an issue over at pydal's repo.
> https://github.com/web2py/pydal/issues
>
> On Friday, April 22, 2016 at 7:11:36 PM UTC+2, David Manns wrote:
>>
>> I'm resubmitting as this has not been fixed. I understand the problem
>> better and have a workaround.
>>
>> My application runs on GAE and has been stuck on 2.9.12.
>>
>> Runs fine in web2py test environment and with 2.9.12 (pre pyDAL)
>>
>> In both production and SDK GAE various pages fail.
>>
>> This failure relates to using a set in a validator:
>>
>> ...
>> banks = db(db.CoA.Type == 'Bank')
>>
>> form=SQLFORM.factory(
>> Field('bank', 'reference CoA', requires=IS_EMPTY_OR(IS_IN_DB(banks,
>> 'CoA.id','%(Name)s'))),
>> ...
>>
>> In the model:
>>
>>
>> db.define_table('CoA',
>> Field('Type', 'string', default='Expense', requires = IS_IN_SET(['Bank',
>> 'Asset/Liability', 'Revenue/Expense'])),
>> Field('Name', 'string', unique = True),
>> Field('Balance', 'decimal(9,2)'), #used to maintain PayPal and Bank
>> balances
>> Field('Notes', 'text'),
>> format='%(Name)s')
>> db.CoA.Name.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, 'CoA.Name')]
>>
>> GAE SDK log error attached.
>>
>> Note IS_IN_DB works fine with IS_IN_SET(db, ...) - I use it all over the
>> place.
>>
>> In validators.py line 584 is in an if...else construct that tries to
>> check for 'gae'. This test is wrong, the adapter name would be
>> 'google:datastore' which would run the else clause. I tried this and
>> established that the else clause also fails. It looks to me as if this
>> historical work around in validators.py is broken, quite apart from how to
>> fix the test. Perhaps the implementation of 'set' can be changed to be
>> agnostic?
>>
>> The workaround for me was to use IS_IN_SET instead:
>>
>> ...
>>     banks = []
>>     coa = db(db.CoA.id > 0).select(orderby=db.CoA.Name)
>>     for c in coa:
>>         if c.Type == 'Bank':
>>             banks.append((c.id, c.Name))
>> ...
>>     form=SQLFORM.factory(
>>         Field('bank', 'reference CoA',
>> requires=IS_EMPTY_OR(IS_IN_SET(banks))),
>> ...
>>
> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/FoE02rb8LWU/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to