please open a ticket about this. I will take care of it asap.

On Thursday, 1 November 2012 15:54:53 UTC-5, Joe Barnhart wrote:
>
> This proposal solves a problem I have when formatting Field values.  I 
> created a custom Validator class which maps the value None into a string 
> (such as "N/A" or "NT"), but the mapping was ignored because the current 
> Field processing provides an early exit if the value of the Field is None, 
> i.e. it never reaches the Validator object for formatting.
>
> Proposal:
>
> I propose creating a new keyword variable for Field objects, called 
> "map_none" which is initialized to None for backwards compatibility:
>
>  
>        map_none = None,
>
>         . . .
>
>        self.map_none = map_none
>
>
>
> Next, we use the value of map_none as the return value for None from the 
> formatter function:
>
>
>     def formatter(self, value):
>         requires = self.requires
>         if value is None or not self.requires:
>             return value or self.map_none
>
>
> Last, for symmetry, we alter the validator to replace any occurrence of 
> map_none with None when processing items to go back into the database.  In 
> my case it will accept any entered value of "NT" and map it back into None 
> when storing row data in the database.  I would also use it to replace 
> empty strings with None (which I prefer over empty strings in the database 
> when values are not entered).
>
>     
> def validate(self, value):
>         if not self.requires:
>             return ((value if value!=self.map_none else None), None)
>         requires = self.requires
>         if not isinstance(requires, (list, tuple)):
>             requires = [requires]
>         for validator in requires:
>             (value, error) = validator(value)
>             if error:
>                 return (value, error)
>         return ((value if value!=self.map_none else None), None)
>
> This approach allows any mapping of None into an object of the user's 
> choosing, and provides the mapping in a consistent and bi-directional 
> manner.  It preserves all existing behavior of Validators.  The only cost 
> is an additional variable carried in Field objects and the time expended on 
> the trivial "if" tests to map the value.
>
> Any thoughts?
>
> -- Joe B.

-- 



Reply via email to