this works for me in trunk, sqlite database: 

requires = IS_IN_SET([2,3,5,7]) for a field of type integer so the book 
text about "must be strings" doesn't seem to be always true. 

and you're correct, if you use a list of validators and if you want the 
form to show a dropdown OPTION element, the IS_IN_SET needs to be first.
The book is flat out wrong in the example so I'll send the PR to fix it and 
come back to when integer IS_IN_SET lists are acceptable.





On Saturday, 15 February 2014 08:18:39 UTC+11, Horst Horst wrote:
>
> Meta-question: Should I rather post things like this to the issue tracker?
>
> 1. In 
> http://web2py.com/books/default/chapter/32/07/forms-and-validators#Validators,
>  
> the paragraph "IS_IN_SET" says:
>
> The elements of the set must always be strings unless this validator is 
> preceded by IS_INT_IN_RANGE (which converts the value to int) or
> IS_FLOAT_IN_RANGE (which converts the value to float). For example:
>
>
> requires = [IS_INT_IN_RANGE(0, 8), IS_IN_SET([2, 3, 5, 7],
>           error_message='must be prime and less than 10')]
>
> This doesn't work for me in this case:
>
>         requires = [
>             IS_INT_IN_RANGE(0, 4),
>             IS_IN_SET([
>                 (0, T("<Option 1>")),
>                 (1, T("<Option 2>")),
>                 (2, T("<Option 3>")),
>                 (3, T("<Option 4>")),
>                 ]
>             ),
>         ],
>
> I get a ticket: 
>
> <type 'exceptions.SyntaxError'> widget cannot determine options of 
> piece.piece_type
>
> and it seems web2py tries to derive the options from the first validator:
>
>   if hasattr(requires[0], 'options')
>
> Changing the order in my code indeed works:
>
>         requires = [
>             IS_IN_SET([
>                 (0, T("<Option 1>")),
>                 (1, T("<Option 2>")),
>                 (2, T("<Option 3>")),
>                 (3, T("<Option 4>")),
>                 ]
>             ),
>             IS_INT_IN_RANGE(0, 4),
>         ],
>
> So should the book perhaps say:
>
> The elements of the set must always be strings unless this validator is 
> *followed* by IS_INT_IN_RANGE (which converts the value to int) or
> IS_FLOAT_IN_RANGE (which converts the value to float).
>
>
> ?
>
> 2. In http://www.web2py.com/book/default/chapter/10#JSONRPC-and-Pyjamasthis 
> part of the code example
>
>     <script language="javascript"
>      src="{{=URL('static','output/pygwt.js')}}">
>     </script>
>
> for more recent versions of pyjs should be changed to
>
>     <script language="javascript"
>      src="{{=URL('static','output/bootstrap.js')}}">
>     </script>
>
> However, JSONRPC in pyjamas 0.8.x is broken (due to this problem: 
> http://osdir.com/ml/python-pyjamas-devel/2012-04/msg00246.html), and it 
> doesn't look like it'd be fixed any time soon (or ever).
>
> I'd suggest to put a note on top of this chapter, to discourage people 
> from trying it until pyjs development is continued, and there's a newer 
> version than 0.8.1a.
>
>

-- 
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/groups/opt_out.

Reply via email to