There are two issues here. One is that validators were originally intended 
for form input and form input never submit None. They submit '' or missing 
value but never None. I agree with you that you may want to call validators 
and pass a None. In that case there is no need to ignore it. One problem 
remains, will this break backward compatibility. Perhaps no. Not sure.

Can you show your modifications to dal.py?

On Saturday, 27 October 2012 17:48:54 UTC-5, Joe Barnhart wrote:
>
> But Massimo -- why do an early exit from "Field.formatter" if the value is 
> None?  Why not give the formatter object a chance to format None values?  I 
> just don't understand this decision.  It is expedient for a small number of 
> programs where the user doesn't want to format None, but at the expense of 
> preventing anyone from ever formatting None.
>
> Your fix only papers over the problem by storing "NT" in the table instead 
> of None.  What if I want to show it as "N/T" later, or "no time"?  I have 
> to do a bulk change on the database just to accomplish a formatting task.  
> There could be many reasons for wanting to format None into some other 
> value -- all ignored because you chose to do an early exit in the formatter 
> routine instead of passing the real value along.  
>
> It is also not explained anywhere in the documentation that None will 
> never be passed into the formatter, so it can't be a 
> backwards-compatibility issue.
>
> -- Joe B.
>
> P.S.  I'm perfectly happy to modify my version of dal.py forever, but I'm 
> really interested in your reasoning for the early exit on None and if this 
> pattern is carried out in other parts of web2py.
>
> On Saturday, October 27, 2012 12:44:21 PM UTC-7, Massimo Di Pierro wrote:
>>
>> You can do
>>
>> db.table.filter_in = lambda value: 'NT' is value is None else value
>>
>>
>> On Saturday, 27 October 2012 02:54:53 UTC-5, Joe Barnhart wrote:
>>>
>>> But Paolo -- you forgot the third option...  
>>>
>>> FIX the problem in dal.py so that Validator classes work properly.  It 
>>> has no deleterious effects on other validators (at least so far in my 
>>> testing) and it permits validators to format None values.
>>>
>>> -- Joe B.
>>>
>>>
>>>>>>>>>

-- 



Reply via email to